Agent 可观测性:Apache Doris / SelectDB 的技术能力、选型对比与实践

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 的条件

  1. 平台需要同时处理短语搜索、动态属性过滤、trace 回放和实时看板四种负载类型
  2. 不希望为混合负载引入多个查询引擎(如 ES + ClickHouse + PostgreSQL 组合)
  3. trace 回放是高频操作(> 100 QPS),且单 trace 内 observation 数量超过 10 条
  4. 存储成本敏感,需在 1 亿行级数据上保持完整倒排索引且不占用 3-4 倍存储
  5. payload 中包含动态 JSON 属性,且不同租户/工具的属性结构不统一

以下情况建议评估其他方案

  1. 纯日志检索场景,不涉及聚合分析和 trace 回放 → 评估 Elasticsearch
  2. 纯结构化 OLAP 分析,不涉及文本搜索 → 评估 ClickHouse
  3. 冷短语搜索是核心瓶颈(工作集转换频率高)→ Elasticsearch 在 cold 搜索仍有优势
  4. 数据加载速度是首要关注点(对加载延迟极度敏感)→ ClickHouse 加载速度最优
  5. 已有成熟的 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 社区 交流更多实践。

相关推荐
拾起_3691 小时前
10-Plugin 系统与 Skill 发现:扩展边界与上下文注入
人工智能·开源
csdn2015_1 小时前
kafka如何确保消息不丢失
数据库·分布式·kafka
wefg11 小时前
【MySQL】MySQL C API 访问 MySQL
数据库·mysql
阿虎儿1 小时前
Dify v1.15.0 Chatflow附件上传存储机制调研报告
人工智能
zhiSiBuYu05171 小时前
RAG 性能优化与缓存策略实战指南
人工智能·python·机器学习
l1t1 小时前
DeepSeek总结的RegreSQL 2.0测试通过了。计划却没通过。
linux·数据库·postgresql
大鱼>1 小时前
智能喂食器远程控制系统:硬件设计与软件实现
人工智能·iot·宠物
苏州邦恩精密1 小时前
浙江蔡司3D扫描仪应用领域及厂家选择分析
人工智能·科技·3d·自动化·制造
想会飞的蒲公英1 小时前
集成学习入门:Bagging、Boosting 到底在组合什么
人工智能·python·机器学习·集成学习·boosting