跳到主要内容

OLAP 引擎对比与选型

问题

ClickHouse、Doris、StarRocks、Druid 等 OLAP 引擎如何选择?

答案

主流引擎总览

引擎架构核心优势核心劣势
ClickHouseShared Nothing极致单表聚合性能JOIN 弱、运维复杂
Apache DorisMPP(FE+BE)简单运维、MySQL 兼容生态较 CH 小
StarRocksMPP(FE+BE)功能丰富、查询优化器强商业版本差异
Apache DruidLambda实时摄入、亚秒级时序查询SQL 能力弱
Presto/TrinoMPP 查询引擎跨源联邦查询无自有存储
Spark SQL批处理引擎大规模 ETL + 分析延迟高

决策流程

详细对比

维度ClickHouseDorisStarRocksDruid
单表性能⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
JOIN 性能⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
实时写入⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
SQL 兼容⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
运维难度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
更新能力⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
生态成熟⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
中国社区⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

典型场景推荐

场景推荐引擎理由
大宽表聚合分析ClickHouse单表性能最强
BI 看板 + MySQL 工具链DorisMySQL 协议兼容
多表 JOIN 分析StarRocksMPP + 优化器强
实时事件统计Druid亚秒级实时摄入
跨数据源查询Trino联邦查询引擎
数仓 ETL 后的分析Spark + Parquet批处理生态成熟
数据量较小(< 1TB)PostgreSQL避免过度架构

混合架构

生产中常见的组合
  • Flink + Doris:实时数仓(Flink 做 ETL,Doris 做查询)
  • Spark + ClickHouse:离线数仓(Spark 做 ETL,ClickHouse 做分析)
  • Trino + 数据湖:湖仓一体(Trino 查询 Iceberg/Hudi)
  • Doris + Elasticsearch:OLAP + 全文搜索

常见面试问题

Q1: 如何评估和验证选型?

答案

  1. 明确需求:查询模式(聚合/JOIN/点查)、数据量、延迟要求、并发量
  2. PoC 测试:用真实数据和查询跑 Benchmark
  3. 评估运维:团队能否驾驭(ClickHouse 运维成本高于 Doris)
  4. 评估生态:与现有 BI 工具、ETL 工具的集成
  5. 评估成本:硬件、人力、商业授权

Q2: ClickHouse 和 Doris 有什么本质区别?

答案

维度ClickHouseDoris
架构单机极致 + 分布式扩展原生 MPP 分布式
JOIN基于子查询Shuffle / Broadcast JOIN
更新异步 Merge主键模型实时更新
运维ZooKeeper 依赖无外部依赖
优化器规则优化为主CBO 代价优化

Q3: 什么时候不需要专门的 OLAP 引擎?

答案

  • 数据量 < 100GB:PostgreSQL 配合索引和物化视图足够
  • 团队小、数据量不大:DuckDB(嵌入式 OLAP)
  • 已有数仓 + BI:直接在现有数仓上查询

相关链接