ClickHouse 是什么

ClickHouse 是一个开源的面向联机分析处理(OLAP, On-Line Analytical Processing) 的列式存储数据库管理系统。

在一个 "常规" 的行式数据库管理系统中,数据按下面的顺序存储

id |   name   | age
---|----------|---1  | Zhangsan | 182  | GlonHo   | 203  | Lisi     | 22...| ...      | ...

换言之,所有相关的值在一个行里面一个挨一个存储。行式存储的的数据库管理系统有:MySQL, Postgres, MS SQL Server 等。

在一个列式存储数据库管理系统中,数据存储的方式如下所示

id: 1 2 3 ...name: Zhangsan GlonHo Lisi ...age: 18 20 22 ...

列式存储的数据库管理系统更适合于 OLAP 场景(对于大多数查询,至少有 100 倍的处理速度提升)的原因有:

I/O 方面:

  • 对于一个分析的查询,只需要表中少量的列。在一个列存储数据库管理系统中,可以只读取所需的数据。例如,如果只需要从 100 列中读取 5 列,那么预期可以减少 20倍 I/O

  • 列式存储数据,更易于压缩,进一步减少 I/O

  • 由于减少了 I/O,系统中可以缓存更多符合要求的数据

CPU 方面:

执行一个查询需要处理大量的行,它有助于调度所有操作对整个向量而不是单独的行,或实现查询引擎,这样几乎没有调度成本,如果不这么做,对于任意还过得去的磁盘子系统,查询解释器不可避免地分摊 CPU。