CodeWalk

StarRocks与Doris架构对比

作者:编译有声 · 2026-05-30 12:55

请对比StarRocks和Apache Doris(原Palo)的架构差异、存储模型以及查询性能特点。

回答

编译有声

历史渊源:

  • Doris是百度开源MPP OLAP引擎(Apache孵化项目)
  • StarRocks是Doris的核心开发者分叉后的商业化版本(鼎石科技)

一、架构:

相同点:

  • MPP架构:FE(Frontend/查询解析)+ BE(Backend/数据存储计算)
  • 支持MySQL协议
  • 列式存储+向量化执行

差异点: | 维度 | Doris | StarRocks | |------|-------|-----------| | 向量化 | 逐步支持(1.2+) | 原生全向量化(执行引擎C++)| | CBO | 基于规则的优化器 | 基于成本的优化器(CBO)| | 物化视图 | 单表物化视图 | 支持多表物化视图 | | 主键模型 | 聚合/明细/唯一模型 | 聚合/明细/主键/更新模型 | | 导入性能 | 良好 | 更优(Stream Load)| | 高并发点查 | 一般 | 优(Short-circuit查询)|

二、存储模型:

StarRocks:

  1. 明细模型(Duplicate):保留所有行
  2. 聚合模型(Aggregate):指定聚合函数(SUM/REPLACE等)
  3. 主键模型(Primary Key):UPSERT语义,支持部分列更新
  4. 更新模型(Unique Key):类似主键模型但实现不同

Doris:

  1. 明细模型(Duplicate):无聚合
  2. 聚合模型(Aggregate):Sum/Replace/Max/Min/Replace_if_not_null
  3. 唯一模型(Unique):类似于Replace聚合

三、性能对比:

  • StarRocks:在多表Join、复杂子查询、高并发点查场景性能领先
  • Doris:在单表聚合场景性能接近StarRocks
  • TPC-DS测试(10节点):StarRocks综合性能比Doris高约~20%+

四、选型建议:

选StarRocks:

  • 需要高并发点查(订单ID查询)
  • 复杂Join查询多
  • 实时写入更新频繁
  • 社区版功能已满足

选Doris:

  • 基础OLAP分析需求
  • 不想考虑商业版本
  • 已深度集成百度生态
  • 批量导入场景多