四.clickhouse引擎简单介绍(clickhouse极简教程系列)

Clickhouse是一个支持多引擎数据库
引擎对性能影响非常大

Merge Tree 数据引擎

1.MergeTree是一系列支持主键存储的存储引擎,数据排列是根据主键顺序进行排列

2.Merge Tree所有的数据结构存贮在文件column.bin中(有点像mysql的Innodb)

3.主键索引不会存储具体的值,而是存储数据范围,它会存贮数据范围指针.主键只能有一个

4.它适合批量插入数据,不适合连续单条插入操作.这引擎插入速度非常慢.

5.不支持事务

6.对于严谨的业务,你应该用此类数据引擎
7.支持时间索引

8.它是clickhouse最常用的基础引擎

AggregatingMergeTree

支持AggregateFunction 数据类型的MergTree数据库引擎.例如:

1
2
3
4
5
6
7
8
9
10
CREATE TABLE t(
column1 AggregateFunction(uniq, UInt64),
column2 AggregateFunction(anyIf, String, UInt8),
column3 AggregateFunction(quantiles(0.5, 0.9), UInt64)
) ENGINE = ...

CollapsingMergeTree

具有数据自动叠加覆盖功能的MergeTree.

应用场景:一些增量日志.

例如用户登录数据,你既想保存用户历史的登录信息,又想保存用户目前的信息,传统做法是一直累加日志,会导致大量冗余数据,例如用户帐号,而你可能只想累计记录用户登录的IP信息或者历史密码,那么这种场合适合使用它

ReplacingMergeTree

这个引擎当主键冲突时候,会根据定义表时候的”verson”(一个时间类型的列)的大小对旧的进行删除.(有点像mysql的replace into)
PS:删除低版本数据过程不是实时的,它会在后台慢慢异步完成,因此你不要依赖它来保证数据唯一性

Merge

跟 Merge Tree 没有半毛钱关系
它不存放数据,只能读不能写
它只是用来自动合并之前拆了表的数据方便操作而已.(跟mysql的merge一个概念)

待续…