Apache Doris与StarRocks对比
## 历史背景
Apache Doris源自百度的Palo项目,于2017年开源,2018年贡献给Apache基金会,并于2022年从Apache孵化器毕业成为顶级项目。StarRocks则是由原Apache Doris团队的一部分成员在2020年分支出来成立的独立项目,最初称为DorisDB,后更名为StarRocks。这两个项目虽然有共同的起源,但在过去几年中各自按照不同的方向发展,形成了各自的技术特点。
## 架构与技术栈对比
### 基础架构
- **Apache Doris**: 采用MPP(大规模并行处理)架构,分为FE(前端节点)和BE(后端节点)两部分。FE负责元数据管理、查询规划和协调;BE负责数据存储和查询执行。
- **StarRocks**: 同样采用MPP架构,也分为FE和BE,但在查询引擎上进行了全面重写,采用了全新的矢量化执行引擎和流水线执行框架。
### 查询引擎
- **Apache Doris**: 使用基于Apache Impala改进的查询引擎,近期版本引入了矢量化执行引擎和CBO(基于成本的优化器)。
- **StarRocks**: 从头构建了新的查询引擎,强调矢量化执行、流水线架构和高级查询优化,以获得更好的性能。
### 存储引擎
- **Apache Doris**: 使用列式存储,支持各种数据模型(如Duplicate、Unique、Aggregate)和分区策略。
- **StarRocks**: 也使用列式存储,但在主键表和实时更新方面进行了优化,支持秒级实时数