关键词搜索

源码搜索 ×
×

大数据OLAP分析数据库ClickHouse之表引擎

发布2022-05-03浏览481次

详情内容

1、ClickHouse表引擎

表引擎分为四种:

1. MergeTree
2. Log
3. Integrations
4. Special

1.MergeTree

MergeTree系列引擎适用于高负载任务,支持大数据量的快速写入并进行后续的数据处理,通用程度高且功能强大。

该系列引擎的共同特点是支持数据副本、分区、数据采样等特性。

表引擎特点
MergeTree用于插入极大量的数据到一张表中,数据以数据片段的形式一个接着一个的快速写入,数据片段按照一定的规则进行合并。
ReplacingMergeTree用于解决MergeTree表引擎相同主键无法去重的问题,可以删除主键值相同的重复项。
CollapsingMergeTree在建表语句中新增标记列Sign,用于消除ReplacingMergeTree表引擎的如下功能限制。在分布式场景下,相同主键的数据可能被分布到不同节点上,不同分片间可能无法去重。 在没有彻底optimize之前,可能无法达到主键去重的效果,比如部分数据已经被去重,而另外一部分数据仍旧有主键重复。 optimize是后台动作,无法预测具体执行时间点。 手动执行optimize在海量数据场景下需要消耗大量时间,无法满足业务即时查询的需求。
VersionedCollapsingMergeTree在建表语句中新增Version列,用于解决CollapsingMergeTree表引擎乱序写入导致无法正常折叠(删除)的问题。
SummingMergeTree用于对主键列进行预先聚合,将所有相同主键的行合并为一行,从而大幅度降低存储空间占用,提升聚合计算性能。
AggregatingMergeTree预先聚合引擎的一种,用于提升聚合计算的性能,可以指定各种聚合函数。
GraphiteMergeTree用于存储Graphite数据并进行汇总,可以减少存储空间,提高Graphite数据的查询效率。

2.Log

Log系列引擎适用于快速写入小表(1百万行左右的表)并读取全部数据的场景。

该系列引擎的共同特点如下。

  • 数据被追加写入磁盘中。
  • 不支持deleteupdate
  • 不支持索引。
  • 不支持原子性写。
  • insert会阻塞select操作。
表引擎特点
TinyLog不支持并发读取数据文件,格式简单,查询性能较差,适用于暂存中间数据。
StripeLog支持并发读取数据文件,将所有列存储在同一个大文件中,减少了文件数,查询性能比TinyLog好
Log支持并发读取数据文件,每个列会单独存储在一个独立文件中,查询性能比TinyLog好。

3.Integrations

Integrations系列引擎适用于将外部数据导入到云数据库ClickHouse中,或者在云数据库ClickHouse中直接使用外部数据源.

表引擎特点
Kafka将Kafka Topic中的数据直接导入到云数据库ClickHouse。
MySQL将MySQL作为存储引擎,直接在云数据库ClickHouse中对MySQL表进行select等操作。
JDBC通过指定JDBC连接串读取数据源。
ODBC通过指定ODBC连接串读取数据源。
HDFS直接读取HDFS上特定格式的数据文件。

4.Special

Special系列引擎适用于特定的功能场景。

表引擎特点
Distributed本身不存储数据,可以在多个服务器上进行分布式查询。
MaterializedView用于创建物化视图。
Dictionary将字典数据展示为一个云数据库ClickHouse表。
Merge本身不存储数据,可以同时从任意多个其他表中读取数据。
File直接将本地文件作为数据存储。
NULL写入数据被丢弃,读取数据为空。
Set数据总是保存在RAM中。
Join数据总是保存在内存中。
URL用于管理远程HTTP、HTTPS服务器上的数据。
View本身不存储数据,仅存储指定的SELECT查询。
Memory数据存储在内存中,重启后会导致数据丢失。查询性能极好,适合于对于数据持久性没有要求的1亿以下的小表。在云数据库ClickHouse中,通常用来做临时表。
Buffer为目标表设置一个内存Buffer,当Buffer达到了一定条件之后会写入到磁盘。

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载