ClickHouse提供了大量的数据引擎,分为数据库引擎、表引擎,根据数据特点及使用场景选择合适的引擎至关重要,这里根据资料做一些总结。
数据库引擎官方文档: https://clickhouse.tech/docs/en/engines/database-engines
数据库引擎默认是Ordinary,在这种数据库下面的表可以是任意类型引擎。
生产环境中常用的表引擎是MergeTree系列,也是官方主推的引擎。
MergeTree是基础引擎,有主键索引、数据分区、数据副本、数据采样、删除和修改等功能,
ReplacingMergeTree有了去重功能,
SummingMergeTree有了汇总求和功能,
AggregatingMergeTree有聚合功能,
CollapsingMergeTree有折叠删除功能,
VersionedCollapsingMergeTree有版本折叠功能,
GraphiteMergeTree有压缩汇总功能。
在这些的基础上还可以叠加Replicated和Distributed。
Integration系列用于集成外部的数据源,常用的有HADOOP,MySQL。
引言
表引擎在ClickHouse中的作用十分关键,直接决定了数据如何存储和读取、是否支持并发读写、是否支持index、支持的query种类、是否支持主备复制等。
ClickHouse提供了大约28种表引擎,各有各的用途,比如有Lo
系列用来做小表数据分析,MergeTree
系列用来做大数据量分析,而Integration
系列则多用于外表数据集成。再考虑复制表Replicated
系列,分布式表Distributed
等,纷繁复杂,新用户上手选择时常常感到迷惑。
本文尝试对ClickHouse的表引擎进行梳理,帮忙大家快速入门ClickHouse。
ClickHouse表引擎概览
一共分为四个系列,分别是Log、MergeTree、Integration、Special。其中包含了两种特殊的表引擎Replicated、Distributed,功能上与其他表引擎正交,我们后续会单独写一篇文章来介绍。
Log系列
Log系列表引擎功能相对简单,主要用于快速写入小表(1百万行左右的表),然后全部读出的场景。
几种Log表引擎的共性是:
- 数据被顺序append写到磁盘上;
- 不支持delete、update;
- 不支持index;
- 不支持原子性写;
- insert会阻塞select操作。
它们彼此之间的区别是:
-
TinyLog:不支持并发读取数据文件,查询性能较差;格式简单,适合用来暂存中间数据;
-
StripLog:支持并发读取数据文件,查询性能比TinyLog好;将所有列存储在同一个大文件中,减少了文件个数;
-
Log:支持并发读取数据文件,查询性能比TinyLog好;每个列会单独存储在一个独立文件中。
Integration系列
该系统表引擎主要用于将外部数据导入到ClickHouse中,或者在ClickHouse中直接操作外部数据源。
-
Kafka:将Kafka Topic中的数据直接导入到ClickHouse;
-
MySQL:将Mysql作为存储引擎,直接在ClickHouse中对MySQL表进行select等操作;
-
JDBC/ODBC:通过指定jdbc、odbc连接串读取数据源;
-
HDFS:直接读取HDFS上的特定格式的数据文件;
Special系列
Special系列的表引擎,大多是为了特定场景而定制的。这里也挑选几个简单介绍,不做详述。
-
Memory:将数据存储在内存中,重启后会导致数据丢失。查询性能极好,适合于对于数据持久性没有要求的1亿一下的小表。在ClickHouse中,通常用来做临时表。
-
Buffer:为目标表设置一个内存buffer,当buffer达到了一定条件之后会flush到磁盘。
-
File:直接将本地文件作为数据存储;
-
Null:写入数据被丢弃、读取数据为空;
MergeTree系列
Log、Special、Integration主要用于特殊用途,场景相对有限。MergeTree系列才是官方主推的存储引擎,支持几乎所有ClickHouse核心功能。
以下重点介绍MergeTree、ReplacingMergeTree、CollapsingMergeTree、VersionedCollapsingMergeTree、SummingMergeTree、AggregatingMergeTree引擎。
参考文章:https://clickhouse.tech/docs/en/engines
参考文章:https://blog.csdn.net/A1373712651/article/details/103608340
参考文章:https://blog.csdn.net/qq_41106844/article/details/107067525