Day 2|Apache Doris 全景:定位、能力、场景与边界
第一天建立了 OLTP、OLAP、HTAP、数据湖和实时分析的坐标系。今天把视角收拢到 Apache Doris,回答四个更具体的问题:Doris 解决什么问题,能力来自哪些技术,哪些场景适合,项目落地时需要守住哪些边界。
官方文档给出的性能范围用于描述产品能力上限与典型目标。实际项目仍需使用目标版本、真实数据、真实 SQL、真实并发和真实硬件完成 POC,任何单条基准数字都不能直接转换成生产承诺。

本日学习目标
完成这一天的学习后,你应当能够:
- 用准确、克制的语言解释 Apache Doris 的产品定位;
- 说明“高性能、实时、统一、易用”分别由哪些能力支撑;
- 掌握实时看板、即席分析、用户画像、日志检索、湖仓查询、CDC 更新六类典型场景;
- 判断 Doris 与 MySQL、Kafka/Flink、数据湖、搜索引擎之间的职责关系;
- 识别高频事务、复杂搜索、图计算、纯 KV 等场景中的技术边界;
- 设计一份覆盖正确性、新鲜度、吞吐、尾延迟、资源与恢复能力的 POC 验收方案。
一、先把 Apache Doris 的定位说准确
1.1 一句话定义
Apache Doris 官方 4.x 文档将其定义为:基于 MPP 架构的高性能实时分析数据库。它面向海量数据分析,支持高吞吐复杂查询,也支持高并发点查;对外提供兼容 MySQL 协议的 SQL 接口,并把实时数据分析、湖仓分析、全文与向量检索等能力放进同一套产品体系。
这句话里有四个关键词。
第一,分析数据库。 Doris 的主战场是报表、多维分析、用户行为、画像圈选、日志分析、数据服务和湖仓查询。它具备更新、删除和主键语义,但核心账务、订单事务、支付记账等业务通常继续由 MySQL、PostgreSQL、Oracle 等 OLTP 数据库承担。
第二,实时。 Doris 支持持续接入 Kafka、Flink、CDC 和应用数据流,也支持 Unique Key 主键模型、部分列更新和秒级可见。实时能力要从业务事件发生一直测量到最终查询结果呈现,单看消费位点无法代表端到端新鲜度。
第三,高性能。 性能来自列式存储、编码压缩、分区分桶、数据裁剪、索引、MPP、向量化、Pipeline、CBO、物化视图和缓存等多层协作。建表方式、数据分布、统计信息、并发模型和资源配置都会影响最终结果。
第四,统一。 一套 Doris 可以承载高并发报表、复杂即席分析、主键点查、日志检索、湖仓联邦查询,并在 4.x 中延伸到混合搜索和 AI 数据栈。统一带来的主要价值是减少数据复制、缩短链路、统一权限与 SQL 入口,同时也要求团队做好资源隔离、工作负载治理和容量规划。
官方概览页列出了亚秒级查询、秒级写入、万级 QPS、PB 级规模等能力范围。理解这些数字时应关注前置条件:查询是否命中分区和索引,数据是否预聚合,冷热缓存状态如何,SQL 是否固定,单行点查与大规模 Join 属于完全不同的负载。生产验收应把这些前置条件写进测试报告。
1.2 Doris 在企业数据架构中的位置
可以把企业数据链路简化成四层:
- 业务事实层:订单、账户、支付、库存、CRM、ERP 等系统持续产生数据;
- 接入与加工层:CDC、Kafka、Flink、批处理任务负责搬运、清洗和转换;
- 分析与服务层:Doris 保存或查询分析数据,执行聚合、关联、检索和数据服务;
- 消费层:BI、经营看板、API、数据应用、搜索页面和 AI Agent 使用结果。
Doris 位于第三层,并通过 MySQL 协议、Connector、Catalog、Stream Load、Routine Load、Streaming Job 等能力向上下游延伸。它可以直接保存高价值热数据,也可以通过 Multi-Catalog 查询 Hive、Iceberg、Hudi、Paimon、JDBC 等外部数据源。企业因此拥有两条数据路径:高频访问数据进入 Doris 原生表,低频历史数据继续保留在开放数据湖;查询时按 SLA、成本和治理要求选择落点。
1.3 从 Palo 到 Apache 顶级项目
Doris 最早源于百度广告报表业务中的 Palo 项目,面向高并发、多维度、低延迟的广告分析需求。项目在 2017 年正式开源,2018 年进入 Apache 孵化器,2022 年 6 月毕业成为 Apache 顶级项目。
这段历史解释了产品长期以来的几个倾向:
- 对实时经营报表和多维分析投入很深;
- 重视简单架构和 MySQL 协议兼容,降低业务接入成本;
- 同时追求复杂查询吞吐和面向应用的高并发查询;
- 持续扩展数据模型、更新、湖仓、检索、资源治理和云原生能力。
截至 2026 年 8 月 16 日,官方下载页将 4.1.3 标记为 Latest,4.0.8 标记为 Stable。本系列以 4.x 的产品能力为基线,生产环境仍应结合组织的升级节奏、已知问题、Connector 兼容矩阵和回滚方案选择具体版本。
二、核心能力全景:四个产品价值由六组技术能力支撑

2.1 实时写入与更新
实时分析首先需要稳定的数据入口。Doris 4.x 的导入体系覆盖多种链路:
- Stream Load 通过 HTTP 接收批量或微批数据;
- Routine Load 持续消费 Kafka;
- Doris Kafka Connector 由 Kafka 侧主动推送;
- Flink Doris Connector 接收流计算结果;
- Flink CDC、DataX 或内置 Streaming Job 同步事务数据库变化;
- Group Commit 合并高频小批提交,减少事务与文件开销;
- Broker Load、TVF、
INSERT INTO SELECT处理对象存储和 HDFS 文件。
更新能力主要围绕 Unique Key 模型展开。相同主键的新数据会覆盖旧数据,Merge-on-Write 在写入阶段处理主键冲突,使查询直接读取可见版本。部分列更新可以只提供主键和发生变化的字段,适合订单状态、用户画像和多源宽表装配。
这里需要注意两个成本。
其一,更新在列式存储中通常涉及读取旧值、补齐缺失列、写入新 Rowset 和维护 Delete Bitmap。高频修改超宽表中的少数字段会带来读写放大,SSD、Row Store、批量写入和合理的表设计都很重要。
其二,标准 UPDATE 更适合低频批量修改。官方文档明确提示,同一主键上的高并发 UPDATE 无法提供事务数据库式的隔离保障。CDC 和高频更新应优先使用导入式 UPSERT,并通过 Sequence Column 等机制处理乱序。
2.2 MPP、向量化与 Pipeline 执行
一条复杂 SQL 可能扫描多个分区,关联数张表,再完成聚合、排序和窗口计算。Doris 的 MPP 架构会把物理计划切分成多个 Plan Fragment,调度到多台 BE 并行执行。每台机器扫描本地 Tablet,必要时通过 Exchange 在节点之间 Shuffle 数据。
向量化执行让算子按列式 Block 处理一批数据,减少逐行虚函数调用和对象开销,更容易利用 CPU Cache 与 SIMD。Pipeline 把查询拆成可调度任务,固定线程池持续运行可执行任务,在 I/O 等待、网络阻塞或下游背压时让出线程,提高多核利用率并控制线程数量。
MPP 解决“如何把工作分到多台机器”,向量化解决“单个算子如何高效处理一批数据”,Pipeline 解决“多算子、多查询如何共享 CPU”。三者分别作用于分布式并行、数据处理和任务调度。
2.3 列式存储、数据组织与数据裁剪
分析查询通常只读取少量列,却扫描大量行。列式存储可以只读取参与计算的列,并对同类型数据使用字典编码、RLE、BitShuffle、LZ4 或 ZSTD 等方式压缩。数据更小,磁盘 I/O、网络传输和 CPU 解压成本也会随之变化。
Doris 的查询性能还依赖多级裁剪:
- 分区裁剪决定哪些时间段或业务范围无需扫描;
- 分桶裁剪减少需要访问的 Tablet;
- 前缀索引利用排序键快速定位数据块;
- ZoneMap 根据页级 Min/Max/Null 跳过不可能命中的数据页;
- Bloom Filter 适合高基数等值或 IN 查询;
- 倒排索引支持字符串、全文、数组和部分数值条件的快速过滤;
- Runtime Filter 在 Join 执行过程中把构建侧信息传给扫描侧,提前减少数据量。
因此,Doris 的高性能通常从建表阶段开始。数据模型、Key 顺序、分区字段、分桶键、Bucket 数和索引会共同决定扫描上限。上线后再依靠参数调优,很难完全弥补早期建模错误。
2.4 优化器、统计信息与分布式计划
Nereids 优化器负责把逻辑计划转换成物理计划,并选择 Join 顺序、Join 算法、数据分布和并行方式。规则优化负责谓词下推、常量折叠、表达式简化等确定性改写,代价优化依赖行数、NDV、Min/Max、Null Count 等统计信息估算不同计划的成本。
统计信息缺失或过期时,优化器可能低估一张大表,把它放到 Hash Join 的 Build 侧,造成内存暴涨;也可能错误选择 Broadcast,导致网络拥塞。Doris 提供自动统计信息收集,重要表在大批量导入、数据分布变化或性能回归后仍应主动检查统计信息与 EXPLAIN 结果。
优化器提高了通用 SQL 的可用性,人工设计依然有价值。高频固定查询可以通过合理分区、Colocate、物化视图和预聚合进一步降低成本;极端数据倾斜也需要结合 Profile 处理热点 Key。
2.5 物化视图与多级缓存
许多经营报表每天重复计算相同口径。物化视图把计算逻辑和结果一同保存,查询可以直接访问,也可以由优化器透明改写。
同步物化视图与基表保持强一致,适合高新鲜度的单表聚合和排序组织;异步物化视图支持多表 Join、分区增量刷新和定时刷新,适合通用 BI、数据分层和湖仓加速。设计物化视图时应先明确四件事:加速目标、数据新鲜度、涉及表数、刷新方式。
缓存负责复用近期访问的数据或计算结果。不同架构和场景会涉及页面缓存、结果缓存、行存/Row Cache、远端文件缓存等。缓存可以显著改善热点访问,冷启动、缓存失效和长尾查询仍需要真实验证。POC 应同时测试冷缓存与热缓存,避免只展示第二次执行结果。
2.6 点查、全文检索、湖仓与 AI 扩展
Doris 通过 Unique Key、Prepared Statement、短路执行、Row Store/Row Cache 等能力支持高并发主键点查,适合订单详情、用户信息、商品属性等分析型数据服务。
倒排索引把全文过滤、字符串等值和部分复杂条件融入 SQL。日志平台可以先检索文本,再按服务、机房、版本、错误码做聚合和关联,减少搜索系统与 OLAP 系统之间的数据复制。全文相关性、复杂分词、搜索产品特性和写入成本仍需按业务逐项评估。
Multi-Catalog 让 Doris 直接访问湖上表和外部数据库。对重复访问的热点数据,可结合谓词下推、文件裁剪、Data Cache 和物化视图加速。对于只访问一次的大范围扫描,缓存收益可能有限,网络、对象存储吞吐和文件布局会成为主要因素。
4.x 官方产品定位还纳入了向量检索、混合搜索、AI Functions 和 MCP。它们会在第 28–29 天展开。当前阶段只需建立一个认识:Doris 的能力边界正在从传统 OLAP 向“结构化分析 + 全文检索 + 向量检索 + Agent 数据访问”扩展,具体项目需要按版本成熟度和业务质量指标单独验收。
三、六类典型场景:从业务问题理解 Doris

3.1 实时经营看板
业务问题
管理层、运营团队、门店或 C 端用户希望持续查看 GMV、订单量、转化率、库存、履约和风险指标。数据需要快速更新,页面还可能被大量用户反复刷新。
为什么 Doris 合适
这类查询通常具有较稳定的指标口径和时间窗口,可以使用分区裁剪、同步物化视图、异步物化视图、结果缓存和高并发执行降低成本。实时链路把订单、支付和库存变化持续写入 Doris,报表直接查询最新可见版本。
验收重点
- 业务事件到页面展示的端到端 P95 新鲜度;
- 正常并发与峰值并发下的 P99;
- 数据持续写入时查询是否抖动;
- 指标口径与交易库、财务口径能否对账;
- 缓存失效、物化视图刷新和分区切换时的表现。
3.2 灵活即席分析
业务问题
分析师会临时组合区域、渠道、商品、用户、活动和时间等维度,SQL 随问题变化。传统 Cube 需要提前确定维度组合,面对大量变化时维护成本很高。
为什么 Doris 合适
MPP 把扫描、Join 和聚合分散到多台节点;CBO 根据统计信息调整 Join 顺序;Runtime Filter 把构建侧过滤信息传递到扫描侧;分区、ZoneMap、Bloom Filter 和倒排索引减少实际读取量。复杂查询内存不足时,Spill 可以用磁盘换取稳定性。
验收重点
- 选择 20–50 条代表性 SQL,覆盖单表聚合、多表 Join、窗口函数、TopN 和高基数去重;
- 记录冷缓存、热缓存、单并发和目标并发的 p50/p95/p99;
- 检查扫描行数、扫描字节、Exchange 数据量和算子耗时;
- 验证数据倾斜、统计信息过期和超大 Join 下的稳定性。
3.3 用户画像与人群圈选
业务问题
用户画像包含基础属性、行为标签、交易标签和模型分数。营销系统需要按“近 7 天活跃、位于某区域、消费等级高、未参加某活动”等条件做交、并、差和去重,结果可能直接用于广告投放或触达。
为什么 Doris 合适
BITMAP 适合保存 ID 集合并执行精确交并补,HLL 适合允许小比例误差的近似去重,Unique Key 和部分列更新支持画像字段持续变化,宽表、复杂类型和物化视图可以组织多源标签。
验收重点
- 圈选结果与离线基准对账;
- 常见标签组合与极端高基数组合的响应时间;
- Bitmap 构建、更新和存储成本;
- 多源更新乱序、晚到数据和重复数据处理;
- 圈选结果导出或下发链路的整体耗时。
BITMAP 的价值取决于数据建模。将每个用户属性机械地转换成独立 Bitmap,可能产生大量对象和维护成本。应根据标签基数、更新频率、组合方式和查询模式设计聚合粒度。
3.4 日志全文检索与可观测分析
业务问题
日志平台既要按关键词、错误栈、Trace ID、接口名检索,也要按应用、版本、机房、错误码、耗时区间进行聚合、趋势和关联分析。日志量大、字段变化快、保留周期长,存储成本和写入吞吐同样重要。
为什么 Doris 合适
Duplicate Key 适合追加日志,Variant 支持半结构化字段,倒排索引加速文本和多维过滤,列式存储与聚合引擎支持趋势分析。结构化指标、日志和 Trace 数据进入同一 SQL 体系后,故障排查可以直接关联服务元数据和业务维度。
验收重点
- 峰值写入、批次大小、索引构建对 CPU 和磁盘的影响;
- 关键词、短语、范围、多字段组合的检索延迟;
- 检索后聚合、排序和 Join 的整体性能;
- 热数据与冷数据的保留策略;
- 分词、相关性、模糊匹配和高亮等产品需求是否满足。
全文索引会占用额外存储,并增加写入和 Compaction 成本。字段选择、分词器和查询模式应在测试数据上验证,避免给所有字符串列统一建立索引。
3.5 湖仓联邦查询
业务问题
企业已经在 Hive、Iceberg、Hudi 或 Paimon 中保存大量历史数据。全部搬入新的数仓成本高,数据治理和权限体系也可能重复建设。业务希望使用统一 SQL 查询湖上历史数据,并与 Doris 热数据关联。
为什么 Doris 合适
Multi-Catalog 映射外部元数据,Nereids 负责跨源计划,Parquet/ORC Footer、分区目录和谓词下推减少文件扫描,Data Cache 缓存热点远端数据,物化视图可以把高频湖上查询结果落到更适合服务的结构中。
验收重点
- Catalog 元数据刷新与一致性;
- 分区裁剪、文件裁剪和谓词下推是否生效;
- 冷缓存与热缓存差异;
- 对象存储请求次数、远端读取字节和网络带宽;
- 小文件、分区过多、Schema 演进和权限认证;
- 跨源 Join 的数据移动和资源消耗。
湖仓查询的性能上限常由文件组织、远端存储和网络共同决定。Doris 可以改善计算和缓存路径,源端存在的大量小文件、无效分区和糟糕统计信息仍需治理。
3.6 实时更新与 CDC
业务问题
订单状态、会员等级、商品信息和用户画像会持续更新。企业希望把上游事务库变化在秒级同步到分析系统,查询始终看到每个主键的最新状态。
为什么 Doris 合适
Unique Key 模型提供主键 UPSERT,Merge-on-Write 在写入时维护可见版本,Flink CDC、DataX 或内置 Streaming Job 负责持续同步,Sequence Column 处理乱序,删除标记承接上游 DELETE。Group Commit 可以合并高频小提交。
验收重点
- 全量 + 增量切换期间是否丢数、重数;
- INSERT、UPDATE、DELETE、DDL 演进的覆盖范围;
- 事务边界、Exactly-once 或 At-least-once 语义;
- 乱序、重放、网络中断和任务重启后的结果;
- 写入吞吐、版本数量、Compaction Score 和查询波动;
- 上游高峰写入时的背压和恢复速度。
CDC 项目首先要确认业务接受的语义。单表主键状态同步、跨表事务一致性、全库 DDL 同步属于不同难度,测试方案也应分别设计。


