StarRocks 调研:12K stars 的亚秒级 MPP 查询引擎,从 Doris fork 到 Linux Foundation,跟 ClickHouse / Doris 的三强对决到底香在哪里

25次阅读
StarRocks 调研:12K stars 的亚秒级 MPP 查询引擎,从 Doris fork 到 Linux Foundation,跟 ClickHouse / Doris 的三强对决到底香在哪里

StarRocks® 是一款面向数据湖仓的下一代亚秒级 MPP 查询引擎。2020 年从 Apache Doris fork 出走重构,2021 年仓库建立,2024 年正式进入 Linux Foundation 治理 。5 年间凭借 全面向量化执行 + CBO + 智能物化视图 + 湖仓原生集成,在 SSB benchmark 上跑出 ClickHouse 2.1 倍 / Apache Druid 8.7 倍 的性能,稳坐新一代实时数仓 / 数据湖仓的头把交椅。本文带你深入 StarRocks 的核心能力、架构演化、跟 Doris 的恩怨情仇,以及它跟 ClickHouse / Apache Doris / Trino / Snowflake 的对比选型。

写在前面

OLAP 引擎这两年竞争越来越卷——ClickHouse / Doris / StarRocks / Trino / Druid / Snowflake / Databricks,每个名字背后都是一篇技术长文 + 一份 benchmark 报告 + 一场架构师之间的圣战。

StarRocks 的故事特别有意思

  • 2020 年,Apache Doris 团队的核心开发者 fork 出走,因为对 Doris 演化方向有分歧
  • 团队 fork 后 完全重构内核(FE + BE 双层架构 → 单一 CBO 驱动架构)
  • 2021 年 9 月在 GitHub 开源 StarRocks 仓库
  • 2024 年正式捐赠给 Linux Foundation,成为顶级项目
  • 2026 年 12K stars + Apache-2.0 ✅ + LF 治理——稳坐新一代 MPP 数仓的头把交椅

池子里标的 ”ELv2 ⚠️” 是错的 ——实际从 2024 年起就是 Apache-2.0 + Linux Foundation 治理, 零商用风险

一、它解决什么问题

一句话 :StarRocks 让你在 TB 到 PB 级 数据上做 亚秒级到秒级 多维 / 实时 / ad-hoc查询——单表快、多表 JOIN 更快、高并发点查也很强

场景 例子 StarRocks 表现
实时数仓 订单 / 用户行为 / GMV 实时分析 实时更新 + 物化视图,毫秒级响应
多维分析 GMV 按地区 / 品类 / 时间多维聚合 CBO + 智能物化视图,亚秒级
高并发点查 用户查询自己的订单详情 主键模型 + 索引,10K+ QPS
数据湖查询 Iceberg / Delta Lake / Hudi 湖仓原生集成,零数据迁移
Ad-hoc 查询 分析师临时写 SQL 查数据 MySQL 兼容 + CBO + 向量化
报表系统 BI 报表后端查询 MySQL 协议兼容,跟 Superset / Tableau 对接

基本信息

维度 数据
GitHub StarRocks/starrocks
Stars 12,013(比池子里标的 9K 多 33%)
Forks 2,527
Open Issues 1,306(健康)
License Apache-2.0 ✅(池子里标的 ELv2 ⚠️ 是错的,已 LF 治理)
首次 commit 2021-09-04(仓库起始,项目实际从 2020 fork Doris 起算
最近 commit 2026-08-16(今天还在推代码
仓库大小 815 MB
主语言 Java 80%+(不再是 Doris 时代的 C++)
项目状态 Linux Foundation 项目2024 捐赠 LF
自我定位 “world’s fastest open query engine for sub-second analytics”
商业实体 StarRocks Inc.(CelerData 收购前核心团队运营)

二、核心能力全景:8 大特性

1. 全 MPP 架构(Massively Parallel Processing)

┌──────────────────────────────────────┐
│         StarRocks Cluster            │
│                                      │
│   ┌──────────┐    ┌──────────┐        │
│   │    FE    │    │    BE    │        │
│   │ (Frontend)│    │ (Backend)│        │
│   │  多个     │◄──►│  多个     │        │
│   │  无状态   │    │  有状态   │        │
│   └──────────┘    └──────────┘        │
│         ▲                  ▲         │
└─────────┼──────────────────┼─────────┘
          │                  │
       ┌──┴──┐           ┌───┴───┐
       │ MySQL│           │  ES   │
       │ 协议 │           │ Kafka │
       └─────┘           └───────┘
  • FE(Frontend):SQL 解析 + 优化 + 元数据管理 + 调度(无状态可横向扩展
  • BE(Backend):数据存储 + 计算 + 索引(有状态,自动均衡
  • 解耦架构:FE / BE 可独立扩缩容

2. 全面向量化执行(Fully Vectorized Execution)

StarRocks 是 全链路列式向量化

向量化
存储 列式 + 按列压缩
内存 列式内存布局
计算 所有算子向量化(Scan / Join / Aggregate / Sort / Shuffle)

跟 Doris 时代的 ” 按算子向量化 ” 不同,StarRocks 从存储到计算全面向量化——这是性能 2.1x ClickHouse 的根本原因。

3. CBO 优化器(Cost-Based Optimizer)

StarRocks 内置 完全可定制的 CBO

  • 统计信息收集(ANALYZE TABLE)
  • Join 重排(自动选择最优 Join 顺序)
  • 谓词下推(把 WHERE 推到存储层)
  • 分区裁剪(跳过无关分区)
  • 物化视图自动选择(智能推荐最佳物化视图)
  • CTE 优化 / Subquery 改写 / 聚合下推

4. 智能物化视图(Intelligent Materialized View)⭐ 差异化

StarRocks 的物化视图是 实时增量更新 + 自动推荐

-- 创建物化视图(自动增量刷新)CREATE MATERIALIZED VIEW mv_order_summary
DISTRIBUTED BY HASH(order_date)
AS SELECT
    order_date,
    region,
    COUNT(*) AS order_count,
    SUM(amount) AS total_amount
FROM orders
GROUP BY order_date, region;

-- 查询时自动选择最佳物化视图
SELECT order_date, region, SUM(amount)
FROM orders
WHERE order_date >= '2026-01-01'
GROUP BY order_date, region;
-- StarRocks 自动改写为 mv_order_summary,毫秒级返回

对比 Doris 的物化视图是 全量刷新 ,StarRocks 是 实时增量——这是关键差异化。

5. 实时更新(Real-time Updates)

三种数据模型

模型 用途 特点
Duplicate Key 明细数据 类似 ClickHouse,支持任意列排序键
Unique Key 主键唯一数据 类似 Doris Unique,支持 UPSERT
Aggregate Key 预聚合数据 类似 ClickHouse AggregatingMergeTree

主键模型(Primary Key) 是 StarRocks 2.0+ 的 重磅特性

CREATE TABLE orders (
    order_id BIGINT,
    user_id BIGINT,
    amount DECIMAL(10,2),
    status VARCHAR(20),
    updated_at DATETIME
) PRIMARY KEY (order_id)
DISTRIBUTED BY HASH(order_id);

-- 支持 UPDATE / DELETE
UPDATE orders SET status = 'paid' WHERE order_id = 123;

6. 数据湖仓原生集成(Lakehouse Native)⭐ 2024+ 重点

零数据迁移直接查数据湖

表格式 集成度 说明
Apache Iceberg ⭐⭐⭐ 深度集成 优化 partition prune + 谓词下推
Delta Lake ⭐⭐⭐ 深度集成 支持 time travel
Apache Hudi ⭐⭐ 支持 Copy-on-Write + Merge-on-Read
-- 直接查 Iceberg 表(零迁移)SELECT * FROM iceberg_catalog.sales.orders
WHERE order_date >= '2026-01-01';

-- 外部表 + 物化视图(湖仓分层)CREATE MATERIALIZED VIEW mv_lake_summary
REFRESH ASYNC EVERY 10 MINUTE
AS SELECT ... FROM iceberg_catalog.sales.orders;

StarRocks = 数据仓库(存 + 查)+ 数据湖(直接查)+ 数据湖仓(统一) 三位一体

7. MySQL 协议兼容

StarRocks 完全兼容 MySQL 5.7 协议——MySQL 客户端直接连:

mysql -h starrocks-host -P 9030 -u root

# 跟 MySQL 用法几乎一样
SHOW DATABASES;
SHOW TABLES;
SELECT ... FROM ... ;

优势
– 跟 MySQL 客户端 / 工具 / ORM 兼容
– 跟 BI 工具无缝对接(Superset / Tableau / Metabase)
– 跟 MySQL 生态共享大量工具

8. 云原生架构

  • Kubernetes Operator(starrocks-kubernetes-operator)
  • 存算分离(Shared-nothing → Shared-data,2024 推出)
  • 多云支持:AWS / GCP / Azure / Aliyun

三、差异化能力:跟 Doris 的恩怨情仇

1. 起源:Doris 团队 fork 出走(2020)

2017 - 百度 Doris 开源(Apache 顶级项目)↓
2018-2020 - Doris 社区爆发式增长
        ↓
2020 - ** 核心开发者 fork 出走 **,创立 StarRocks 项目(原因:对 Doris 演化方向、性能优化、架构设计有分歧)↓
2021-09 - GitHub 仓库建立,StarRocks 1.x 系列
        ↓
2022-2023 - StarRocks 2.x / 3.x:主键模型 + 物化视图 + 向量化重构
        ↓
2024 - ** 正式捐赠 LF** + Apache-2.0 ✅ + LF 治理
        ↓
2026 - 12K stars + LF 顶级项目

2. 跟 Doris 的核心差异

维度 StarRocks Apache Doris
出身 Doris fork(2020) 百度原生(2017)
主语言 Java 80% C++ 70% + Java 30%
架构 单一 CBO 驱动 FE/BE 经典 MPP
向量化 全链路向量化 算子向量化(v1.x)
物化视图 实时增量 + 自动推荐 全量刷新 + 手动选择
湖仓集成 原生 Iceberg/Delta/Hudi 实验性
存算分离 ✅ 2024 推出 ⚠️ 部分支持
主键模型 ✅ Primary Key 模型 ✅ Unique Key 模型
License Apache-2.0 ✅(2024+) Apache-2.0 ✅
治理 Linux Foundation Apache 顶级项目
中文社区 活跃 更活跃
生态成熟度 较新 更成熟
性能(SSB) 比 ClickHouse 快 2.1 倍 跟 ClickHouse 接近
国际化 较高 集中在中文圈

3. 性能对比(SSB benchmark,重要数据点)

系统 性能(13 查询 SSB 单表)
StarRocks 2.1 倍 ClickHouse / 8.7 倍 Druid
StarRocks + Bitmap Index 2.8 倍 ClickHouse / 11.4 倍 Druid
ClickHouse 1x(参考基线)
Apache Druid 0.26x(比 StarRocks 慢 3.8 倍)

注意 :ClickHouse 在 SSB 里需要把星型模型打平成宽表才能跑——StarRocks 是直接跑星型模型, 真实场景优势更明显

4. 商业化:CelerData 收购风波

  • 2020-2023:StarRocks Inc. 运营
  • 2023-2024CelerData 收购 核心团队(运营 / 商业化)
  • 2024:CelerData 主导 LF 捐赠,开源 + 商业双轨

跟 Doris 的 SelectDB 类似——开源 + 商业版并存。

四、生态系统:LF 治理 + 湖仓原生 + 商业化

1. 出身体系

2017 - Apache Doris 起源(百度)2020 - StarRocks 团队 fork 出走
2021 - GitHub 仓库建立
2024 - LF 捐赠 + Apache-2.0
2026 - LF 顶级项目 · 12K stars

2. 湖仓生态集成

集成 详情
Apache Iceberg ⭐⭐⭐ 深度集成,partition prune + 谓词下推
Delta Lake ⭐⭐⭐ 支持 time travel + schema 演化
Apache Hudi ⭐⭐ Copy-on-Write + Merge-on-Read
Apache Hive ⭐⭐ 经典集成
Apache Paimon ⭐⭐ 2024+ 集成(流式湖仓)

3. 数据源 / 数据汇集成

类型 支持
消息队列 Kafka / Pulsar(Routine Load)
数据库 MySQL / PostgreSQL / Oracle(CDC)
文件 S3 / HDFS / OSS / COS
实时 Flink CDC(跟 322 ClickHouse + 326 Airbyte 配套

4. 工具链集成

工具 集成
Apache Superset (270) ✅ MySQL 协议直接对接
Metabase (274) ✅ MySQL 协议
Tableau / Power BI ✅ MySQL 协议
dbt (290) ✅ dbt-starrocks adapter
Apache Airflow (306) ✅ StarRocks operator
Flink CDC ✅ 实时数据同步

5. 用户案例(生产级)

公司 规模 用途
小米 内部 实时数仓,亿级 QPS
腾讯 内部 实时分析
字节跳动 内部 数据分析
Shopee 内部 实时数仓
Airbnb 内部 数据分析
Booking.com 内部 数据湖仓

五、对比 ClickHouse / Apache Doris / Trino / Snowflake

维度 StarRocks ClickHouse Apache Doris Trino Snowflake
Stars 12,013 49,269 ~30K 13K 闭源
协议 Apache-2.0 ✅ Apache-2.0 ✅ Apache-2.0 ✅ Apache-2.0 ✅ 闭源
出身 Doris fork Yandex 百度 Facebook 商业
类型 MPP 数仓 列存 OLAP MPP 数仓 查询引擎 云数仓
存储数据 ❌ 不存
湖仓集成 原生 ⚠️ 实验 ✅ 中等 ✅ 强 ✅ 强
多表 JOIN 极强 ⚠️ 弱 ✅ 强 ✅ 强 ✅ 强
高并发点查 ✅ 强 ⚠️ 中等 ✅ 强 ⚠️ 中等 ✅ 强
单表聚合 ✅ 极快 王座 ✅ 极快 ⚠️ 中等 ✅ 极快
实时更新 ✅ Primary Key ✅ ReplacingMergeTree ✅ Unique Key
物化视图 实时增量 ⚠️ AggregatingMergeTree ⚠️ 全量刷新 ✅ Iceberg MV ✅ Dynamic Table
MySQL 兼容 ✅ 完全 ✅ 完全
运维 ⚠️ 中等 ⚠️ 中等 ✅ 简单 ⚠️ 中等 ✅ 零运维
LF 治理 ✅ LF(2024) ❌ 独立 ✅ Apache ✅ LF ❌ 商业
商业版 CelerData ClickHouse Inc. SelectDB Starburst Snowflake

结论怎么选

你的场景 选谁
湖仓原生 + 多表 JOIN + 高并发点查 + MySQL 兼容 StarRocks
极致单表聚合 / 时序 / IoT ClickHouse
Apache 顶级 + 中文社区 + 简单运维 + 完整生态 Apache Doris
联邦查询 + 数据湖 + 30+ 数据源 Trino
云原生零运维 + 全托管 Snowflake / Databricks
想升级 Doris 但要新架构 StarRocks(fork 自 Doris 但内核完全重构)

对比已调研的飞熊 8 月 BI 栈

已调研项目 跟 StarRocks 的关系
ClickHouse (322) 直接对标——ClickHouse 强在单表聚合,StarRocks 强在多表 JOIN + 高并发
Apache Doris (296) 同门——StarRocks 是 Doris fork 出走的,性能更强但生态更年轻
Trino (328) 互补——Trino 联邦查询(不存),StarRocks MPP 数仓(存 + 查)
Apache Superset (270) / Metabase (274) 完美兼容——StarRocks 兼容 MySQL 协议,BI 工具直接对接
dbt-core (290) 完美集成——dbt-starrocks adapter
Airflow (306) 上游编排——Airflow 调度 StarRocks Routine Load
Airbyte (326) 上游 ETL——Airbyte 拉数据 → StarRocks 存储查询
Apache ECharts (324) 下游可视化——ECharts 渲染 StarRocks 查询结果
Great Expectations (262) 并行质量——GE 校验 StarRocks 入仓数据
DataHub (330) 元数据集成——DataHub ingestion StarRocks catalog
WrenAI (316) / DB-GPT (318) / Evidence (314) 下游分析——AI 原生 BI 工具查 StarRocks 数据

StarRocks 在飞熊 BI 栈的位置

数据源(API/DB/Files/Kafka)↓
Airbyte (326)  ── ETL ──►  数据湖(Iceberg / Delta Lake)↓
                          Trino (328) 联邦查询
                              ↓
                    dbt (290) ── 转换 ──►  StarRocks (MPP 数仓,存 + 查)
                              ↓
                  Superset (270) / Metabase (274) / Lightdash (272) / Evidence (314) / WrenAI (316) / DB-GPT (318)
                              ↓
                          ECharts (324) [渲染]
                              ↓
                  DataHub (330) ── 元数据 + AI 上下文

StarRocks 是数据流水线里“MPP 数仓 ” 那一站 **——跟 ClickHouse(322) 形成 ” 亚秒级实时数仓 vs 单表聚合王者 ” 的二选一,跟 Apache Doris(296) 形成 ” 新架构 vs 老生态 ” 的二选一。

六、实战:3 步跑通 StarRocks

Step 1:本地安装(Docker Compose)

# 1. 克隆仓库
git clone https://github.com/StarRocks/starrocks.git
cd starrocks/docker/docker-compose

# 2. 启动(单节点 1 FE + 1 BE)docker compose up -d

# 3. MySQL 客户端连接
mysql -h 127.0.0.1 -P 9030 -u root
# 默认无密码

Step 2:创建表 + 导入数据

-- 1. 创建数据库
CREATE DATABASE IF NOT EXISTS ecommerce;

-- 2. 创建主键模型表(实时更新)CREATE TABLE ecommerce.orders (
    order_id BIGINT NOT NULL,
    user_id BIGINT NOT NULL,
    amount DECIMAL(10, 2) NOT NULL,
    region VARCHAR(20) NOT NULL,
    status VARCHAR(20) NOT NULL,
    order_date DATE NOT NULL,
    updated_at DATETIME NOT NULL
) PRIMARY KEY (order_id)
DISTRIBUTED BY HASH(order_id)
PROPERTIES (
    "replication_num" = "1",
    "enable_persistent_index" = "true"
);

-- 3. 创建物化视图(智能增量)CREATE MATERIALIZED VIEW ecommerce.mv_order_summary
DISTRIBUTED BY HASH(order_date)
REFRESH ASYNC EVERY 10 MINUTE
AS SELECT
    order_date,
    region,
    COUNT(*) AS order_count,
    SUM(amount) AS total_amount
FROM ecommerce.orders
GROUP BY order_date, region;

-- 4. 从 MySQL 导入
CREATE EXTERNAL TABLE ecommerce.orders_ext (
    order_id BIGINT,
    user_id BIGINT,
    amount DECIMAL(10, 2),
    region VARCHAR(20),
    status VARCHAR(20),
    order_date DATE,
    updated_at DATETIME
) ENGINE=MYSQL
PROPERTIES (
    "host" = "mysql-host",
    "port" = "3306",
    "user" = "root",
    "password" = "***",
    "database" = "orders_db",
    "table" = "orders"
);

INSERT INTO ecommerce.orders SELECT * FROM ecommerce.orders_ext;

Step 3:湖仓查询(Iceberg)

-- 1. 创建 Iceberg Catalog
CREATE EXTERNAL CATALOG iceberg_catalog
PROPERTIES (
    "type" = "iceberg",
    "iceberg.catalog.type" = "hive",
    "hive.metastore.uris" = "thrift://metastore-host:9083"
);

-- 2. 直接查 Iceberg 表(零迁移)SELECT
    order_date,
    region,
    SUM(amount) AS total_amount
FROM iceberg_catalog.sales.orders
WHERE order_date >= '2026-01-01'
GROUP BY order_date, region
ORDER BY order_date DESC, total_amount DESC
LIMIT 100;

-- 3. Iceberg + 物化视图(湖仓分层)CREATE MATERIALIZED VIEW iceberg_catalog.sales.mv_summary
REFRESH ASYNC EVERY 5 MINUTE
AS SELECT
    DATE_TRUNC('month', order_date) AS month,
    region,
    SUM(amount) AS revenue
FROM iceberg_catalog.sales.orders
GROUP BY 1, 2;

七、风险与坑

1. ⚠️ License 风险解读(重要!)

  • 池子里标的 “ELv2 ⚠️” 是错的!实际从 2024 年捐赠 LF 起就是 Apache-2.0 ✅
  • 零商用风险——可以放心用于商业产品

风险缓解:直接看 GitHub LICENSE.txt 确认是 Apache-2.0

2. 主语言是 Java(不是 C++)

跟 Apache Doris(C++ 主)不同——StarRocks 完全 Java 重构。

优势 :招人容易(Java 工程师池子大)
劣势:JVM GC 调优需要经验

3. 运维复杂度中等

需要 1 FE + N BE 集群模式,配置调优比 ClickHouse 复杂。

缓解:用 CelerData Cloud(托管)/ Kubernetes Operator

4. 1,306 open issues

主要是 feature request + 边缘场景 bug。

5. 跟 Doris 的认知混淆

很多人误以为 StarRocks = Doris 的升级版——实际上是完全不同的内核架构

澄清 :StarRocks 团队 fork 自 Doris 项目,但代码完全重写,是 新一代 MPP 引擎

6. 中文社区活跃但国际化较弱

相比 Apache Doris(Apache 顶级项目),StarRocks 在西方开发者中知名度较低。

现状:2024 LF 捐赠后国际化加速

7. 商业版(CelerData)vs 开源版功能差异

CelerData 商业版有一些高级功能(多集群 / 跨云 / 备份)——开源版正在补齐中。

8. 资源占用

BE 节点内存压力大——复杂查询(如大表 JOIN)需要 32-64 GB/ 节点。

八、总结

StarRocks 不是 ”Doris 的小版本升级 ”——它是 Doris 团队 fork 后完全重构的新一代 MPP 数仓引擎,性能 / 架构 / 湖仓集成都有质的飞跃。

3 个最值得用的理由

  1. 性能王者:SSB benchmark 2.1 倍 ClickHouse / 8.7 倍 Druid——单表 + 多表 JOIN 都很强
  2. 湖仓原生 + 实时更新:Apache-2.0 ✅ + Iceberg / Delta / Hudi 原生集成 + 主键模型实时更新
  3. MySQL 兼容 + LF 治理:跟 MySQL 协议完全兼容 + 跟 Apache Doris(296) / Superset(270) / Metabase(274) / dbt(290) / Airflow(306) 天然适配

1 句建议

如果你的场景是湖仓 + 多表 JOIN + 高并发点查 + MySQL 兼容——用 StarRocks(Apache-2.0 ✅ / 12K stars / LF 治理 / CelerData 商业)。

如果你的场景是极致单表聚合 / 时序 / IoT——看 ClickHouse (322)

如果你的场景是 Apache 顶级 + 中文社区 + 简单运维 + 完整生态——看 Apache Doris (296)

如果你的场景是联邦查询 + 数据湖 + 30+ 数据源——看 Trino (328)

飞熊做技术咨询,如果客户的数仓是 数据湖仓架构 (Iceberg + 实时更新 + MySQL 兼容),StarRocks 是 2026 年 最值得推荐 的新一代 MPP 引擎——比 Doris 新、比 ClickHouse JOIN 强、比 Snowflake 开源便宜。


参考

正文完