StarRocks与Doris架构对比
请对比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:
- 明细模型(Duplicate):保留所有行
- 聚合模型(Aggregate):指定聚合函数(SUM/REPLACE等)
- 主键模型(Primary Key):UPSERT语义,支持部分列更新
- 更新模型(Unique Key):类似主键模型但实现不同
Doris:
- 明细模型(Duplicate):无聚合
- 聚合模型(Aggregate):Sum/Replace/Max/Min/Replace_if_not_null
- 唯一模型(Unique):类似于Replace聚合
三、性能对比:
- StarRocks:在多表Join、复杂子查询、高并发点查场景性能领先
- Doris:在单表聚合场景性能接近StarRocks
- TPC-DS测试(10节点):StarRocks综合性能比Doris高约~20%+
四、选型建议:
选StarRocks:
- 需要高并发点查(订单ID查询)
- 复杂Join查询多
- 实时写入更新频繁
- 社区版功能已满足
选Doris:
- 基础OLAP分析需求
- 不想考虑商业版本
- 已深度集成百度生态
- 批量导入场景多