|NO.Z.00018|——————————|BigDataEnd|——|Hadoop&OLAP_ClickHouse.V15|——|ClickHouse.v15|MergeTree家族表引擎|CollapsingMergeTree|
一、MergeTree家族表引擎:CollapsingMergeTree
### --- CollapsingMergeTree
~~~ # 以增代删:
~~~ 说明: yandex官方给出的介绍是CollapsingMergeTree 会异步的删除(折叠)
~~~ 这些除了特定列 Sign 有 1 和 -1 的值以外,其余所有字段的值都相等的成对的行。
~~~ 没有成对的行会被保留。该引擎可以显著的降低存储量并提高 SELECT查询效率。
~~~ CollapsingMergeTree引擎有个状态列sign,这个值1为”状态”行,-1为”取消”行,
~~~ 对于数据只关心状态列为状态的数据,不关心状态列为取消的数据
二、CollapsingMergeTree示例
### --- 创建CollapsingMergeTree表
~~~ # 创建表
hadoop01 :) CREATE TABLE cmt_tab ( `sign` Int8, `date` Date, `name` String, `point` String ) ENGINE = CollapsingMergeTree(sign) PARTITION BY date ORDER BY name SAMPLE BY name;
CREATE TABLE cmt_tab
(
`sign` Int8,
`date` Date,
`name` String,
`point` String
)
ENGINE = CollapsingMergeTree(sign)
PARTITION BY date
ORDER BY name
SAMPLE BY name
Ok.
### --- 插入数据:
hadoop01 :) insert into cmt_tab(sign,date,name,point) values (1,'2020-11-01','cctv','100000');
hadoop01 :) insert into cmt_tab(sign,date,name,point) values (-1,'2020-11-01','cctv','100000');
hadoop01 :) insert into cmt_tab(sign,date,name,point) values (1,'2020-11-01','hntv','10000');
hadoop01 :) insert into cmt_tab(sign,date,name,point) values (-1,'2020-11-01','hntv','10000');
hadoop01 :) insert into cmt_tab(sign,date,name,point) values (1,'2020-11-01','hbtv','11000');
hadoop01 :) insert into cmt_tab(sign,date,name,point) values (-1,'2020-11-01','hbtv','11000');
hadoop01 :) insert into cmt_tab(sign,date,name,point) values (1,'2020-11-02','cctv','200000');
hadoop01 :) insert into cmt_tab(sign,date,name,point) values (1,'2020-11-02','hntv','15000');
hadoop01 :) insert into cmt_tab(sign,date,name,point) values (1,'2020-11-02','hbtv','16000');
### --- 通过optimize table amt_tab_view命令手动Merge后查询
hadoop01 :) SELECT * FROM cmt_tab;
┌─sign─┬───────date─┬─name─┬─point──┐
│ 1 │ 2020-11-02 │ cctv │ 200000 │
└──────┴────────────┴──────┴────────┘
┌─sign─┬───────date─┬─name─┬─point─┐
│ 1 │ 2020-11-02 │ hntv │ 15000 │
└──────┴────────────┴──────┴───────┘
┌─sign─┬───────date─┬─name─┬─point─┐
│ 1 │ 2020-11-02 │ hbtv │ 16000 │
└──────┴────────────┴──────┴───────┘
### --- 使用场景
~~~ 大数据中对于数据更新很难做到,比如统计一个网站或TV的在用户数,
~~~ 更多场景都是选择用记录每个点的数据,再对数据进行一定聚合查询。
~~~ 而clickhouse通过CollapsingMergeTree就可以实现,
~~~ 所以使得CollapsingMergeTree大部分用于OLAP场景
三、VersionedCollapsingMergeTree
### --- VersionedCollapsingMergeTree
~~~ 这个引擎和CollapsingMergeTree差不多,只是对CollapsingMergeTree引擎加了一个版本,
~~~ 比如可以适用于非实时用户在线统计,统计每个节点用户在在线业务 a. 创表语法

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY