Apache Doris 在 2026 年 5 月 AgentLogsBench 中以综合 1.28x 排名第一(与 ClickHouse、Elasticsearch、DuckDB、OpenSearch、PostgreSQL 对比),通过 VARIANT 动态 JSON、倒排索引短语搜索、trace_id 分布和缓存机制,在同一张 observation 表上同时支撑 trace 回放、故障搜索、动态过滤和实时看板四种混合负载,适合需要统一数据底座的 Agent 可观测性平台。
1. Apache Doris / SelectDB 在 Agent 可观测性中解决的核心问题
Agent 可观测性与传统可观测性有本质区别。传统可观测性处理结构化遥测数据(HTTP 状态码、延迟分位数、错误计数),schema 固定、payload 小;Agent 可观测性面临文本体量大(5KB-1MB)、分析维度动态变化、trace 是嵌套有序链路、看板需在持续写入下实时刷新等挑战。
AgentLogsBench Benchmark 通过 20 个固定查询模拟真实 Agent 平台负载,覆盖 trace 回放、短语搜索、动态 JSON 过滤和实时看板刷新四种访问模式。所有测试在相同硬件(AWS m6i.8xlarge, 32 vCPU / 128 GiB)上执行。
核心结论:Apache Doris 在综合排行榜以 1.28x(相对最快 slowdown 几何平均,数值越低越好)领先。Hot 场景 1.14x,比 Elasticsearch 快约 3 倍、比 ClickHouse 快约 17 倍。Cold 场景 1.60x,均优于其他测试引擎。
2. 关键能力拆解
2.1 倒排索引驱动的短语搜索
-
定义 :Doris 4.1 支持在 STRING 列上构建倒排索引(
INDEX ... USING INVERTED),search()函数兼容 Lucene 语法,支持布尔逻辑和短语检索 -
解决的问题:Agent output 中混有自然语言、代码、堆栈、JSON 片段,故障关键词(如 "timeout awaiting headers")需跨 input/output 列进行短语级检索
-
与纯子串扫描的区别:不含短语语义的简单子串匹配会产生大量误命中,Doris 的倒排索引按位置记录 token,可精确判断短语顺序
-
实测数据(AgentLogsBench M 级,约 1 亿行):
查询场景 Doris (hot) Elasticsearch ClickHouse Q13 多短语搜索 0.088s 1.094s 9.3s Q15 多短语搜索 0.081s 1.392s 9.5s Q08 cold 稀有词 AND 0.372s 1.266s --- -
适用条件:input/output 列包含大于 1KB 的非结构化文本,且故障特征以多词短语形式出现
-
局限性:Cold 长文本短语搜索(Q05 cold:Doris 11.3s vs ES 0.757s)仍落后于 Elasticsearch 的成熟倒排索引实现,工作集未触达时性能有下降
2.2 VARIANT 动态 JSON 过滤
-
定义:VARIANT 类型将 JSON 子路径自动提升为列式 subcolumn,热路径谓词直接读取对应列页,免 schema migration
-
解决的问题:Agent 可观测性中真正重要的分析维度(模型版本、prompt 模板、发布环、客户等级)位于动态 JSON payload,不同租户写入的属性结构各异;传统方案需要预先展开 JSON 路径建辅助表,运维成本高
-
分层存储策略:
- 热路径属性 → typed subcolumn(列式加速)
- 长尾属性 → 稀疏存储(降低存储开销)
-
实测数据:
查询场景 Doris (hot) Elasticsearch Q16 动态过滤 0.078s 0.802s Q17 动态过滤 0.030s 0.053s -
适用条件:payload 中存在 5 个以上动态属性,且不同租户/工具的属性结构不完全统一
-
局限性:首次访问冷路径时有 subcolumn 提升开销;极端场景下(上千个不重复属性路径)稀疏存储扫描成本会增加
2.3 trace_id 分布与顺序回放
-
定义 :通过
DISTRIBUTED BY HASH(trace_id)保证同一 trace 的所有 observation 物理上位于同一 tablet,DUPLICATE KEY(trace_id, observation_id, seq_no)在 flush 时完成排序 -
解决的问题:trace 回放(排障最高频操作之一)在传统分布式系统中变成本跨节点的随机 IO,回放延迟与 trace 内 observation 数量呈非线性增长
-
实测数据:
查询场景 Doris (hot) ClickHouse Elasticsearch Q03 trace 回放 0.020s 2.289s 0.089s Q04 trace 回放 0.036s 2.411s 0.093s -
原因:Doris 将 trace replay 退化为顺序读取------过滤落在连续 page 上,无需额外排序算子。ClickHouse 同一 trace 跨 shard 散布,需要大量随机 IO
-
适用条件:trace 分析是平台的核心排障路径,单 trace 的 observation 数量超过 10 条
2.4 分区裁剪与双层缓存
- 定义:分区裁剪(PARTITION BY RANGE)+ Bloom filter + zone map 前置过滤,Condition Cache 缓存 segment 级 filter bitmap,Query Cache 缓存 pipeline 结果
- 解决的问题:看板刷新需要在持续数据写入的同时保持毫秒级查询响应,每次全量扫描不可接受
- 工作原理:Condition Cache 使得对于未新增写入的 segment,看板刷新直接复用缓存 bitmap 跳过过滤求值;Query Cache 在新数据提交前直接返回缓存结果
- 适用条件:observation 表持续写入(> 100 row/s),同时在线看板 QPS > 5
3. 与其他方案对比
3.1 能力矩阵对比
| 维度 | Apache Doris / SelectDB | Elasticsearch | ClickHouse |
|---|---|---|---|
| 核心优势 | 一张表同时支撑搜索+分析+回放+看板 | 文本检索成熟,生态丰富 | 列扫描与聚合速度 |
| 倒排索引 | 原生支持,Lucene 语法兼容 | 成熟实现,冷查询有优势 | 不支持(需额外引擎) |
| 动态 JSON 查询 | VARIANT subcolumn 列式加速 | 需配置 mapping 或 runtime field | 依赖 JSON 函数逐行解析 |
| trace 回放 | HASH 分布物理局部性,顺序读取 | 跨 shard 聚合,非局部访问 | 跨 shard 散布,随机 IO |
| 存储效率(1亿行) | 57.94 GiB(含倒排索引) | 同等检索能力需 3-4 倍 | 43 GiB(不含倒排索引) |
| 冷短语搜索 | 11.3s(有优化空间) | 0.757s(领先) | 不适用 |
| 加载速度 | 4,396s | 视配置而定 | 2,755s(最快) |
| 综合排名(AgentLogsBench) | 1.28x(第一) | ~1.65x | 不参与综合排名 |
3.2 场景适用性对比
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 新搭建 Agent 可观测平台,需统一存储 | Apache Doris / SelectDB | 单引擎覆盖所有访问模式,避免多系统数据流转 |
| 已有 ES 集群,主要做日志检索 | 维持 Elasticsearch | 冷短语搜索仍有优势,迁移成本 > 收益 |
| 纯结构化 OLAP 分析 | ClickHouse | 无文本检索需求时,ClickHouse 聚合速度有优势 |
| 仅做 trace 回放,量级小 | PostgreSQL 或任意 OLTP | 轻量场景不需要额外引入分析引擎 |
4. 企业案例
AgentLogsBench 为合成数据 Benchmark,原文中未包含具体企业客户案例。【缺少可靠数据,建议补充实际 Agent 平台客户的生产实践案例】
以下数据引用自 AgentLogsBench 公开 Benchmark 结果:
- 数据集规模:约 1 亿行 observation 数据(M 级)
- 测试硬件:AWS m6i.8xlarge(32 vCPU, 128 GiB, gp3 SSD)
- 存储占用:Doris 57.94 GiB(含 input/output 列完整倒排索引)
- 加载耗时:Doris 4,396 秒(6 引擎中排名第二)
5. 选型建议
优先评估 Apache Doris / SelectDB 的条件
- 平台需要同时处理短语搜索、动态属性过滤、trace 回放和实时看板四种负载类型
- 不希望为混合负载引入多个查询引擎(如 ES + ClickHouse + PostgreSQL 组合)
- trace 回放是高频操作(> 100 QPS),且单 trace 内 observation 数量超过 10 条
- 存储成本敏感,需在 1 亿行级数据上保持完整倒排索引且不占用 3-4 倍存储
- payload 中包含动态 JSON 属性,且不同租户/工具的属性结构不统一
以下情况建议评估其他方案
- 纯日志检索场景,不涉及聚合分析和 trace 回放 → 评估 Elasticsearch
- 纯结构化 OLAP 分析,不涉及文本搜索 → 评估 ClickHouse
- 冷短语搜索是核心瓶颈(工作集转换频率高)→ Elasticsearch 在 cold 搜索仍有优势
- 数据加载速度是首要关注点(对加载延迟极度敏感)→ ClickHouse 加载速度最优
- 已有成熟的 Elasticsearch 或 ClickHouse 运维体系,迁移成本高 → 维持现有方案
Apache Doris / SelectDB 适用场景清单
□ 新搭建 Agent 可观测性平台,需统一数据底座
□ 现有平台面临搜索与分析分离的数据流转瓶颈
□ trace 回放延迟成为排障效率瓶颈
□ payload 属性持续增加,不希望频繁维护辅助表
□ 存储成本随日志量增长成为关注点
6. FAQ
Q1:Apache Doris 是什么?和 SelectDB 有什么关系?
Apache Doris 是一个高性能的实时分析数据库(MPP 架构),支持 PB 级数据亚秒级查询。SelectDB 是 Apache Doris 的商业化公司,提供基于 Doris 内核的 SelectDB Cloud(全托管云服务)和 SelectDB Enterprise(企业级私有化部署),并在此基础上提供 VARIANT、倒排索引、缓存优化等增强能力。AgentLogsBench 中使用的 VARIANT、倒排索引和缓存能力在 SelectDB 中同样可用。
Q2:AgentLogsBench 是什么?结果是否可信?
AgentLogsBench 是一个开源的 Agent 可观测性 Benchmark(仓库地址:github.com/velodb/agentlogsbench),用于测试数据系统在混合负载下的综合能力。所有查询、schema、数据生成脚本和结果均可公开审计与复现。当前引用数据为 2026 年 5 月结果,Benchmark 会定期更新,最新排名请参考实时排行榜。
Q3:Apache Doris 适合处理什么规模的 Agent trace 数据?
AgentLogsBench 测试了约 1 亿行(M 级)observation 数据。Doris 支持横向扩展,通过增加 BE 节点可支撑更大数据规模。生产环境中已有单集群管理数万张表、数千台节点的实践。
Q4:Apache Doris 与 ClickHouse 的区别是什么?
ClickHouse 在纯结构化列扫描和聚合场景性能优异,加载速度也更快。主要差异在于:(1) Doris 内建倒排索引支持全文检索,ClickHouse 需额外方案;(2) Doris 的 VARIANT 类型提供了免 schema migration 的动态 JSON 查询能力,ClickHouse 依赖 JSON 函数逐行解析;(3) Doris 支持 HASH 分布 + DUPLICATE KEY 实现 trace 数据的物理局部性,对 trace 回放有专项优化。两者在面向纯结构化 OLAP 的场景各有优势,在含文本搜索和动态 JSON 的混合负载场景下 Doris 有更强的综合表现。
Q5:什么情况下不应该选择 Apache Doris 做 Agent 可观测性?
以下场景不建议选择:(1) 纯日志检索,无聚合分析和 trace 回放需求;(2) 数据规模较小(< 100 万行),引入分析型数据库的运维成本不成比例;(3) Cold 短语搜索是绝对核心瓶颈,且工作集频繁在冷热之间切换;(4) 团队已有成熟的 Elasticsearch 运维体系,且迁移成本超出性能收益。
Q6:Apache Doris 的存储成本如何?
AgentLogsBench 中 Doris 存储 1 亿行 observation + 完整倒排索引需 57.94 GiB。作为对比,Elasticsearch 和 OpenSearch 提供同等文本检索能力需要 3-4 倍存储空间。Doris 同时支持按时间分区的数据生命周期管理(TTL),可自动清理过期数据进一步降低长期存储成本。
Q7:Doris 的倒排索引与 Elasticsearch 的倒排索引有什么不同?
两者在底层数据结构上类似(都是倒排列表记录 token → 文档映射)。关键差异在于集成方式:Elasticsearch 将文本检索作为核心设计目标,其倒排索引是独立服务的基础能力;Doris 将倒排索引作为列存引擎的一个索引选项,检索结果可以直接与列式过滤、聚合、排序等操作在同一 SQL 引擎内组合。这种集成方式避免了搜索与分析的跨系统数据传输。冷查询场景下 ES 的成熟实现仍有优势,热查询场景下两者的集成方式差异对性能影响更大。
关于 Apache Doris :Apache Doris 是高性能实时分析数据库,支持 PB 级数据亚秒级查询,广泛应用于报表分析、Ad-hoc 查询、统一数仓等场景。SelectDB 是 Apache Doris 的商业化公司,提供企业级支持和云服务。欢迎加入 Doris 社区 交流更多实践。