关于clickhouse:Clickhouse-MergeTree系列

59次阅读

共计 2083 个字符,预计需要花费 6 分钟才能阅读完成。

1、AggregatingMergeTree 继承自 MergeTree,存储上和根底的 MergeTree 其实没有任何差别,而是在数据 Merge 的过程中退出了“额定的合并逻辑”,
AggregatingMergeTree 会将雷同主键的所有行(在一个数据片段内)替换为单个存储一系列聚合函数状态的行。以文章结尾局部的表构造为例,
应用 AggregatingMergeTree 表引擎的建表语句如下:

https://tech.qimao.com/clickhouseshi-xian-shu-ju-de-you-xian-…
https://tech.qimao.com/clickhousezhi-wu-hua-shi-tu/

CREATE TABLE IF NOT EXISTS whatever_table ON CLUSTER default
(
    user_id     UInt64,
    city_level  SimpleAggregateFunction(anyLast, Nullable(Enum('一线城市' = 0, '二线城市' = 1, '三线城市' = 2, '四线城市' = 3))),
    gender      SimpleAggregateFunction(anyLast, Nullable(Enum('女' = 0, '男' = 1))),
    interest_sports   SimpleAggregateFunction(anyLast, Nullable(Enum('否' = 0, '是' = 1))),
    reg_date     SimpleAggregateFunction(anyLast, Datetime),
    comment_like_cnt    SimpleAggregateFunction(anyLast, Nullable(UInt32)),
    last30d_share_cnt   SimpleAggregateFunction(anyLast, Nullable(UInt32)),
    user_like_consume_trend_type  SimpleAggregateFunction(anyLast, Nullable(String)),
    province    SimpleAggregateFunction(anyLast, Nullable(String)),
    last_access_version  SimpleAggregateFunction(anyLast, Nullable(String)),
    others   SimpleAggregateFunction(anyLast,Array(String))
)ENGINE = AggregatingMergeTree() partition by toYYYYMMDD(reg_date) ORDER BY user_id;

就以上建标语句开展剖析,AggregatingMergeTree 会将除主键(user)外的其余列, 配合 anyLast 函数,替换每行数据为一种预聚合状态。
其中 anyLast 聚合函数申明聚合策略为保留最初一次的更新数据。

实时查问数据三种计划:
ReplacingMergeTree + FINAL
GROUP BY + argMax
AggregatingMergeTree+SimpleAggregateFunction(定时触发 optimize 分区)

2.MergeTree 家族系列 (MergeTree、ReplacingMergeTree、SummingMergeTree、AggregatingMergeTree、CollapsingMergeTree)
如果再给合并树系列的表引擎加上 Replicated 前缀, 又会失去一组反对数据正本的表引擎,ReplicatedMergeTree、ReplicatedReplacingMergeTree、
ReplicatedSummingMergeTree、ReplicatedAggregatingMergeTree 等等.
https://mp.weixin.qq.com/s/YWSmRqOOC3F5KeDBPg2g1A

ReplacingMergeTree: 在后盾数据合并期间, 对具备雷同排序键的数据进行去重操作。(order by)
SummingMergeTree: 当合并数据时, 会把具备雷同主键的记录合并为一条记录。依据聚合字段设置, 该字段的值为聚合后的汇总值, 非聚合字段应用第一条记录的值,聚合字段类型必须为数值类型。
AggregatingMergeTree: 在同一数据分区下,能够将具备雷同主键的数据进行聚合。
CollapsingMergeTree: 在同一数据分区下,对具备雷同主键的数据进行折叠合并。
VersionedCollapsingMergeTree: 基于 CollapsingMergeTree 引擎,削减了数据版本信息字段配置选项。在数据根据 ORDER BY 设置对数据进行排序的根底上,
如果数据的版本信息列不在排序字段中,那么版本信息会被隐式的作为 ORDER BY 的最初一列从而影响数据排序。
GraphiteMergeTree: 用来存储时序数据库 Graphites 的数据。

正文完
 0