网站建设最低要求,上海制作网页哪家好,网站空间管理系统,云谷 网站建设引言
前文曾说过#xff0c;Clickhouse是一个强大的数据库Clickhouse-一个潜力无限的大数据分析数据库系统 其中一个强大的点就在于支持各类表引擎以用于不同的业务场景。
MergeTree MergeTree系列的引擎被设计用于插入极大量的数据到一张表当中。数据可以以数据片段的形式一…
引言
前文曾说过Clickhouse是一个强大的数据库Clickhouse-一个潜力无限的大数据分析数据库系统 其中一个强大的点就在于支持各类表引擎以用于不同的业务场景。
MergeTree MergeTree系列的引擎被设计用于插入极大量的数据到一张表当中。数据可以以数据片段的形式一个接着一个的快速写入数据片段在后台按照一定的规则进行合并。相比在插入时不断修改重写已存储的数据这种策略会高效很多。 其主要特点
存储的数据按主键排序。这使得您能够创建一个小型的稀疏索引来加快数据检索。如果指定了分区键的话可以使用分区。在相同数据集和相同结果集的情况下 ClickHouse 中某些带分区的操作会比普通操作更快。查询中指定了分区键时 ClickHouse 会自动截取分区数据。这也有效增加了查询性能。支持数据副本。支持数据采样。
MergeTree表引擎的基础建表语句如下
CREATE TABLE table_name
(column_1 String,column_2 Int32,column_3 String
)
ENGINE MergeTree
PARTITION BY column
ORDER BY column
ORDER BY排序键可以是单列或多列。通常没有显示指定主键的情况下我们会指定一个排序键Clickhouse也会自动使用排序键作为主键PARTITION BY分区键。通常使用Clickhouse都会存储“大数据”既然是大数据用分区来隔离数据会大大提升后续查询效率。多半用月分区的情况下 可使用表达式toYYYYMM(date_column)来实现。
还有更多参数可选配请参考 Clickhouse-MergeTree
ReplacingMergeTree
ReplacingMergeTree与MergeTree的不同在于它会删除排序键值相同的重复数据。 数据的去重只会在数据合并期间进行。但是合并会在后台一个不确定的时间进行所以数据并不是有规律的进行删除\合并。 当然Clickhouse支持使用OPTIMIZE进行手动合并数据不过会引起对数据的大量读写建议在业务低峰期执行。
ReplacingMergeTree的建表语句通常为
CREATE TABLE table_name
(column_time DateTime,column_order Int32,vd String
)
ENGINE ReplacingMergeTree(column_time)
PARTITION BY vd
ORDER BY column_order
数据合并去重策略为当order by 字段重复时保留ReplacingMergeTree字段最大的一条
测试看下效果
1、建表
CREATE TABLE t1
(column_time DateTime,column_order Int32,vd String
)
ENGINE ReplacingMergeTree(column_time)
PARTITION BY vd
ORDER BY column_order2、插入数据
INSERT INTO TABLE t1 VALUES (2024-03-28 10:00:01, 1,20240338) ;
INSERT INTO TABLE t1 VALUES (2024-03-28 10:00:02, 1,20240338) ;
INSERT INTO TABLE t1 VALUES (2024-03-28 10:00:03, 1,20240338) ;
INSERT INTO TABLE t1 VALUES (2024-03-28 10:00:04, 1,20240338) ;
INSERT INTO TABLE t1 VALUES (2024-03-28 10:00:05, 1,20240338) ;3、验证 可以看到表中最终只有(‘2024-03-28 10:00:05’, 1,‘20240338’)这条数据
彩蛋
在文章开头MergeTree之所谓被称为系列是因为在Clickhouse由MergeTree衍生出了很多相关类型的引擎
MergeTreeReplacingMergeTreeSummingMergeTreeAggregatingMergeTreeCollapsingMergeTreeVersionedCollapsingMergeTreeGraphiteMergeTree
其他引擎后续有机会在生产验证后再与大家分享。