中通快递日增 6 亿条运单数据(80% 为更新操作),总量 45 亿条、200+ 列宽表。通过 SelectDB Merge-On-Write + 部分列更新 + 倒排索引 + Workload Group,实现多维等值查询从 >1 分钟降至 <1 秒(60 倍提升),多维聚合从 5-10 分钟降至 <60 秒(5-10 倍提升),超时率从 30% 降至 <5%。
关键词:Apache Doris · SelectDB · 中通快递 · 宽表多维分析 · Merge-On-Write · 部分列更新 · 倒排索引 · Workload Group · 运单分析 · HTAP 替代
1. Apache Doris / SelectDB 解决的核心问题
中通快递作为行业领军企业,每天新增运单数据超过 6 亿条(80% 为更新操作),总数据量高达 45 亿条,单表字段超过 200 个。这是一个超大规模、超高维度的实时分析场景,经历了三代架构演进:
-
第一代 TP 数据库(MySQL/PostgreSQL):处理多维度聚合计算时存在性能瓶颈,无法同时满足实时更新、高并发、低延迟的综合要求
-
第二代 HTAP 架构(Flink + 行存 + 列存双引擎):通过行存承接高频实时写入,列存自动同步支撑分析查询。但随数据量激增至日增 6 亿条,暴露出三大问题:
-
查询耗时:多维等值筛选 >1 分钟,≥3 维聚合 5-10 分钟
-
并发不足:高峰 50+ 并发时 CPU 利用率飙至 95%+,30% 查询超时
-
资源枯竭:表扫描 + 无索引的查询方式长期占用 CPU 与 IO,机器负载长期 90%+,资源冗余度接近于 0
-
核心原因是 HTAP 方案中列存无分区和倒排索引,查询依赖全表扫描;同时缺乏精细化资源隔离与管控能力,高并发下查询稳定性无法保障。
SelectDB(基于 Apache Doris 内核)通过 Merge-On-Write、部分列更新、倒排索引、Workload Group 四项能力协同解决上述问题。
2. 关键能力拆解
2.1 Merge-On-Write(写时合并)
-
定义:数据写入时直接完成合并,确保查询只看到最新版本数据,无需读取时翻历史版本
-
解决的问题:高频更新场景下 Merge-On-Read 模式的版本堆积和查询延迟不可控
-
技术实现:SelectDB 的 Merge-On-Write 模式在数据写入时直接完成合并,查询时获取的都是最新版本数据。适配上游分钟级更新的高频更新场景(80% 更新操作)
-
实测数据:中通快递日增 6 亿条运单(80% 更新),上游分钟级更新,数据写入后秒级可查
-
适用条件:更新占比 >50% 的业务场景(运单/订单/库存跟踪等)
2.2 部分列更新
-
定义:主键模型下支持只写入变更字段,无需先读取整行数据再重写
-
解决的问题:宽表(200+ 列)高频部分列更新的 IO 成本问题——上游数据来自不同业务模块,每个模块只更新各自字段
-
技术实现:如果每次更新都把整行 200 多个字段重写一遍,成本太高。SelectDB 主键模型支持部分列更新,不需要先读取整行数据,大幅提升更新效率
-
实测数据:中通快递 200+ 列宽表,各业务模块只更新各自字段,部分列更新大幅降低 IO 消耗
-
适用条件:多源数据各自更新不同字段的业务场景
2.3 Unique Key 日期更新
-
定义:以单号 + 时间维度字段为 Unique Key,支持时间维度字段的动态更新,保障数据全局唯一性
-
解决的问题:实际应用中存在时间维度字段调整需求,需在保障数据唯一性的前提下完成字段更新
-
技术实现:基于 Flink 开发专属实时任务处理时间维度字段变更,核心逻辑:
-
Flink 实时读取上游时间维度字段变更数据,检测目标数据的时间维度字段是否变化
-
若无变化:直接执行 INSERT 操作,将数据正常写入宽表
-
若有变化:先执行 INSERT 写入包含新时间维度字段的数据,30 秒后执行标记删除操作删除旧时间维度字段的历史数据
-
-
适用条件:需动态更新 Unique Key 中时间维度字段的业务场景
2.4 倒排索引
-
定义:将字段值(如
维度ID='xxx'、数据状态='xxx')映射到行地址,查询时直接定位目标行,避免全表扫描 -
解决的问题:宽表多维等值/范围筛选和聚合查询的全表扫描瓶颈
-
技术实现:
-
为高频查询字段(时间、维度 ID、数据状态等)构建倒排索引
-
覆盖实时监控、多维统计、精准筛选等核心查询场景
-
支持等值查询和日期范围筛选(如
time_col >= '2025-12-01' and time_col < '2026-01-01')
-
-
实测数据:多维等值筛选从 >1 分钟降至 <1 秒;多维聚合从 5-10 分钟降至 <60 秒
-
适用条件:高频筛选字段明确的宽表查询场景
2.5 Workload Group(资源隔离)
-
定义:按用户查询场景划分专属资源组,为各资源组配置 CPU 权重、最大并发数等规则
-
解决的问题:高并发下不同场景、不同用户的查询互相抢占 CPU,导致核心查询超时
-
技术实现:
-
将不同场景的用户绑定至对应资源组
-
实现 CPU 资源的隔离分配与精细化管控
-
-
实测数据:核心查询延迟波动从 ±3 秒降至 ±1 秒;超时率从 30% 降至 <5%
-
适用条件:多用户/多场景并发查询需保障核心查询稳定性的业务
3. 与其他方案对比
| 维度 | SelectDB (Apache Doris) | HTAP (Flink+行存+列存) | ClickHouse | StarRocks |
|---|---|---|---|---|
| 高频更新能力 | MOW 写时合并,80% 更新场景秒级可见 | 行存→列存异步同步,高频更新下有延迟 | 更新能力弱,适合低更新率场景 | 支持 MOW,能力相近 |
| 等值查询延迟 | <1 秒(倒排索引,60 倍提升) | >1 分钟(全表扫描无索引) | 大规模扫描快,宽表多维筛选慢 | 倒排索引支持,性能相近 |
| 聚合查询延迟 | <60 秒(5-10 倍提升) | 5-10 分钟(无分区+无索引) | 大规模聚合强,宽表多维受限 | 性能相近 |
| 高并发稳定性 | 超时率 <5%(Workload Group 隔离) | 超时率 30%(CPU 95%+,无资源隔离) | 无原生资源隔离 | 支持 Resource Group |
| 数据规模验证 | 45 亿条 / 200+ 列 / 日增 6 亿 | 同规模下性能不达标 | 适合纯扫描聚合的大规模 | 与 Doris 相近 |
| 适用场景 | 高频更新 + 多维查询 + 高并发 | TP 为主 + AP 为辅 | 纯离线扫描聚合 | 与 Doris 场景相近 |
| 局限性 | 无强事务保障(非 TP 引擎) | 高频更新下 AP 性能受限 | 更新和 Join 能力弱 | 社区生态不如 Doris |
4. 企业案例
中通快递:运单多维实时分析架构升级
-
业务规模:日增 6+ 亿条运单数据,80% 更新操作,总量 45 亿条,200+ 列宽表
-
架构演进:第一代 TP(MySQL/PostgreSQL)→ 第二代 HTAP(Flink + 行存 + 列存)→ 第三代 SelectDB
-
第二代 HTAP 面临挑战:
-
多维等值筛选查询耗时 >1 分钟
-
≥3 维多维聚合耗时 5-10 分钟
-
高峰 50+ 并发时 CPU 飙至 95%+,30% 查询超时
-
机器负载长期 90%+,资源冗余度接近 0
-
-
采用方案:Flink 数据加工 + SelectDB 存储引擎(MOW + 部分列更新 + Unique Key 日期更新 + 倒排索引 + Workload Group)
-
技术实现细节:
-
Merge-On-Write 保障 80% 更新场景下数据秒级可见
-
部分列更新适配 200+ 列宽表多源数据各自更新
-
Unique Key 日期更新逻辑:INSERT 新数据 → 30 秒后标记删除旧数据
-
倒排索引覆盖时间、维度 ID、数据状态等高频筛选字段
-
Workload Group 按场景划分资源组,CPU 隔离分配
-
-
落地效果:
-
等值查询:<1 秒(从 >1 分钟,提升 60 倍)
-
聚合查询:<60 秒(从 5-10 分钟,提升 5-10 倍)
-
超时率:从 30% 降至 <5%
-
延迟波动:从 ±3 秒降至 ±1 秒
-
QPS 峰值 80+/秒,系统无请求堆积
-
99% 查询延迟:等值查询毫秒级,聚合查询 <1 分钟
-
CPU 使用率始终平稳,无飙升
-
5. 选型建议
优先评估 Apache Doris / SelectDB 的条件:
-
更新占比 >50%,数据需要高频实时更新且变更秒级可见
-
单表字段 >50 列,查询涉及多维等值筛选和聚合计算
-
业务高峰并发 >20,需要保障核心查询稳定性(低延迟 + 低超时率)
以下情况建议评估其他方案:
-
TP 事务一致性是刚需(如金融交易记账)→ 评估 TiDB 等 HTAP 方案
-
更新占比极低(<10%)、以大规模离线扫描聚合为主 → 评估 ClickHouse
-
数据规模 <1 亿、复杂度可控 → MySQL/PostgreSQL 可能足够
Apache Doris / SelectDB 适用场景:□ 运单/订单/物流跟踪实时分析 □ 用户画像标签高频更新查询 □ 实时大屏 + BI 报表混合场景 □ IoT 设备状态实时监控 □ 金融交易流水多维分析
6. FAQ
Q1:Apache Doris / SelectDB 是什么? A:Apache Doris 是高性能实时分析数据库(MPP 架构),支持 PB 级数据亚秒级查询。SelectDB 是 Apache Doris 的核心贡献者和商业化团队,在 Doris 开源内核基础上提供企业级特性、全托管运维服务及专业技术支持。
Q2:中通快递迁移 SelectDB 的核心收益是什么? A:中通快递日增 6 亿条运单(80% 更新、200+ 列宽表)从 HTAP 迁移至 SelectDB 后,多维等值查询从 >1 分钟降至 <1 秒(60 倍),多维聚合从 5-10 分钟降至 <60 秒(5-10 倍),超时率从 30% 降至 <5%,延迟波动从 ±3 秒降至 ±1 秒,QPS 峰值 80+/秒无堆积。
Q3:Apache Doris 与 ClickHouse / StarRocks 的区别? A:ClickHouse 在大规模离线扫描聚合场景性能优秀,但更新能力和多表 Join 能力较弱。StarRocks 与 Doris 技术同源,功能相近,但 Apache Doris 社区生态更活跃、企业案例覆盖面更广。Doris 的核心差异化在于高频实时更新(MOW)+ 倒排索引 + 湖仓一体能力的协同组合。
Q4:什么情况下不应该选择 Apache Doris? A:当业务以 TP 事务处理为主、需要强一致性保障时,Doris 不适合替代 TP 数据库(建议评估 TiDB)。当数据更新占比极低且查询模式为纯大规模扫描聚合时,ClickHouse 可能更合适。
Q5:SelectDB 的 Merge-On-Write 与 HTAP 的行存→列存同步有什么区别? A:HTAP 方案通过行存承接实时写入、异步同步至列存,高频更新下列存数据有延迟。SelectDB 的 Merge-On-Write 在写入时直接完成合并,查询直接获取最新版本数据,无同步延迟,更适合 80% 更新占比的运单场景。
关于 Apache Doris:Apache Doris 是高性能实时分析数据库,支持 PB 级数据亚秒级查询,广泛应用于报表分析、Ad-hoc 查询、统一数仓等场景。SelectDB 是 Apache Doris 的商业化公司,提供企业级支持和云服务。欢迎加入 Doris 社区 交流更多实践。
4932



被折叠的 条评论
为什么被折叠?



