[OLAP] 技术调研:Apache Doris / ClickHouse / HBase
0 序
作为资深软件开发工程师,本文将对 Apache Doris、ClickHouse 和 HBase 这3个主流的开源数据存储与分析系统进行一次严谨、深入的对比分析。
本次调研将聚焦于它们的核心定位、架构设计、功能特性、适用场景以及各自的优劣势,旨在为技术选型提供清晰、客观的决策依据。
1 对比分析
1.1 核心定位与设计理念
这三个系统虽然都处理海量数据,但其根本目标和设计理念截然不同。
-
Apache Doris:
- 定位:统一的实时分析型数据库(Unified Real-time Analytics Database)。
- 理念:旨在提供一个 “开箱即用” 的解决方案,无缝融合 高并发点查、复杂即席分析、实时数据更新、湖仓联邦查询 等多种工作负载。它追求在易用性、性能和功能完整性之间取得最佳平衡。
-
ClickHouse:
- 定位:极致性能的列式 OLAP 数据库。
- 理念:专注于 单表聚合查询 的极致速度。其设计哲学是 “为读而生”,通过牺牲写入灵活性(如不支持高效更新、JOIN 性能一般)来换取无与伦比的查询吞吐量和压缩比。非常适合日志分析、指标监控等追加写入为主的场景。
-
HBase:
- 定位:分布式、可扩展的大规模 NoSQL 列式存储系统。
- 理念:基于 Google Bigtable 论文实现,核心目标是提供 海量数据的随机、低延迟读写能力。它是一个 Key-Value Store,擅长处理 稀疏、宽表 结构的数据,是 Hadoop 生态中在线服务(OLTP-like)场景的基石。
1.2 架构与数据模型
| 特性 | Apache Doris | ClickHouse | HBase |
|---|---|---|---|
| 架构 | Shared-Nothing MPP 架构,FE/BE 分离。 | Shared-Nothing,但查询并行度主要在单机内(多核),分布式 JOIN 能力较弱。 | Master-Slave 架构(HMaster/HRegionServer),依赖 ZooKeeper 进行协调。 |
| 数据模型 | 关系模型。支持标准 SQL,提供 Duplicate/Aggregate/Unique Key 等多种建模方式。 | 关系模型(扁平化)。支持 SQL(ANSI SQL 子集),但不支持真正的二级索引和高效 UPDATE/DELETE。 | 宽表模型(Key-ColumnFamily-Qualifier-Value-Timestamp)。非关系模型,需通过 Phoenix 等上层工具支持 SQL。 |
| 存储引擎 | 列式存储,支持多种索引(前缀、BloomFilter、倒排)。 | 列式存储(MergeTree 系列引擎),LSM-Tree 结构,极致压缩和顺序读性能。 | 列式存储(HFile),基于 LSM-Tree,为随机读写优化。 |
| 一致性 | 强一致性(Quorum 协议)。 | 最终一致性(ReplicatedMergeTree)。 | 强一致性(WAL + Multi-Paxos)。 |
1.3 功能特性对比
实时数据摄入与更新
- Doris:强项。通过 Unique Key 模型(主键模型)支持高效的 行级 Upsert/Delete,数据秒级可见。支持 Kafka、HTTP、JDBC 等多种实时导入方式。
- ClickHouse:弱项。原生不支持高效更新。虽有
CollapsingMergeTree、ReplacingMergeTree等引擎,但更新是异步、非即时的,且代价高昂。更适合纯追加(Append-only)场景。 - HBase:强项。天生为 高频随机写入和更新 设计,写入延迟极低(毫秒级)。但其“更新”是新版本覆盖,旧版本可通过时间戳访问。
查询能力
- Doris:全能型选手。MPP 架构使其在 多表 JOIN、复杂子查询、窗口函数 等场景表现优异。向量化引擎保证了高性能。同时支持高并发点查。
- ClickHouse:单表聚合之王。在单表、大宽表的聚合查询上性能极其出色。但 JOIN 性能较差(尤其是大表 JOIN),复杂的多表关联查询不是其强项。
- HBase:点查专家。通过 RowKey 可以实现 毫秒级的单行或范围扫描。不擅长复杂的分析查询(如全表扫描、聚合、JOIN),通常需要与 Spark/Flink 等计算引擎结合使用。
易用性与生态
- Doris:极高。仅需 FE/BE 两类进程,无外部依赖(如 ZooKeeper, HDFS)。完全兼容 MySQL 协议,任何 BI 工具可直接连接。社区活跃,文档完善。
- ClickHouse:中等。部署相对简单,但集群管理和运维(如副本同步、ZooKeeper 依赖)有一定复杂度。SQL 兼容性良好,但有自身方言。
- HBase:较低。重度依赖 HDFS 和 ZooKeeper,整个 Hadoop 生态的部署和运维成本很高。原生 API 复杂,通常需要 Phoenix、Spark 等上层封装才能方便使用。
适用场景总结
-
选择 Apache Doris 当:
- 你需要一个 统一的平台 来同时处理 实时报表、交互式 BI、用户行为分析、日志检索。
- 你的业务需要 实时数据更新 能力(如订单状态变更、用户画像更新)。
- 你希望 简化技术栈,避免维护 Lambda/Kappa 架构或多套 OLAP 系统。
- 你需要直接查询 数据湖(Iceberg/Hudi) 中的数据。
-
选择 ClickHouse 当:
- 你的核心场景是 海量日志、事件流的实时聚合分析(如 PV/UV、监控指标)。
- 数据模式主要是 追加写入,几乎没有更新需求。
- 你的查询模式以 单表、大宽表的聚合 为主,极少涉及复杂的多表 JOIN。
- 你对 极致的查询吞吐量和压缩比 有硬性要求。
-
选择 HBase 当:
- 你需要存储 海量的、稀疏的、结构灵活的 数据(如用户画像、消息历史、推荐特征)。
- 你的核心需求是 通过 RowKey 进行毫秒级的随机读写(如在线查询用户最近 N 条行为)。
- 你已经在使用 Hadoop 生态,并且需要一个可靠的在线存储层。
- 你的分析需求可以通过 批处理引擎(如 Spark) 在 HBase 上完成,而非交互式查询。
1.4 性能与资源消耗概览
- CPU:Doris(向量化)和 ClickHouse 都非常 CPU 密集,能充分利用多核。HBase 的 CPU 消耗相对均衡。
- 内存:Doris 和 ClickHouse 的查询对内存要求较高,复杂的查询可能需要大量内存。HBase 的内存主要用于 BlockCache 和 MemStore。
- 磁盘 I/O:ClickHouse 的顺序读性能最优,压缩比最高。Doris 通过智能索引有效减少 I/O。HBase 的随机读写对 SSD 更友好。
- 网络:Doris 的 MPP 架构在执行分布式 JOIN 时会产生较多网络 shuffle。ClickHouse 和 HBase 的网络开销主要在数据复制和客户端交互。
Z FAQ
Q: 我的应用既有高并发的点查(如查询用户信息),又有复杂的多维分析(如用户行为漏斗),该选哪个?
A: Apache Doris 是最直接的选择。它的架构和数据模型就是为这种混合负载(HTAP-lite)场景设计的。ClickHouse 不擅长点查和复杂 JOIN,HBase 则完全不擅长复杂分析。
Q: 我们有 PB 级别的日志数据,每天增量很大,但查询主要是按天/小时聚合统计,几乎没有更新。ClickHouse 是不是最好的选择?
A: 是的,ClickHouse 在这个场景下极具优势。它的列存、高压缩比和向量化执行引擎能以极低成本实现超快的聚合查询。Doris 虽然也能胜任,但在纯追加、单表聚合场景下,TCO(总拥有成本)可能略高于 ClickHouse。
Q: HBase 能否用来做实时数仓?它和 Doris/ClickHouse 有什么本质区别?
A: HBase 本身不是一个数仓。它是一个 在线服务型存储。你可以用它存储实时明细数据,但要构建数仓的聚合层、维度建模、交互式查询能力,必须依赖 Spark、Flink、Presto 等外部计算引擎。而 Doris/ClickHouse 是 自带计算和存储的完整数据库,可以直接响应 SQL 查询,这是本质区别。
Q: Doris 和 ClickHouse 都支持列式存储,为什么 Doris 的 JOIN 性能远好于 ClickHouse?
A: 这源于 架构差异。Doris 是 真正的 MPP 架构,查询计划会被拆分成多个可以在不同节点上并行执行的片段(Fragment),并通过高效的 Shuffle 机制交换数据,天然适合分布式 JOIN。ClickHouse 的分布式模型更像是 分片+本地计算,跨分片的 JOIN 需要将数据拉到一个节点处理,效率低下。
Q: 如果我的数据需要频繁更新,并且要求强一致性,这三个系统如何选择?
A: Apache Doris (Unique Key 模型) 和 HBase 都能满足。如果你的更新是 行级的、基于主键的,并且后续需要进行 复杂的 SQL 分析,选 Doris。如果你的更新是 高频的、简单的 KV 写入,并且只需要 通过 Key 进行快速查询,选 HBase。ClickHouse 应被排除。
Y 推荐文献
- Apache Doris Documentation — 官方文档是了解 Doris 最权威的途径。
- ClickHouse Documentation — ClickHouse 官方文档详尽地介绍了其引擎、函数和最佳实践。
- HBase Official Guide — HBase 的官方指南涵盖了从安装到高级特性的所有内容。
- Designing Data-Intensive Applications - O'Reilly — 这本书深刻阐述了不同数据系统的设计权衡,是理解 Doris/ClickHouse/HBase 差异的理论基础。
- Apache Doris vs ClickHouse Benchmark - VeloDB Blog — 一篇客观的性能对比文章,尤其关注实时更新场景。
X 参考文献
本文链接: https://chuna2.787528.xyz/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!

浙公网安备 33010602011771号