从 ClickHouse 的设计来理解

Clickhouse design

结构决定能力的上限

ClickHouse 存储引擎的设计

Hive 使用的 textfile 作为数据文件,需要消耗大量的I/O时间,即使使用分布式将数据分散也只是分散与并行来缓解问题,但是所需要的I/O时间并没有减少。

ClickHouse 使用列式存储 + 压缩的设计,大大降低了I/O时间,这是通过改变底层结构来提高查询性能上限。

ClickHouse 列存的限制

ClickHouse 是列存数据库,列存发挥优势的前提是参与计算的列占比小。所以设计表是进可能使用宽表。底层的表结构决定了列表能够带来的加速效应的上限。

结构决定应用层算法

ClickHouse 存储引擎决定计算引擎的实现

底层存储引擎支持数据向量化的输出是ClickHouse使用硬件SIMD加速的前提。

有序存储决定了索引算法

ClickHouse 引擎将数据按照表进行有序排序后写入磁盘,所以不需要对数据进行B+树索引。所以如果是对排序键查询会有一个很好的性能,如果有其它键查询可以考虑新增表来解决。

Publish on 2024-02-21,Update on 2025-02-10