ClickHouse 特性
SQL 支持
支持大部分 SQL 功能。 列式存储,数据压缩: 列式存储能够更加有利于 OLAP 聚合查询,同时也能大大提高数据压缩率。
多核心并行处理
使用多线程和多分片并行处理。
ClickHouse
将数据划分为多个partition
,每个partition
再进一步划分为多个index granularity
,然后通过多个CPU核心分别处理其中的一部分来实现并行数据处理。
在这种设计下,单条Query
就能利用整机所有CPU。极致的并行处理能力,极大的降低了查询延时。
实时数据摄入
数据可以实时批量摄入立即被查询。
主键索引,二级索引
ClickHouse 主要采用了稀疏索引的方式做主键索引,minmax,set,ngrambf/tokenbf 等 Bloom Filter 去做二级索引。
- 没有高速,低延迟的更新和删除方法,
行存储 | 列存储 |
因为按一行一行写和读取数据,因此读取数据时往往需要读取那些不必要的列 | 可以只读取必要的列 |
易于按记录读写数据 | 对一个一个记录的数据写入和读取都较慢 |
适合 OLTP 系统 | 适合 OLAP 系统 |
不利于大数据集的聚合统计操作 | 利于大数据集的数据聚合操作 |
不利于压缩数据 | 利于压缩数据 |
ClickHouse 应用场景
- 用户行为分析,精细化运营分析: 日活,留存率分析,路径分析,有序漏斗转化率分 析,Session 分析等。
- 实时日志分析,监控分析。
- 实时数仓。
ClickHouse 的痛点
- 扩容/缩容后数据无法自动平衡,只能通过低效的数据重新导入的方式来进行人工平衡。
- 单表查询性能高,但是 Join 性能不高。
- 无法高效地更新单行/多行数据。