Clickhouse之更新表(ReplacingMergeTree)

1、INSERT+Final方式

这种方法需要ReplacingMergeTree表引擎配置使用

CREATE TABLE tb_test_replacing(
ts DateTime,
uid String,
biz String
) ENGINE = ReplacingMergeTree(ts) ORDER BY (ts) SETTINGS index_granularity = 8192;

INSERT INTO tb_test_replacing VALUES ('2019-06-07 20:01:01', 'c', 'c1');

这种方式就不用执行alter了,而是以insert的形式来代替alter操作,即每次select时都是取最新的一条数据,sql语句如下

INSERT INTO tb_test_replacing VALUES ('2019-06-07 20:01:01', 'c', 'c2');

此时查询该表,发现还是两条数据,并没有实现更新

SELECT *
FROM tb_test_replacing

Query id: 02cfecf5-18f1-4f9f-ad55-e7b596935de8

┌──────────────────ts─┬─uid─┬─biz─┐
│ 2019-06-07 20:01:01 │ c │ c2 │
└─────────────────────┴─────┴─────┘
┌──────────────────ts─┬─uid─┬─biz─┐
│ 2019-06-07 20:01:01 │ c │ c1 │
└─────────────────────┴─────┴─────┘

2 rows in set. Elapsed: 0.004 sec.

在sql后面加上final,发现只返回了最新的一条,是符合预期的

SELECT *
FROM tb_test_replacing
FINAL

Query id: 614c7e93-48c2-4129-a734-c8a0dd722fcd

┌──────────────────ts─┬─uid─┬─biz─┐
│ 2019-06-07 20:01:01 │ c │ c2 │
└─────────────────────┴─────┴─────┘

1 rows in set. Elapsed: 0.007 sec.

注意:ReplacingMergeTree在建表时可以看到ENGINE = ReplacingMergeTree(ts),其中的ts就是版本信息,clickhouse会每次插入记录版本,就是依据这个字段,在查询时会返回最后最新的版本数据。所以第二个insert的ts和第一个insert的ts字段的值一样,所以会以第二条记录为准,即实现了更新。具体用法见:ReplacingMergeTree

### 回答1: ClickHouse中的ReplacingMergeTree是一种特殊的MergeTree引擎,它允许在插入数据时进行更新,而不是简单地插入新数据。它使用相同的分区键和排序键来查找要更新的行,并将新数据合并到现有数据中。这使得在ClickHouse中进行实时数据更新变得更加容易和高效。 ### 回答2: ClickHouse是俄罗斯的一种高性能分布式列式数据库管理系统,针对大规模数据量和复杂查询的场景进行了优化。而ReplacingMergeTreeClickHouse内置的一种数据引擎,用于处理时序数据的插入和查询。 ReplacingMergeTree引擎是基于MergeTree引擎(ClickHouse的默认存储引擎)进行了改进和扩展的。它具有以下特点和优势: 首先,ReplacingMergeTree引擎支持数据的高效插入。它通过将数据按照排序键的顺序进行分区,将新插入的数据写入合适的分区中。同时,对于旧数据的更新和删除,它采用了“标记删除”的方法,不会真实删除数据,而是将其标记为已删除状态,以保证数据的连续性和一致性。 其次,ReplacingMergeTree引擎支持快速的时序数据查询。它利用数据的分区和排序特性,对查询进行优化,能够高效地处理大规模时序数据集。同时,它还支持灵活的查询条件和聚合操作,可以满足各种复杂的查询需求。 除此之外,ReplacingMergeTree引擎还提供了数据的压缩和合并功能,可以有效地减小数据的存储空间占用,并提升查询性能。同时,它支持数据的备份和恢复,可以保证数据的可靠性和可恢复性。 总的来说,ReplacingMergeTree引擎是ClickHouse中用于处理时序数据的重要存储引擎,具有高效的数据插入和查询功能,能够满足大规模时序数据处理的需求。 ### 回答3: ClickHouse是一个用于大规模数据分析的列式数据库管理系统。而ReplacingMergeTreeClickHouse中的一种引擎,用于处理时间序列数据的合并和替换操作。 ReplacingMergeTree(以下简称RMT)是ClickHouse中最重要的一个引擎之一,用于处理时序数据。它基于MergeTree引擎,具有高效的写入和查询性能,并支持数据的合并和替换操作。 RMT的工作原理是将数据按照时间排序存储,同时根据主键进行分区和排序。每个分区的数据按照时间顺序组成一个有序链,这样查询时可以高效地按时间范围进行扫描。 RMT支持数据合并和替换操作,即将新的数据合并到已存在的数据中,或者用新数据替换已存在的数据。合并操作通常用于将新数据追加到现有数据上,而替换操作则用于修复或更新现有数据。这些操作可以确保数据的一致性和准确性。 与其他引擎相比,RMT具有较低的存储成本和高的查询性能。它适用于存储大量的时序数据,如日志、传感器数据、监控数据等。RMT可以处理高并发的写入请求,并且在查询时可以提供快速的响应。 总之,ClickHouseReplacingMergeTree引擎是一种专门用于处理时序数据的高性能引擎,它具有高效的写入和查询性能,支持合并和替换操作,适用于存储和分析大规模的时序数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值