ClickHouse(十七):Clickhouse MergeTree系列表引擎 -VersionedCollapsingMergeTree

ClickHouse(十七):Clickhouse MergeTree系列表引擎 -VersionedCollapsingMergeTree_第1张图片

 

 进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容!

个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客

订阅:拥抱独家专题,你的订阅将点燃我的创作热情!

点赞:赞同优秀创作,你的点赞是对我创作最大的认可!

⭐️ 收藏:收藏原创博文,让我们一起打造IT界的荣耀与辉煌!

✏️评论:留下心声墨迹,你的评论将是我努力改进的方向!


目录

1. VersionedCollapsingMergeTree建表语句

2. 示例


上面提到CollapsingMergeTree表引擎对于数据写入乱序的情况下,不能够实现数据折叠的效果。VersionedCollapsingMergeTree表引擎的作用与CollapsingMergeTree完全相同,它们的不同之处在于,VersionedCollapsingMergeTree对数据的写入顺序没有要求,在同一个分区内,任意顺序的数据都能够完成折叠操作。

VersionedCollapsingMergeTree使用version列来实现乱序情况下的数据折叠,该引擎除了需要指定一个sign标识之外,还需要指定一个UInt*类型的version版本号。

1. VersionedCollapsingMergeTree建表语句

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]

(

    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],

    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],

...

sign Int8,

version UInt8

) ENGINE = VersionedCollapsingMergeTree(sign, version)

[PARTITION BY expr]

[ORDER BY expr]

[SAMPLE BY expr]

[SETTINGS name=value, ...]

2. 示例

#创建表 t_version_collapsing_mt ,使用VersionedCollapsingMergeTree引擎

node1 :) create table t_version_collapsing_mt(

:-] id UInt8,

:-] name String,

:-] loc String,

:-] login_times UInt8,

:-] total_dur UInt8,

:-] sign Int8,

:-] version UInt8

:-] ) engine = VersionedCollapsingMergeTree(sign,version)

:-] order by (id,total_dur)

:-] primary key id

:-] partition by loc;



#向表 t_version_collapsing_mt 中插入以下数据

node1 :) insert into table t_version_collapsing_mt values(1,'张三','北京',1,30,-1,1),(2,'李四','上海',1,40,1,2);



#查询表 t_version_collapsing_mt 中的数据

node1 :) select * from t_version_collapsing_mt;

┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐

│  1  │ 张三  │ 北京  │           1   │        30   │    -1 │       1   │

└────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘

┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐

│  2  │ 李四  │ 上海  │           1   │        40    │    1 │       2  │

└────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘



#向表 t_version_collapsing_mt中插入以下数据,删除“张三”信息,更新“李四”信息

node1 :) insert into table t_version_collapsing_mt values(1,'张三','北京',1,30,1,1),(2,'李四','上海',1,40,-1,2),(2,'李四','上海',2,100,1,2);



#查询表 t_version_collapsing_mt中的数据

node1 :) select * from t_version_collapsing_mt ;

┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐

│  1  │ 张三  │ 北京  │           1   │        30    │   -1  │       1 │

└────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘

┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐

│  2  │ 李四  │ 上海  │           1   │        40   │    1  │       2   │

└────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘

┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐

│  1  │ 张三  │ 北京  │           1   │        30   │    1  │       1   │

└────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘

┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐

│  2  │ 李四  │ 上海  │           1   │        40   │   -1  │       2  │

│  2  │ 李四  │ 上海  │           2   │       100   │    1  │       2  │

└────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘



#手动执行 optimize 命令,合并相同分区的数据,这里有可能需要执行多次

node1 :) optimize table t_version_collapsing_mt;

注意:如果不想执行多次,也可以执行 optimize table t_version_collapsing_mt final语句



#查询表 t_version_collapsing_mt 中的数据如下:

node1 :) select * from t_version_collapsing_mt; 

┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐

│  2  │ 李四  │ 上海  │           2   │       100   │    1  │       2  │

└────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘

‍如需博文中的资料请私信博主。


你可能感兴趣的:(大数据OLAP体系技术栈,clickhouse,实时数仓,数据仓库,分布式数据库,大数据)