ClickHouse MergeTree原理解析-朱凯
ClickHouse MergeTree原理解析 朱凯@深圳 2019.10 朱 凯 远光软件 大数据事业部/平台开发部 总经理 资深架构师,腾讯云TVP专家 10多年IT从业经验,精通Java、Nodejs等语言方向 著有: 《企业级大数据平台构建:架构与实现》、 《ClickHouse原理解析与开发实战》(连载写作中) 珠海总部园 区占地面积 6 万平方米 珠海、北京、武汉 内存、文件、接口和其他5大类20多种。 合并树 这众多的表引擎中,又属合并树(MergeTree)表引擎及其家族系列(*MergeTree)最 为强大,在生产环境绝大部分场景中都应该使用此系列的表引擎。 只有合并树系列的表引擎才支持主键索引、数据分区、数据副本和数据采样这些特 性,同时也只有此系列的表引擎支持ALTER相关操作。 合并树家族 其中MergeTree作为家族中最基础的表引擎,提供了主键索引、数据分区、数据副 本和数据采样等所有的基本能力,而家族中其他的表引擎则在MergeTree的基础之 上各有所长。 MergeTree的名称由来 MergeTree在写入一批数据时,数据总会以数据片段的形式写入磁盘,且数据 片段不可修改。为了避免片段过多,ClickHouse会通过后台线程定期合并这 些数据片段,属于相同分区的数据片段会被合成一个新的片段。这种数据片 段往复合并的特点也正是合并树的名称由来。 MergeTree的创建方式 CREATE0 码力 | 35 页 | 13.25 MB | 1 年前31. Machine Learning with ClickHouse
data LIMIT N SELECT min(pickup_date), max(pickup_date) FROM ( SELECT pickup_date FROM trips_mergetree_third LIMIT 1000 ) ┌─min(pickup_date)─┬─max(pickup_date)─┐ │ 2009-01-01 │ 2009-01-01 │ └──── fixed sample query › Only for MergeTree 11 / 62 How to sample data SAMPLE x OFFSET y CREATE TABLE trips_sample_time ( pickup_datetime DateTime ) ENGINE = MergeTree ORDER BY sipHash64(pickup_datetime) store model as aggregate function state in a separate table Example CREATE TABLE models ENGINE = MergeTree ORDER BY tuple() AS SELECT stochasticLinearRegressionState(total_amount, trip_distance) AS model0 码力 | 64 页 | 1.38 MB | 1 年前30. Machine Learning with ClickHouse
data LIMIT N SELECT min(pickup_date), max(pickup_date) FROM ( SELECT pickup_date FROM trips_mergetree_third LIMIT 1000 ) ┌─min(pickup_date)─┬─max(pickup_date)─┐ │ 2009-01-01 │ 2009-01-01 │ └──── fixed sample query › Only for MergeTree 11 / 62 How to sample data SAMPLE x OFFSET y CREATE TABLE trips_sample_time ( pickup_datetime DateTime ) ENGINE = MergeTree ORDER BY sipHash64(pickup_datetime) store model as aggregate function state in a separate table Example CREATE TABLE models ENGINE = MergeTree ORDER BY tuple() AS SELECT stochasticLinearRegressionState(total_amount, trip_distance) AS model0 码力 | 64 页 | 1.38 MB | 1 年前3ClickHouse: настоящее и будущее
Hub Support For Semistructured Data 27 JSO data type: CREATE TABLE games (data JSON) ENGINE = MergeTree; • You can insert arbitrary nested JSONs • Types are automatically inferred on INSERT and merge (data String) ENGINE = MergeTree ORDER BY tuple(); SELECT JSONExtractString(data, 'teams', 1, 'name') FROM games; — 0.520 sec. CREATE TABLE games (data JSON) ENGINE = MergeTree; SELECT data.teams.name[1]0 码力 | 32 页 | 2.62 MB | 1 年前3ClickHouse: настоящее и будущее
Hub Support For Semistructured Data 27 JSO data type: CREATE TABLE games (data JSON) ENGINE = MergeTree; • You can insert arbitrary nested JSONs • Types are automatically inferred on INSERT and merge (data String) ENGINE = MergeTree ORDER BY tuple(); SELECT JSONExtractString(data, 'teams', 1, 'name') FROM games; — 0.520 sec. CREATE TABLE games (data JSON) ENGINE = MergeTree; SELECT data.teams.name[1]0 码力 | 32 页 | 776.70 KB | 1 年前38. Continue to use ClickHouse as TSDB
`Name` String, `Age` UInt8, ..., `HeartRate` UInt8, `Humidity` Float32, ... ) ENGINE = MergeTree() PARTITION BY toYYYYMM(Time) ORDER BY (Name, Time, Age, ...); ► Column-Orient Model How we LowCardinality(String), `Age` UInt8, ..., `HeartRate` UInt8, `Humidity` Float32, ... ) ENGINE = MergeTree() PARTITION BY toYYYYMM(Time) ORDER BY (Name, Time, Age, ...); ► Column-Orient Model How we0 码力 | 42 页 | 911.10 KB | 1 年前3Что нужно знать об архитектуре ClickHouse, чтобы его эффективно использовать
индекс События поступают (почти) упорядоченными по времени А нам нужно по первичному ключу! MergeTree: поддерживаем небольшое количество упорядоченных кусков Идея та же, что и в LSM-дереве Как обеспечить0 码力 | 28 页 | 506.94 KB | 1 年前3postgresql integration kssenii
с�орос�� рабо�� с бо����м об�емом �анн�х ... 2 / 1 5 Движки таблиц и баз данных 1 Семе�с��о MergeTree 3 ������ ��я �н�е�ра��� 2 Семе�с��о Log Ка� � ��е храня�ся �анн�е, �у�а �х ��са�� � о��у�а ч��а��0 码力 | 15 页 | 798.50 KB | 1 年前33. 数仓ClickHouse多维分析应用实践-朱元
ck数仓数据模型采用星型模型搭建 02 数 仓 建 设 – 维度表 一般维度表数据量不大. 目前采用的是引擎Log+字典表(dictionary) 数 仓 建 设 – 主题事实清单表 主题事实清单表采用引擎MergeTree. 同步策略: 每日从 oracle数据平台增量同步到ck数仓. 数 仓 建 设 – 对外数据 目前对外开放是主题事实清单表+维度表 封装成一个视图,类 似如下 数 据 展 示 + 多 维0 码力 | 14 页 | 3.03 MB | 1 年前32. Clickhouse玩转每天千亿数据-趣头条
shot文件到达2G+) 3.2:注意监控zookeeper的指标(排队请求?处理延迟?等等),排队请求太多可能会导致插入失败 我们遇到的问题 关于引擎选择 推荐Replicated*MergeTree引擎 1:安全,数据安全,业务安全 2:升级的时候可以做到业务无感知 3:提升查询的并发度 广告时间0 码力 | 14 页 | 1.10 MB | 1 年前3
共 13 条
- 1
- 2