ClickHouse 是什么?

17 Mar 2025 | 4 分钟阅读

ClickHouse 是一个用于在线分析处理 (OLAP) 的开源列式数据库管理系统。

ClickHouse 允许使用 SQL 查询生成实时更新的数据分析报告。该系统以高性能著称。它简单易用,开箱即用。该项目于 2016 年 6 月以 Apache 2 许可证作为开源软件发布。

ClickHouse 是第一个开源的 SQL 数据仓库,其性能和可伸缩性可与 Sybase IQVerticaSnowflake 等专有数据库相媲美。它包含以下特性,例如:

  • 列式存储,可以处理拥有数万亿行和数千列的表。
  • 通过内置复制实现容错和读扩展。
  • 通过物化视图实现卓越的聚合。
  • 解决实际问题的功能,如漏斗分析和最后一点查询。

ClickHouse 的开发由一个由数百名贡献者组成的社区驱动,他们专注于解决实际问题,而不是实现公司路线图。

What is ClickHouse?

ClickHouse 在单台服务器上每秒可处理数亿到超过十亿行数据,以及数十 GB 的数据,并在数百个节点的集群上运行。该系统可以轻松安装在单台服务器或虚拟机上。

ClickHouse 充分利用所有可用硬件的潜力,以最快的速度处理每个查询。单查询峰值处理性能超过每秒两 TB

ClickHouse 允许公司在不投入额外时间或金钱进行任何 DBMS 修改的情况下向其集群添加服务器。由于其向量化查询执行(涉及相关的处理器指令和运行时代码生成),它在 CPU 方面效率很高。

历史

  • ClickHouse 由俄罗斯 IT 公司 Yandex 为 Yandex.Metrica 开发。
  • 当原始数据以聚合形式存储时,Metrica 以前使用的是经典方法,这种方法有助于减少存储的数据量。
  • 另一种方法是存储未聚合的数据。处理原始数据需要高性能系统,因为所有计算都是实时进行的。为了解决这个问题,需要一个列式 DBMS 来处理互联网规模的分析数据。
  • 第一个 ClickHouse 原型出现在 2009 年。
  • 2014 年底,Yandex.Metrica 2.0 版本发布。新版本提供了一个用于创建自定义报告的界面,并使用 ClickHouse 来存储和处理数据。

ClickHouse 的特性

以下是 ClickHouse 的主要特性,例如:

  1. 真正的列式 DBMS:不存储与值相关的额外数据。这意味着必须支持固定长度的值,以避免存储它们的长度“数字”在值旁边。
  2. 线性可伸缩性:可以通过添加服务器来扩展集群。
  3. 容错性:该系统是分片集群,每个分片是一组副本。ClickHouse 使用异步多主复制,并且可以跨多个数据中心部署。数据写入任何可用副本,并分发到所有其他副本。ZooKeeper 用于协调进程,但不参与查询处理和执行。
  4. SQL 支持: ClickHouse 支持扩展的 SQL 语言,包括数组和嵌套数据结构、近似函数和 URI 函数,以及连接外部键值存储的能力。
  5. 高性能:使用向量计算方法来实现高 CPU 性能。在这种方法中,数据按列存储,并按向量(列的部分)处理。它支持采样和近似计算。此外,还支持并行和分布式查询处理,包括 JOIN。
  6. HDD 优化:该系统可以处理不适合随机存取内存的数据。
  7. 极速: ClickHouse 充分利用所有可用硬件的潜力,以最快的速度处理每个查询。
  8. 易于使用: ClickHouse 简单易用,可立即用于生成报告。SQL 语言允许在不涉及某些替代系统中发现的自定义非标准 API 的情况下表达所需结果。
  9. 高度可靠: ClickHouse DBMS 可以配置为分布式系统,位于独立节点上,没有任何单点故障。它还包含许多企业级安全功能和防范人为错误的容错机制。
  10. 数据库连接客户端:数据库连接选项包括控制台客户端、HTTP API 或其中一个包装器。ClickHouse 还提供 JDBC 驱动程序。

ClickHouse 的缺点

以下几点可以被视为缺点,例如:

  • 不支持事务。
  • 缺乏以高速率和低延迟修改或删除已插入数据的能力。
  • 稀疏索引使得 ClickHouse 在通过其键检索单个行的点查询方面效率不高。
  • 默认情况下,在执行聚合时,中间查询状态必须适合单台服务器上的 RAM。在这种情况下,ClickHouse 可以配置为溢出到磁盘。