Skip to content

ClickHouse 技术调研:面向实时分析的列式 OLAP 数据库

概览

系统调研 ClickHouse 作为实时分析列式 OLAP 数据库的产品定位、技术特征、可观测性、时序分析、数据仓库、数据湖加速、AI/ML 分析、竞品格局、负载边界、使用限制与生产应用情况。

摘要

ClickHouse 是一种面向在线分析处理(OLAP)的高性能列式 SQL 数据库管理系统,提供开源版本与云服务形态。其核心目标不是替代传统 OLTP 数据库,而是用于处理大规模数据上的聚合、过滤、分组、报表、实时查询与高并发分析类负载。根据官方文档,ClickHouse 的典型应用覆盖实时分析、可观测性、时序数据、数据湖查询、机器学习与生成式 AI 相关分析等方向。本文基于 ClickHouse 官方文档、官方用户案例以及主要竞品官方资料,对 ClickHouse 的定义、作用、产品定位、应用场景、竞品格局、适用边界、现存问题与生产使用情况进行系统调研。

关键词:ClickHouse;OLAP;列式数据库;实时分析;可观测性;数据仓库

1 引言

随着互联网业务、云原生系统、AI 应用和实时运营系统产生的数据规模持续增长,传统数据库在高频聚合、宽表扫描、日志检索、指标分析和交互式报表方面面临查询延迟、并发能力、存储成本和扩展复杂度等问题。OLTP 数据库主要面向事务处理,通常优化少量行的读写、事务一致性和高频更新;而 OLAP 系统主要面向大规模数据分析,重点优化海量数据上的扫描、过滤、聚合和多维分析。

ClickHouse 的出现对应的是后一类问题。官方文档将 ClickHouse 定义为面向 OLAP 的高性能列式 SQL DBMS,分析查询通常涉及对大规模数据进行聚合、字符串处理、算术计算等复杂操作,并且许多场景要求查询结果在接近实时的时间内返回。1

2 ClickHouse 的定义、作用与问题域

ClickHouse 是一种列式数据库。列式数据库按列独立存储数据,因此在查询只涉及部分列时,可以减少不相关列的读取;该结构适合大规模聚合查询、报表分析和数据仓库场景。与按行存储相比,列式存储在恢复完整单行时成本更高,但在过滤、聚合和列压缩方面具有结构性优势。2

ClickHouse 的作用可以概括为四类:

第一,作为实时分析数据库。它用于承载高吞吐写入后的低延迟 SQL 分析,例如用户行为分析、广告效果分析、A/B 测试、产品分析和运营报表。

第二,作为可观测性数据存储引擎。日志、链路追踪、指标和事件数据通常具有高写入量、高基数维度、强聚合需求和长时间保存需求,ClickHouse 通过列式存储、压缩和并行扫描能力支持这些负载。5

第三,作为时序数据分析引擎。官方时序用例将系统指标、应用日志、业务事件和传感器读数列为典型时序数据来源,ClickHouse 可用于时序聚合、趋势分析、异常分析和实时仪表盘。[6]

第四,作为数据湖和开放表格式上的分析层。ClickHouse 可与 Iceberg、Delta Lake、Hudi、Paimon 等开放表格式集成,并支持在对象存储上的直接查询或将数据加载到 MergeTree 以满足低延迟、高并发分析需求。[7]

因此,ClickHouse 解决的核心问题不是“如何处理强事务”,而是“如何在大规模数据上以较低延迟和较高资源效率完成分析查询”。

3 产品定位

ClickHouse 的产品定位可以归纳为“实时分析数据库”与“高性能开源 OLAP 数据库”。从部署形态看,它同时提供开源软件与 ClickHouse Cloud;从负载类型看,它面向分析型 SQL 查询;从业务场景看,它覆盖实时分析、数据仓库、可观测性、时序分析、数据湖加速以及 AI/ML 相关数据分析。

在数据库体系中,ClickHouse 更接近 Snowflake、BigQuery、Redshift、Apache Druid、Apache Pinot、Apache Doris、Elasticsearch/OpenSearch/Splunk 等系统所在的分析与检索市场,而不是 MySQL、PostgreSQL、Oracle 这类以事务为核心的一般关系型数据库。PostgreSQL 可以承担部分分析查询,但 ClickHouse 官方比较材料将 Postgres 的主要价值定位为事务和通用关系数据库能力,而将 ClickHouse 用于 Postgres 难以承载的分析扩展场景。[11]

4 技术特征

ClickHouse 的主要技术特征包括列式存储、数据压缩、SQL 查询、并行处理、分布式查询和 MergeTree 系列表引擎。官方文档指出,ClickHouse 是真正的列式数据库管理系统,强调紧凑存储、压缩、磁盘存储、单机多核并行和多服务器分布式处理能力。3

ClickHouse 的性能基础主要来自以下机制:

  1. 列式读取:查询只读取相关列,降低 I/O。
  2. 压缩友好:同一列的数据类型和取值分布更一致,便于压缩。
  3. 向量化与并行执行:大查询可利用多核并行处理。
  4. 数据排序与主键索引:MergeTree 通过排序键和稀疏索引提高范围过滤效率。
  5. 物化视图与预聚合:对常用聚合结果提前计算,降低查询延迟。
  6. 分布式分片与副本:通过分片扩展容量和吞吐,通过副本提升可用性。

这些机制决定了 ClickHouse 更适合“写入后分析”和“追加型大数据分析”,而不是频繁按主键更新、强事务、多行复杂事务的一般 OLTP 场景。

5 应用场景

ClickHouse 官方用例文档列出的核心方向包括可观测性、时序数据、数据湖、机器学习和生成式 AI。4 结合官方用户案例,当前使用较多的场景可以归纳为以下几类。

5.1 实时产品分析

产品分析包括用户行为、事件流、漏斗分析、留存分析、A/B 测试、广告看板和客户可见的分析仪表盘。此类场景通常具有事件写入量大、查询维度多、查询结果需要低延迟返回等特点。ClickHouse 的列式扫描和聚合能力适合此类宽表事件分析。

5.2 可观测性与日志分析

可观测性是 ClickHouse 当前最重要的使用方向之一。官方可观测性文档明确指出,ClickHouse 本身不是开箱即用的完整可观测性产品,但可以作为高效的可观测性数据存储引擎使用;若用于完整可观测性方案,还需要数据采集框架和可视化界面,例如 OpenTelemetry 与 Grafana。5

官方文档还指出,ClickHouse 已成为可观测性产品中日志和链路追踪存储引擎的事实标准之一。该表述应被理解为官方文档对可观测性存储引擎方向的定位,而不能外推为所有数据库场景的绝对最佳选择。5

5.3 时序数据分析

系统指标、应用日志、业务事件和传感器数据都具有时间维度。ClickHouse 可用于按时间窗口聚合、趋势分析、监控仪表盘和异常检测。官方时序用例强调 ClickHouse 适合从简单监控仪表盘到 PB 级传感器实时处理的时序分析任务。[6]

5.4 数据仓库与实时数仓

ClickHouse 可作为面向分析的实时数仓,用于 BI 报表、运营分析、客户分析和内部数据平台。在该方向上,它与 Snowflake、BigQuery、Redshift、Apache Doris 等系统存在竞争关系。区别在于 ClickHouse 更强调低延迟、高并发、资源效率和开放部署形态,而云数仓产品通常更强调全托管、治理能力、生态集成和弹性资源管理。

5.5 数据湖查询与加速

在数据湖方向,ClickHouse 支持直接查询 Iceberg、Delta Lake、Hudi、Paimon 等开放表格式,也可以将数据加载到 MergeTree 引擎中作为低延迟分析层。对于已有数据湖基础设施的企业,ClickHouse 可作为查询加速层或实时服务层。[7]

5.6 AI/ML 与 GenAI 数据分析

AI 和机器学习系统会产生训练日志、推理日志、评估结果、用户反馈、特征数据和高频事件数据。ClickHouse 官方用例已将机器学习与生成式 AI 列为使用方向,官方用户案例中也出现了 LLM 可观测性、AI 产品分析和模型训练相关观测数据分析场景。4

6 竞品格局

ClickHouse 的竞品并非单一类型,而是按场景分布在多个技术市场中。

方向主要竞品对比关系
实时 OLAPApache Druid、Apache Pinot、Apache Doris均面向实时分析、低延迟聚合和大规模事件数据查询
云数据仓库Snowflake、BigQuery、Amazon Redshift均用于大规模 SQL 分析、数据仓库和 BI 场景
搜索与可观测性Elasticsearch、OpenSearch、Splunk在日志检索、可观测性和事件分析中存在重叠
关系型数据库分析扩展PostgreSQL、TimescaleDB、Citus 等可承担部分分析任务,但主定位仍偏事务或关系型通用负载
湖仓与查询引擎Trino、Presto、Spark SQL、Databricks SQL更强调数据湖查询、联邦查询或批处理生态

从官方比较页面看,ClickHouse 直接将 BigQuery、PostgreSQL、Redshift、Snowflake、Elastic Observability、Splunk、OpenSearch 等列为比较对象。[11] 从开源实时 OLAP 生态看,Apache Druid 官方定义为高性能实时分析数据库,Apache Pinot 官方定义为面向用户侧和 Agent 侧实时分析的开源分布式 OLAP 数据库,Apache Doris 官方定义为基于 MPP 架构的开源实时分析数据库。[12]

7 是否是某个方向的最佳解决方案

“最佳解决方案”不能脱离负载模型讨论。从公开资料可以得出以下客观判断。

在日志、链路追踪和高基数可观测性存储方向,ClickHouse 是当前非常有竞争力的方案。官方可观测性文档称其已成为日志和 tracing 存储引擎的事实标准之一,并强调其压缩率、快速聚合和并行扫描能力。5

在实时分析、产品分析、用户行为分析和客户可见分析看板方向,ClickHouse 也是高匹配方案,原因是该类业务通常以追加写入、宽表、多维过滤、聚合和低延迟查询为主,与 ClickHouse 的列式 OLAP 模型一致。

在通用云数仓方向,ClickHouse 不是唯一候选。Snowflake、BigQuery 和 Redshift 具有成熟的云平台集成、治理、权限、生态和弹性资源能力。ClickHouse 更适合低延迟、高并发、成本敏感和实时服务型分析;云数仓更适合企业级全托管数据平台、跨团队治理和批量分析。

在强事务 OLTP 方向,ClickHouse 不应被视为最佳方案。MySQL、PostgreSQL、Oracle、SQL Server 等事务数据库更适合高频点查、单行更新、多行事务和强一致业务写入。

8 当前存在的问题与适用边界

ClickHouse 的问题主要不是性能不足,而是负载适配边界清晰。其主要限制包括以下方面。

第一,ClickHouse 不适合作为传统 OLTP 主库。列式数据库在整行操作和频繁更新方面成本更高,官方 FAQ 也指出列式数据库的代价是影响整行的操作会更昂贵。2

第二,更新、删除和去重语义需要谨慎设计。ClickHouse 支持轻量级更新等能力,但相关机制并不是传统行式数据库的原地更新模型。ReplacingMergeTree 的去重发生在后台合并过程中,官方文档说明它适合后台清理重复数据,但不能保证任意时刻不存在重复数据。[9]

第三,高性能工作负载下应减少 JOIN。官方 JOIN 最佳实践建议在高性能场景中尽量减少 JOIN,并建议避免每个查询超过 3 到 4 个 JOIN。对于复杂星型模型、强依赖多表关联的场景,通常需要通过宽表、字典、物化视图或预处理降低查询时 JOIN 压力。[8]

第四,异步写入存在可见性延迟。官方插入文档指出,在异步插入缓冲区刷新到数据库存储前,数据不能被查询搜索到。因此,对强实时可见性有要求的业务需要评估插入策略和刷新配置。[10]

第五,ClickHouse 单独不能构成完整可观测性平台。官方可观测性文档明确说明,ClickHouse 可以作为高效存储引擎,但完整方案还需要 UI 和数据采集框架。5

第六,资源配置和运维调优仍然重要。ClickHouse 对数据建模、排序键、分区、物化视图、压缩、写入批量、查询模式和集群资源配置较敏感。错误的表设计或查询模式可能显著影响性能。

9 生产使用情况

ClickHouse 官方维护了 adopters 列表,并说明该列表来自公开来源,可能与当前现实存在差异。[13] 该列表和官方用户案例显示,ClickHouse 已被多类企业用于生产或核心业务系统,包括互联网、CDN、AI、金融、广告、电商、出行、视频、DevOps 和可观测性产品。

典型公开案例包括:

  1. Cloudflare:官方 adopters 列表显示其用于 CDN 流量分析;官方用户故事中还提到其使用 ClickHouse 分析海量互联网请求日志。[13][14]
  2. eBay:官方 adopters 列表显示其用于日志、指标和事件数据。[13]
  3. Uber:官方 adopters 列表显示其用于日志场景。[13]
  4. GitLab:官方 adopters 列表显示其用于 APM 场景。[13]
  5. Spotify:官方 adopters 列表显示其用于实验分析。[13]
  6. Instacart:官方用户故事显示其将 ClickHouse 用于关键零售商和广告看板、A/B 测试结果计算以及机器学习信号。[14]
  7. Anthropic:官方用户故事显示其将 ClickHouse 用于 AI 时代的可观测性扩展,并服务于模型研发相关观测数据分析。[14]
  8. LangChain / LangSmith:官方案例显示 LangSmith 使用 ClickHouse 扩展到生产负载,用于 LLM 应用可观测性与评估数据。[15]
  9. IBM:官方用户故事提到 ClickHouse 在 Instana 和 QRadar 等产品中作为关键组件,并部署了大量 ClickHouse 服务器。[14]
  10. Didi、Tencent、Tencent Music、Disney+、Twilio、Vimeo、Lyft 等:官方 adopters 列表或用户故事中均可见相应生产使用记录。[13][14]

这些案例显示,ClickHouse 的生产使用集中在实时分析、可观测性、日志分析、产品分析、广告分析、风控分析、AI/ML 数据分析和高并发分析看板等方向。

10 结论

ClickHouse 是面向 OLAP 与实时分析的列式 SQL 数据库。它的核心价值在于以列式存储、压缩、并行执行、分布式查询和 MergeTree 引擎支撑大规模数据上的低延迟分析。它解决的问题主要是海量事件、日志、指标、时序和业务数据的高吞吐写入与快速分析,而不是传统事务数据库问题。

从产品定位看,ClickHouse 位于实时分析数据库、开源 OLAP、可观测性存储引擎和实时数据仓库之间。其主要竞品包括 Apache Druid、Apache Pinot、Apache Doris、Snowflake、BigQuery、Redshift、Elasticsearch、OpenSearch 和 Splunk。当前最适合 ClickHouse 的方向是实时分析、产品分析、可观测性日志与链路追踪存储、时序数据分析、实时数仓和数据湖加速。对于强事务、频繁单行更新、复杂多表事务和传统 OLTP 系统,ClickHouse 不应作为主数据库替代方案。

总体而言,ClickHouse 是实时分析和可观测性存储方向的重要基础设施选项,但其使用效果依赖于负载模型、表设计、排序键、写入策略、JOIN 规避、物化视图设计和集群运维能力。正确的定位是:ClickHouse 是分析型数据库,不是通用事务型数据库;是高性能实时分析引擎,不是所有数据场景的单一最优解。

参考文献

1 ClickHouse Docs, What is ClickHouse? 2 ClickHouse Docs, What is a columnar database? 3 ClickHouse Docs, Distinctive Features of ClickHouse. 4 ClickHouse Docs, Use case guides. 5 ClickHouse Docs, Using ClickHouse for observability. [6] ClickHouse Docs, Time-Series. [7] ClickHouse Docs, Data Lake. [8] ClickHouse Docs, Minimize and optimize JOINs. [9] ClickHouse Docs, ReplacingMergeTree / Lightweight UPDATE / Avoid OPTIMIZE FINAL. [10] ClickHouse Docs, Inserting ClickHouse data. [11] ClickHouse Comparison Pages, BigQuery / PostgreSQL / Redshift / Snowflake / Elastic / Splunk / OpenSearch. [12] Apache Druid, Apache Pinot, Apache Doris, Elastic, Snowflake, BigQuery, Redshift 官方资料。 [13] ClickHouse Docs, ClickHouse adopters. [14] ClickHouse, User stories. [15] ClickHouse Blog, LangChain - Why we Choose ClickHouse to Power LangSmith.

GitHub Discussions

参与讨论

评论会同步到 stellhub/stell-web 仓库的 GitHub Discussions。

Powered by VitePress and GitHub Discussions.