跳到主要内容

Apache Doris vs ClickHouse

Apache Doris 和 ClickHouse 都是全球领先的实时分析型数据库,均支持列式存储与极速查询。Apache Doris 在三个关键领域具有显著优势:Join 查询性能提升 2-10 倍(基于先进的 MPP 架构与基于成本的查询优化器)、通过存算分离降低高达 70% 的基础设施成本(支持计算与存储资源独立扩缩)、以及卓越的实时更新性能(写时合并引擎在高频数据更新时仍能保持稳定的查询性能)。

精选案例

tencent-music

"利用 Apache Doris 替换 ClickHouse 后,快手成功升级为湖仓一体架构,实现统一存储并简化数据链路,无需数据导入,Doris 可直接访问湖仓数据。结合 Doris 的物化视图改写与自动物化服务,实现了高性能查询与灵活的数据治理。"

亮点:

  • 直接查询数据湖数据,缩短数据链路
  • 查询性能提升,满足多场景查询加速
  • 借助物化视图,实现更灵活数据治理
tencent-music

"内容库数据平台经过分析引擎从 ClickHouse 到 Apache Doris 的替换、数据架构语义层的初步引入到深度应用,有效提高了数据时效性、降低了运维成本、解决了数据管理割裂等问题。"

亮点:

  • 具备多表查询和联邦查询性能特性
  • 兼容 MySQL 协议,降低运维成本
  • 支持部分列更新,满足多种数据更新方式
tencent-music

"我们用 Apache Doris 替换了 ClickHouse,构建了新的日志平台,目前规模已达 50 台服务器、2PB 数据量。此次架构升级后,系统在查询响应、并发处理、稳定性及运维效率等多方面均取得了显著提升。"

亮点:

  • 全文检索性能提升 3-7 倍
  • 峰值写入吞吐达 6GB/s
  • 支持 500+ 并发查询,较 ClickHouse 提升超 2 倍

为什么选择 Apache Doris

Apache DorisClickHouse
系统架构
  • 基于 MPP 架构
  • 兼容 MySQL 协议,提供标准 SQL
  • Scatter-Gather 架构
  • 类 SQL 语法且非标准 SQL 查询
Join 查询性能
  • Join 性能提升 2-10 倍,支持跨节点的真正分布式 Join 执行
  • 先进的基于成本的查询优化器(CBO),自动选择最优 Join 策略(Broadcast、Shuffle、Colocate)
  • Colocate Join 消除预分区表的网络 Shuffle 开销
  • Runtime Filter 下推可减少高达 90% 的数据扫描
  • 透明查询加速 - 对基表的查询自动改写为物化视图查询
  • 可执行 ClickHouse 中会导致 OOM 的复杂 TPC-DS 查询
  • Join 能力有限,依赖子查询和宽表建模
  • 无基于成本的查询优化器,需手动调优查询
  • Scatter-Gather 架构不适用于分布式 Join
  • 约 50% 的 TPC-DS 查询因不支持关联子查询而失败
  • 不支持自动查询改写,必须显式查询物化视图,无法加速对基表的查询
  • 大型多表查询频繁出现 OOM 错误
实时更新
  • 实时更新场景下查询性能是 ClickHouse 的 34 倍
  • 写时合并(Merge-on-Write)引擎配合删除位图,确保查询性能不受更新频率影响
  • 强一致性主键模型,更新后数据立即可见,无脏读
  • 支持高吞吐 UPSERT 操作,查询性能不会下降
  • 支持部分列更新,减少写放大
  • ReplacingMergeTree 仅支持最终一致性,后台合并完成前可能读到旧数据
  • 使用 FINAL 关键字获取一致性数据会导致 2-10 倍的查询性能下降
  • 高频更新导致大量合并开销和查询延迟波动
事务支持
  • 数据导入支持完整 ACID 事务
  • 原子性批量导入,数据要么全部成功要么全部失败
  • 两阶段提交确保分布式节点间的数据一致性
  • 不支持事务
  • 导入失败时可能出现部分数据可见
  • 需要应用层自行处理数据一致性
查询并发
  • 并发能力提升 10 倍以上,支持数千并发查询
  • 高效内存管理,高负载下避免 OOM
  • 查询队列管理与工作负载隔离
  • 并发查询支持有限(通常 <100)
  • 内存密集型查询导致集群不稳定
  • 无内置工作负载管理
数据 API
  • 提供基于 Arrow-Flight 协议的高吞吐量读取 API,便于与其他引擎集成(如数据科学 / AI 工具)
  • 仅支持低效的 JDBC API 进行数据读取
湖仓能力
  • 作为数据湖查询引擎,支持对 Hive、Hudi、Iceberg 和 Parquet 等数据湖格式查询
  • 湖仓集成能力有限
运维
  • 支持自动扩缩容与多副本平衡
  • 扩缩容期间需要手动平衡
性能测试
  • 在 ClickBench 测试中,Apache Doris 分别在 2022 年与 2024 年 十月进入榜单前三,测试结果超过 ClickHouse
  • 在 TPC-H 和 TPC-DS 测试中性能领先
  • 在 ClickBench 测试中,ClickHouse 与 Doris 轮流领先
  • 在 TPC-H 和 TPC-DS 测试中,ClickHouse 出现查询内存溢出(OOM)的问题
成本效益(存算分离)
  • 通过计算与存储独立扩缩,成本最高可降低 70%
  • 冷数据存储于低成本对象存储(S3、HDFS、OSS),热数据使用本地 SSD
  • 弹性计算扩缩,增减节点无需数据重平衡
  • 多级存储与自动数据冷热分层管理
  • 按需付费,只为实际使用的计算资源买单
  • 自 3.0 版本起,开源版本已支持存算分离
  • 存储与计算紧耦合,扩容需同时扩展两者
  • 存算分离仅在商业版 ClickHouse Cloud 中支持
  • 扩容需要昂贵的跨节点数据重平衡
  • 需过度配置计算资源以应对峰值负载
  • 变化型工作负载的总体拥有成本(TCO)更高
开源协议
  • 完全由 Apache 软件基金会托管的开源项目,许可证和治理均由社区共同维护,任何单一实体无法更改
  • 虽为开源,但由商业公司控制

性能对比

ClickBench 性能测试

ClickBench 是专用于评估分析型数据库性能的基准测试工具,其核心验证场景聚焦于海量宽表处理效能,而非复杂多表关联场景。该性能测试采用头部网络分析平台真实业务数据构建,覆盖点击流分析、结构化日志处理等典型 OLAP 应用场景。

测试体系由特定查询集合构成,重点验证聚合运算能力与单表处理性能(不涉及复杂表关联操作),因此该测试成为评估实时数据库的标准之一,尤其适用于验证系统在 PB 级数据规模下的数据处理与实时分析能力。

ClickBench  Benchmark

SSB-Flat SF100 性能测试

SSB-Flat SF100 是专为测试分析型数据库大宽表处理能力设计的性能测试。

该测试基于星型模式基准(SSB)改造,通过将星型结构扁平化为单一宽表,聚焦单表查询性能验证。其中 SF100 代表数据规模为基准量的 100 倍,可有效评估系统在超大规模数据下的查询效率与扩展能力。

ClickBench  Benchmark

TPC-H SF100 性能测试

TPC-H SF100 是业界公认的数据库性能测试标准,包含 22 条模拟真实企业场景的复杂 SQL 查询。SF100 代表数据规模为基准量的 100 倍,适用于在大规模数据场景下,检验查询性能的验证、评估系统扩展能力。

注:由于 ClickHouse 在测试过程中存在 7 个未能完成的查询,最终测试的总耗时结果为 Doris 完整执行 22 个查询的时间、ClickHouse 仅为成功执行 15 个查询的时间。

ClickBench  Benchmark

TPC-DS 1TB 性能测试

TPC-DS 1TB 是数据仓库与分析型数据库的权威性能测试,采用约 1TB 数据集(24 张表共约 63.5 亿条数据)构建雪花模型。

测试中涵盖 99 条复杂查询,以全面检验数据库在关联查询、聚合计算及嵌套子查询等场景的性能表现,模拟网络销售、门店销售等真实业务场景。

注:由于 TPC-DS 性能测试中使用了大量关联子查询,而 ClickHouse 在测试时(2024 年 9 月)尚未支持该功能,导致约半数查询无法执行。

ClickBench  Benchmark