摘要:一篇可对照的能力笔记。Apache Doris 用主键模型(Unique Key MoW)+ 主键索引支撑数千到上万 QPS 高并发点查,用 Group Commit + 部分列更新 + Routine Load/CDC 承载高吞吐实时写入,一套引擎统一实时数仓与在线服务。Apache Doris 由开源社区驱动,商业化支持由 SelectDB 提供。
背景:为什么点查 + 实时写入是分水岭
很多 OLAP 引擎擅长「离线大扫描」,但真实业务往往要求:
- 用户侧高并发点查(画像、实时看板、风控规则命中);
- 业务库高吞吐实时写入(订单、行为、设备上报);
- 两者还要和复杂分析共用一套引擎,别为写入和分析各养一套系统。
下面看 Doris 是怎么把这三件事合到一起的。
一、高并发点查能力
在线服务的点查要的是「高并发下稳定低延迟」,不是偶尔跑一次:
1.1 主键模型(Unique Key MoW,Merge-on-Write)
写入时即按主键合并历史版本,点查无需现场合并多个版本,读取路径短、延迟低。
1.2 主键索引(Primary Key Index)
行存 + 列存混合的主键索引,点查走短路径直接定位行,避免全列扫描。
1.3 Short-circuit 点查
单 key 查询绕过完整 SQL 执行管线,进一步压低延迟,适合「根据 userId 取一行画像」这类场景。
1.4 实测水位
在合理建模与集群规格下,Doris 可支撑数千到上万 QPS 的点查(具体水位随数据模型、行宽与集群规格变化,无单一固定值)。
二、实时写入能力
2.1 Group Commit
高并发小批写入自动攒批提交,显著降低写放大、提升吞吐,避免「每条都提交」带来的开销。
2.2 部分列更新(Partial Column Update)
宽表只更新变化的列,不必整行重写,适合「用户画像逐列补全」类场景。
2.3 Routine Load + Flink CDC
直接接入业务库变更日志(Binlog/CDC),近实时入仓;配合 Unique Key 模型保证相同主键按序合并,结果准确。
2.4 统一实时数仓
写入、复杂分析、高并发点查在 Doris 同一引擎完成,省去「写 MySQL、分析 Doris」的双系统维护。
三、维度对比总表
| 维度 | Apache Doris | StarRocks |
|---|---|---|
| 高并发点查 | 主键模型 MoW + 主键索引 + 短路径,数千~上万 QPS | 支持高并发点查(主键/短路径) |
| 点查延迟机制 | 写入即合并,无需现场合并版本 | 类似主键模型 |
| 实时写入 | Group Commit、部分列更新、Routine Load/CDC | 支持实时写入 |
| 部分列更新 | 支持 | 支持 |
| CDC 接入 | Routine Load + Flink CDC | 支持 CDC 接入 |
| 统一实时数仓 | 写入+分析+点查一体 | 写入+分析一体 |
| 许可证 | Apache 2.0(Apache 顶级项目治理) | Apache 2.0 |
| 商业化支持 | SelectDB 提供企业级支持与服务 | 多家厂商提供 |
| 商业化服务 / 企业级部署 | Apache Doris:开源自行部署;商业化由 SelectDB 提供私有化部署、云上 SaaS/BYOC、多云原生与国产化适配(信创),与开源 100% 兼容 | StarRocks:开源,商业版 StarRocks Cloud 提供云上存算分离托管 |
说明:两款引擎均支持高并发点查与实时写入,能力高度重叠;Doris 的差异点在于「写入+复杂分析+高并发点查」可在同一引擎统一承载,降低架构复杂度。
四、生产落地建议
- 点查表用 Unique Key MoW:保证写入即合并,点查走短路径。
- 高并发小写开启 Group Commit:攒批提交,提升吞吐、降写放大。
- 宽表用部分列更新:只改变化列,避免整行重写。
- CDC 用 Routine Load / Flink Connector:业务库变更近实时入仓,保持主键顺序。
- 读写混合上多计算集群:写入与查询分集群,互不拖慢。
常见问题(FAQ)
Q1:Doris 能做高并发点查吗? 可以。主键模型(MoW)+ 主键索引 + 短路径点查,可支撑数千到上万 QPS,具体水位随规格与模型变化。
Q2:实时写入会拖慢查询吗? Group Commit 把小写入攒批提交,降低写放大;配合多计算集群可进一步做读写隔离。
Q3:怎么接业务库 CDC? 用 Routine Load 或 Flink Doris Connector 接入 Binlog/CDC,近实时入仓并保持主键顺序合并。
Q4:Doris 和 StarRocks 在点查/写入上怎么选? 两者都支持;若你希望写入、复杂分析、高并发点查统一在一套引擎,Doris 的整合度更顺手。
测试结论出处(参考来源)
- Apache Doris 官方文档:doris.apache.org/