From 9cd4a2491cb0c197abfe1f58e7cfec5ba066a2f9 Mon Sep 17 00:00:00 2001 From: Hongtao Gao Date: Tue, 8 Sep 2026 08:58:00 +0000 Subject: [PATCH 1/4] Add Chinese translation for BanyanDB 0.11.0 blog --- .../banner.jpg | Bin 0 -> 188620 bytes .../index.md | 278 ++++++++++++++++++ 2 files changed, 278 insertions(+) create mode 100644 content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/banner.jpg create mode 100644 content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md diff --git a/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/banner.jpg b/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2933e3d2c346f957e927244f86bd4547d77175dd GIT binary patch literal 188620 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 smD-xbuZRoB)Ae^0vyhz2d~ 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 z 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
    A>N%wtQ!jTHlgG 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

    e7hY>`e>- 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 **核心要点** +> +> - Measure、Stream 和 Trace 的向量化查询路径现已**默认启用**,可减少扫描密集型查询的内存分配;但这也改变了滚动升级顺序:必须**先升级 Liaison 节点,再升级 Data 节点**。 +> - 新增的合并中(in-merge)和最终化阶段(finalize-time)链路保留采样流水线,可通过可插拔的 `.so` 采样器插件丢弃不需要的 Span;即使一次合并涉及数百万条链路,其内存占用也有明确上限。 +> - 编码智能体现在可以通过两种方式使用自然语言查询 BanyanDB:一种是带有 `bydbql` Skill 的 Claude Code/Codex **MCP 插件**,另一种是独立的 **`bydbctl agent`** 终端界面。 +> - **etcd 支持已完全移除**,API 版本也升级至 0.11,因此请安排维护窗口执行升级。队列和生命周期指标同样经过了重新设计。 + +下文将介绍值得尝试的新功能、值得关注的性能优化、新增的 API,以及如果准备不足便可能导致升级失败的破坏性变更。 + +## 向量化查询现已默认启用 + +列式(向量化)查询路径使用批量列式流水线取代逐行 Protobuf 序列化。自 0.10 起,Measure 查询已经默认使用该路径;在 0.11 中,**Stream 和 Trace 查询也加入其中**:`--stream-vectorized-enabled`、`--trace-vectorized-enabled` 和 `--measure-vectorized-enabled` 均默认为 `true`。 + +对于 Measure 查询,单节点场景的覆盖现已完整:扫描、通过 `BatchAggregation` 实现的 `GroupBy`+`Agg`、标量归并(scalar reduce)、原始 `GroupBy`、`TopN`/`BottomN`、`order_by`,以及边界错误的一致性,都会通过向量化分派执行,并保持与逐行路径相同的语义。其 gRPC 线上格式与逐行路径的输出逐字节一致;团队还通过 6 小时的生产环境浸泡测试验证了这一点,期间未发现任何差异。分布式 Map 模式的部分聚合和多 Group 请求目前仍使用逐行路径,后续版本将继续完善。 + +这也是本次发布中最重要的**滚动升级破坏性变更**。所需的升级顺序请参阅下文的[破坏性变更与安全升级方法](#breaking-changes-and-how-to-upgrade-safely)。 + +## 可插拔的链路保留采样流水线 + +链路数据量是可观测性后端面临的经典难题:要么保留全部数据并承担相应成本,要么丢弃一部分数据,同时寄希望于真正重要的链路被保留下来。0.11 为 BanyanDB 提供了解法:在存储节点引入**合并中链路保留过滤器**。它会按 Group 执行采样器链,并从核心 Part 和二级索引 Part 中安全移除未保留的链路。采样器可按 Group 动态配置,并支持运行时注册、更新和移除。 + +以下两项设计使它成为真正面向生产环境的能力,而非一次性的过滤器: + +- **最终化采样(Finalization sampling)**是一道尽力而为的兜底机制。节点范围内仅有一个并发度为 1 的扫描器,定期扫描已经冷却的 Segment,并让每个 Shard 尚未最终化的 Part 通过所属 Group 的采样器链进行强制合并。它复用现有的热合并路径,因此不会与热合并信号量竞争。每个 Part 都带有 `finalizeGen` 标记;该标记会先于 Part 元数据写入磁盘,因此即使进程崩溃,重放时也不会重复采样。 +- **Drop set 的大小在设计上有界。** Shard 的首轮最终化可能会将所有已冷却的 Part 一次性选入同一次合并。如果不加限制,包含 1,800 万个条目的 Drop set 会占用约 1.3 GiB 活跃堆内存和 2.6 GiB 预留堆内存,而该进程还需要同时处理查询。因此,流水线限制的是采样*决策*数量,而不是裁剪谓词。一旦某次合并的 Drop set 已满,后续原本建议丢弃的记录都会被保留,而不再加入集合。这样,集合对于实际执行的丢弃操作始终是完整的,既不会出现孤立条目,也不会遗漏任何条目。上限由内存保护器按 `limit/(16×CPUs)` 计算,使并发合并的总占用保持在约 `limit/16`。 + +

    + + + 链路保留采样流水线如何决定保留哪些数据 + 采样器链接收两类输入:在合并中过滤阶段评估的新 Part,以及由最终化兜底扫描器扫描、未经过合并中过滤的已冷却 Segment。采样器链按 Group 规则评估,并将每条链路分流为保留或丢弃。 + + 新 Part + (合并中过滤器) + + 已冷却 Segment + (最终化兜底) + + 采样器链 + (按 Group 配置的规则) + + 保留 + + 丢弃 + + + + + + + + + 来源:BanyanDB CHANGES.md 与 docs/design/trace-drop-set-bounding.md,0.11.0 + + +
    链路保留采样流水线如何决定保留哪些数据。原创示意图。
    +
    + +完整的推导过程请参阅 [Trace Drop Set 边界设计文档](https://github.com/apache/skywalking-banyandb/blob/master/docs/design/trace-drop-set-bounding.md)。 + +项目随版本提供了适配 SkyWalking 自有 Trace Schema 和 Zipkin 的第一方采样器插件(`sw-trace-sampler.so`、`zipkin-trace-sampler.so`),以及带资源上限的遥测 SDK。采样器插件因此可以输出自身经过计量的指标和日志,而不会让宿主进程的基数或日志预算无限增长。 + +完整的配置 Schema 请参阅 [Trace Pipeline 插件 SDK 与采样器配置参考](https://github.com/apache/skywalking-banyandb/blob/master/plugins/README.md)。 + +## 集群级 Schema 一致性 + +在 0.11 之前,Schema 变更(例如创建 Stream、添加 Index Rule 或删除 Group)可能在集群中的所有节点真正应用变更之前,就由元数据服务返回成功。此时,如果查询命中尚未追上进度的节点,便可能看到过期或缺失的 Schema。0.11 引入了客户端可观测的 Revision 跟踪和屏障 RPC,弥补了这一缺口。具体字段和 RPC 请参阅下文的 [API 变更](#api-changes);完整 RPC 契约请参阅 [Schema 一致性客户端接口与 SchemaBarrierService 参考](https://github.com/apache/skywalking-banyandb/blob/master/docs/interacting/schema-consistency/barriers.md)。 + +第二阶段将屏障扩展至整个集群:通过新增的 `NodeSchemaStatusService`,将相同调用扇出至每个 Liaison 和 Data 节点,并安全处理混合版本及成员变更场景。所有能力均为显式启用;取零值的请求会保留原有行为,因此不传入 Revision 的现有客户端不会受到影响。 + +## 编码智能体的自然语言查询 + +0.11 为编码智能体提供了两种相互独立的 BanyanDB 查询方式,无需手写 BydbQL。 + +第一种是 **Claude Code / Codex 插件**。它将 BanyanDB MCP Server 与 `bydbql` Skill 打包在一起,可针对 STREAM、MEASURE、TRACE 和 PROPERTY 资源将自然语言转换为 BydbQL。直接从仓库安装(在 Claude Code 中运行 `/plugin install apache/skywalking-banyandb`,或使用等效的 `codex plugin add` 流程)后,任意 Claude Code 或 Codex 会话都能获得四个 MCP 工具:`list_groups_schemas` 用于发现 Schema;`get_generate_bydbql_prompt` 用于生成查询(这是唯一会注入实时索引字段列表,并强制执行 `ORDER BY` Index Rule 替换的工具);`validate_bydbql` 通过预构建的 Go 二进制文件执行仅解析式的语法和安全校验;`list_resources_bydbql` 则用于执行已校验的只读语句。 + +第二种是 **`bydbctl agent`**。这是一个独立的双窗格终端界面,可直接驱动 Codex 或 Claude Code CLI 进程,以自然语言交互查询 BanyanDB:它会发现 Schema、提出类型明确的查询计划,并执行只读查询。它不持有任何 AI 提供商凭据;你需要单独为其封装的 CLI 完成认证。MCP 插件能把 BanyanDB 查询能力加入任意 Claude Code/Codex 会话,而 `bydbctl agent` 则是专门完成同一任务的独立交互式工具。 + +
    + + + 使用自然语言查询 BanyanDB 的两种方式 + 路径一:Claude Code 或 Codex 会话使用带 BydbQL Skill 的 MCP 插件直接查询 BanyanDB。路径二:独立的 bydbctl agent 终端界面驱动另一个 Codex 或 Claude Code CLI 进程查询 BanyanDB。两条路径相互独立,且均为只读。 + + Claude Code / Codex + 会话 + + MCP 插件 + (BydbQL Skill) + + bydbctl agent + (终端界面) + + Codex / Claude Code + CLI 进程 + + BanyanDB + + + + + + + + + 来源:docs/operation/mcp/plugin.md、skills/bydbql/SKILL.md、docs/interacting/bydbctl/agent.md + + +
    两条相互独立、只读的 BanyanDB 自然语言查询路径。原创示意图。
    +
    + +如需开始使用该终端界面,请参阅 [`bydbctl agent` 配置与使用文档](https://github.com/apache/skywalking-banyandb/blob/master/docs/interacting/bydbctl/agent.md)。 + +## 同期发布:Canopy、迁移工具及更多功能 + +另外还有四项值得关注的新增能力: + +- **Canopy** 是全新的管理界面。它不是嵌入现有 `ui/` 的页面,而是采用 Fastify BFF 的独立 React SPA,支持 Group/Stream/Measure/Trace/IndexRule 元数据的 CRUD、在分布式集群上完整支持 WHERE 子句的查询控制台、Property Collection CRUD,以及 TopN 聚合管理。它还拥有独立的 Docker 镜像、CI 和端到端测试套件。(这些细节来自 `canopy/` 相关提交及设计文档本身;CHANGES.md 对 Canopy 的介绍较为简略。) +- **迁移工具**新增 `copy`、`verify` 和 `analyze` 子命令。在早期版本 Trace/生命周期迁移能力的基础上,现在也支持 Measure 和 Stream 数据,包括索引模式的 Measure。 +- **Schema 变更时可以修改 Tag 类型,而不会破坏旧 Part。** 如果 Tag 类型发生变化(例如从 int 变为 string),BanyanDB 现在会将每种类型变体分别持久化到各自的文件(`{tag_name}.{tag_type}.tf`)中,而不再覆盖原文件;查询和合并逻辑则通过(名称、类型)二元组完成解析。该机制适用于 Measure、Stream、Trace 和 SIDX Part。 +- Trace Part 合并采用**公平的快/慢通道调度**,短合并不再排在耗时较长的合并之后;队列等待时间现通过 `total_merge_queue_latency` 暴露。 + +运行方法请参阅 [Canopy 配置与架构指南](https://github.com/apache/skywalking-banyandb/blob/master/canopy/README.md)。 + +## 性能改进 + +除上述默认启用向量化的查询引擎外,0.11 还包含多项有针对性的优化: + +- Trace 和 Stream 的**点查更快**:通过延迟解码 Block 元数据,只需少量行的查询不再需要预先承担元数据解码开销。 +- **Trace 采样器的解码路径得到优化**:延迟解码、字符串和 Tag 的零拷贝处理、提前拒绝 Tag、直接读取标量,以及缓存规则前缀,使 SkyWalking 和 Zipkin 采样器的采样决策成本与 Tag 规则成本大约减半。 +- **GCS 备份上传更快**:每个对象及其校验和元数据现在通过一次请求写入,省去了每个对象一次的 `Update` 往返。 +- **生命周期迁移的内存效率显著提高。** 通过流式 Dump Reader 和按大小分级的序列化缓冲池,不再将大型 Measure Part 整体读入内存;在相同工作负载下,行重放的堆内存峰值降低了约 80%: + +
    + + + 生命周期行重放堆内存峰值:0.11.0 优化前后对比 + 通过流式 Dump Reader、按大小分级的序列化缓冲池,以及有界的在途批次(默认 32 MiB),大型 Measure Part 行重放时的堆内存峰值从约 1.5 GB 降至约 296 MB,降幅约 80%。来源:BanyanDB CHANGES.md,0.11.0。 + 生命周期迁移:优化前 → 优化后的堆内存峰值 + 相同工作负载下大型 Measure Part 的行重放 + + ~1.5 GB + 优化前 + + ~296 MB + 优化后 + + ↓ 堆内存峰值降低约 80% + 来源:BanyanDB CHANGES.md,0.11.0(流式 Dump Reader + 缓冲池 + 32 MiB 有界批次) + + +
    来源:BanyanDB CHANGES.md,0.11.0——流式 Dump Reader、按大小分级的序列化缓冲池,以及默认 32 MiB 的在途批次字节数上限。
    +
    + +

    API 变更

    + +API 版本本身也已升级至 0.11。由于这并非增量能力,而是会阻碍升级的变更,因此将在下文的[破坏性变更](#breaking-changes-and-how-to-upgrade-safely)中说明。本节所列变更均为增量且需显式启用: + +- Group/IndexRule/IndexRuleBinding/TopNAggregation 的创建和更新响应新增 `mod_revision`;所有删除响应新增 `delete_time`;新增 `created_at`,且更新时会保留该字段。 +- 新增 `STATUS_SCHEMA_NOT_APPLIED` 状态码,用于 Revision 超前于服务端缓存的写入与查询。 +- 新增 `SchemaBarrierService` RPC:`AwaitRevisionApplied`、`AwaitSchemaApplied` 和 `AwaitSchemaDeleted`。客户端可以阻塞等待,直到 Schema 变更真正传播至整个集群后再继续。 +- 新增 `QueryRequest.group_mod_revisions` / `QueryResponse.group_statuses`,用于按 Group 对查询路径进行 Revision 门控。 +- **BydbQL 新增 `?` 位置参数绑定**:可以绑定值,而无需将其以字符串方式插入查询文本,从而像参数化 SQL 一样防止 QL 注入。可复用的 `Prepared` 绑定类型还在 gRPC 查询路径之上增加了预处理语句缓存,并提供有界缓存、Top-K 保留、缓存与慢查询可观测性;慢查询日志中还会对绑定参数脱敏。 +- 新增校验:Measure 的 `ShardingKey` 现在必须包含所有 `Entity` Tag,以确保实体局部性。 + +

    破坏性变更与安全升级方法

    + +按照项目升级指南中的顺序,具体如下: + +**1. API 版本 0.11。** 不支持同时包含 0.10 与 0.11 节点的集群。此次升级需要维护窗口:停止写入和所有 API 客户端,停止全部 0.10 节点,将所有节点升级至 0.11 并启动,再将 API 客户端升级为要求 0.11 版本;确认 Schema 初始化和数据写入正常后,方可恢复流量。回滚时同样必须先停止所有客户端和节点——无论升级还是回滚,都绝不能运行 0.10/0.11 混合版本集群。 + +**2. 向量化查询路径:先升级 Liaison,再升级 Data。** 启用向量化路径的分布式 Data 节点会在 Liaison↔Data 线路上发送原生列式 Frame,而不是 Protobuf。0.11 Liaison 可以解码两种格式——它根据每条消息 Frame 开头的魔数进行分派;但旧版 Liaison 完全不具备 Frame 解码器,因此无法反序列化响应。这改变了常规的滚动升级顺序: + +| 升级顺序 | 结果 | +| --- | --- | +| 先 Liaison,后 Data | **安全。** 新版 Liaison 可以同时解码 Frame 和 Protobuf;旧版 Data 节点在升级前会继续发送 Protobuf。 | +| 先 Data,后 Liaison | 在整个发布过程中,**查询都会失败**。 | + +单机部署不受影响,因为只有分布式 Data 节点会发送这种 Frame。如果无法控制节点升级顺序,请在启动新版 Data 节点时添加 `--stream-vectorized-enabled=false --trace-vectorized-enabled=false --measure-vectorized-enabled=false`,并在所有 Liaison 升级完成后再启用这些选项。回滚也使用相同的三个选项;由于它们只影响查询路径和线上格式,不影响磁盘格式,因此无需迁移数据。对于沿用此前版本“Data 节点优先”假设的自动化滚动升级流水线,这项变更最容易造成问题。 + +**3. etcd 已移除。** 现在仅支持基于 Property 的 Schema Registry。所有 `--etcd-*` 选项和 `--namespace` 均已移除,`--node-discovery-mode` 也不再接受 `etcd`(请使用 `dns`、`file` 或 `none`)。如果 `--schema-registry-mode` 或 `--node-discovery-mode` 仍然引用 etcd,则必须先迁移至基于 Property 的 Registry,之后才能运行 0.11。 + +**4. 队列与生命周期指标经过重新设计。** `queue_pub`/`queue_sub` 指标现统一采用带 `operation`/`group` 标签的模型(旧有 `topic` 标签和 Chunk 排序指标族已移除);生命周期健康指标新增 `remote_node`/`remote_role`/`remote_tier`/`group` 标签,而 `banyandb_lifecycle_self_identity_resolution_total` 则被完全移除。请在升级前更新仪表盘和告警,而不是升级之后再处理。 + +完整的维护窗口检查清单请参阅[“升级至 0.11”完整指南](https://github.com/apache/skywalking-banyandb/blob/master/docs/operation/upgrade.md#upgrading-to-011)。 + +## 版本背后 + + +从 v0.10.3 到 v0.11.0,共有 14 位贡献者提交了非合并提交。这提醒我们,如此内容丰富的版本来自团队协作,而非一次单独的推进。 + +
    + + + BanyanDB 0.11.0 主要贡献者 + 提交数统计,v0.10.3 至 v0.11.0,非合并提交,共 14 位贡献者。Gao Hongtao 131 次、mrproliu 48 次、其他 8 位贡献者合计 18 次、Owen Willison 11 次、Huang Youliang 10 次、OmCheeLin 6 次、Tanay Paul 5 次。 + 0.11.0 主要贡献者 + 每位作者的提交数,v0.10.3→v0.11.0(共 14 位贡献者) + Gao Hongtao + + Gao Hongtao: 131 次提交 + 131 + mrproliu + + mrproliu: 48 次提交 + 48 + 其他 8 位贡献者 + + 其他 8 位贡献者: 18 次提交 + 18 + Owen Willison + + Owen Willison: 11 次提交 + 11 + Huang Youliang + + Huang Youliang: 10 次提交 + 10 + OmCheeLin + + OmCheeLin: 6 次提交 + 6 + Tanay Paul + + Tanay Paul: 5 次提交 + 5 + + 来源:BanyanDB Git 历史,v0.10.3…v0.11.0(229 次非合并提交,14 位作者) + + +
    来源:BanyanDB Git 历史,v0.10.3…v0.11.0(229 次非合并提交,14 位作者)。原创分析。
    +
    + +## 后续计划 + +向量化引擎的发布说明也列出了尚未完成的工作:分布式 Map 模式的部分聚合和多 Group(多 Measure)请求仍然使用逐行路径。这些缺口预计将在后续版本中补齐,而不是本次发布。随着 SDK 和开发工具包趋于稳定,链路采样流水线的插件生态也有望超越目前两个第一方采样器的规模。 + +## 常见问题 + +### 升级至 0.11 时,是否必须调整自动化升级顺序? + +是的。如果运行分布式集群,且启用了任一向量化选项(默认即为启用),就必须先升级 Liaison 节点,再升级 Data 节点;这与此前所有版本的建议顺序相反。另一种做法是在新版 Data 节点上暂时禁用向量化选项,等所有 Liaison 升级后再启用。 + +### 可以继续使用 etcd 进行 Schema 发现吗? + +不可以。在 0.11 中,`--schema-registry-mode` 仅接受 `property`,且所有 `--etcd-*` 选项均已移除。请在升级前迁移至基于 Property 的 Registry。 + +### 除性能外,向量化查询路径的正确性是否值得信赖? + +Measure 路径经过了 6 小时的生产环境浸泡测试,其输出与逐行路径逐字节一致,且未发现任何差异;此外还通过了针对各类工作负载的基准门禁。如果确实遇到不一致,三个引擎(Measure、Stream、Trace)都保留了回滚选项(`--{measure,stream,trace}-vectorized-enabled=false`),可立即切回逐行路径,且无需迁移数据。 + +### BydbQL 现在支持参数化查询了吗? + +是的。0.11 为 BydbQL 新增了 `?` 位置参数绑定,可以绑定值,而无需将其以字符串方式插入查询文本,从而防止 QL 注入。可复用的 `Prepared` 绑定类型还在 gRPC 查询路径中提供预处理语句缓存,并支持有界缓存、Top-K 保留、缓存与慢查询可观测性;慢查询日志中会对绑定参数脱敏。 + +### BydbQL MCP 插件与 `bydbctl agent` 有何区别? + +MCP 插件会为正在运行的任意 Claude Code 或 Codex 会话添加四个 BanyanDB 查询工具(Schema 发现、生成、校验和执行)。安装一次后,即可与其他工作一起使用。`bydbctl agent` 则是独立的专用双窗格终端界面,专为交互式 BanyanDB 查询而设计。如果希望在现有智能体工作流中查询 BanyanDB,请使用插件;如果希望使用独立查询工具,请使用 `bydbctl agent`。 + +## 总结 + +在 0.11.0 中,BanyanDB 的列式查询引擎从可选能力升级为默认路径;链路保留不再仅依靠简单粗放的 TTL,而是获得了真正可插拔的解决方案;编码智能体也能以自然语言一等访问数据。完整变更列表请阅读[完整的 0.11.0 发布说明](https://github.com/apache/skywalking-banyandb/tree/master/CHANGES.md)。在操作生产集群前,请务必逐项完成[“升级至 0.11”检查清单](https://github.com/apache/skywalking-banyandb/blob/master/docs/operation/upgrade.md#upgrading-to-011)。 From de4d34abc9e9e7178b6d1fd92f4109355b789903 Mon Sep 17 00:00:00 2001 From: Hongtao Gao Date: Tue, 8 Sep 2026 09:23:04 +0000 Subject: [PATCH 2/4] Refine Chinese BanyanDB blog prose --- .../index.md | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md b/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md index 0a4df9f2685e..03ec05a6da1a 100644 --- a/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md +++ b/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md @@ -12,7 +12,9 @@ tags: ![BanyanDB 0.11.0 发布封面:包含 229 次提交、14 位贡献者,以及默认启用向量化的三类查询引擎](banner.jpg) -[BanyanDB](https://github.com/apache/skywalking-banyandb) 0.11.0 已正式发布。这是一次内容丰富的更新:向量化查询从可选功能升级为默认查询路径;新增可插拔流水线来处理链路保留采样;集群级 Schema 一致性屏障弥补了一个真实存在的正确性缺口;编码智能体现在可以通过两种新方式使用自然语言查询 BanyanDB;同时,etcd 支持被完全移除,统一改用基于 Property 的 Schema Registry。我们不仅阅读了变更日志,还逐一梳理了此次发布背后的 229 次提交,总结出集群运维人员真正需要关注的内容。 +[BanyanDB](https://github.com/apache/skywalking-banyandb) 0.11.0 已正式发布。向量化查询从可选功能升级为默认路径;链路保留采样有了可插拔流水线;集群级 Schema 一致性屏障补上了正确性缺口;编码智能体可以通过两条新路径用自然语言查询 BanyanDB;etcd 支持也已移除,Schema Registry 统一使用 Property 模式。 + +我们逐一梳理了此次发布的 229 次提交,整理出集群运维人员需要关注的功能、性能改进、API 变化和升级风险。 > **核心要点** > @@ -21,7 +23,6 @@ tags: > - 编码智能体现在可以通过两种方式使用自然语言查询 BanyanDB:一种是带有 `bydbql` Skill 的 Claude Code/Codex **MCP 插件**,另一种是独立的 **`bydbctl agent`** 终端界面。 > - **etcd 支持已完全移除**,API 版本也升级至 0.11,因此请安排维护窗口执行升级。队列和生命周期指标同样经过了重新设计。 -下文将介绍值得尝试的新功能、值得关注的性能优化、新增的 API,以及如果准备不足便可能导致升级失败的破坏性变更。 ## 向量化查询现已默认启用 @@ -33,9 +34,9 @@ tags: ## 可插拔的链路保留采样流水线 -链路数据量是可观测性后端面临的经典难题:要么保留全部数据并承担相应成本,要么丢弃一部分数据,同时寄希望于真正重要的链路被保留下来。0.11 为 BanyanDB 提供了解法:在存储节点引入**合并中链路保留过滤器**。它会按 Group 执行采样器链,并从核心 Part 和二级索引 Part 中安全移除未保留的链路。采样器可按 Group 动态配置,并支持运行时注册、更新和移除。 +链路数据保留得越多,存储成本越高;直接丢弃数据,又可能删掉排障需要的链路。0.11 在存储节点加入了**合并中链路保留过滤器**。过滤器按 Group 执行采样器链,从核心 Part 和二级索引 Part 中安全移除未保留的链路。采样器可按 Group 动态配置,也支持运行时注册、更新和移除。 -以下两项设计使它成为真正面向生产环境的能力,而非一次性的过滤器: +为了让过滤器能在生产环境中稳定运行,0.11 加入了两项设计: - **最终化采样(Finalization sampling)**是一道尽力而为的兜底机制。节点范围内仅有一个并发度为 1 的扫描器,定期扫描已经冷却的 Segment,并让每个 Shard 尚未最终化的 Part 通过所属 Group 的采样器链进行强制合并。它复用现有的热合并路径,因此不会与热合并信号量竞争。每个 Part 都带有 `finalizeGen` 标记;该标记会先于 Part 元数据写入磁盘,因此即使进程崩溃,重放时也不会重复采样。 - **Drop set 的大小在设计上有界。** Shard 的首轮最终化可能会将所有已冷却的 Part 一次性选入同一次合并。如果不加限制,包含 1,800 万个条目的 Drop set 会占用约 1.3 GiB 活跃堆内存和 2.6 GiB 预留堆内存,而该进程还需要同时处理查询。因此,流水线限制的是采样*决策*数量,而不是裁剪谓词。一旦某次合并的 Drop set 已满,后续原本建议丢弃的记录都会被保留,而不再加入集合。这样,集合对于实际执行的丢弃操作始终是完整的,既不会出现孤立条目,也不会遗漏任何条目。上限由内存保护器按 `limit/(16×CPUs)` 计算,使并发合并的总占用保持在约 `limit/16`。 @@ -80,7 +81,9 @@ tags: ## 集群级 Schema 一致性 -在 0.11 之前,Schema 变更(例如创建 Stream、添加 Index Rule 或删除 Group)可能在集群中的所有节点真正应用变更之前,就由元数据服务返回成功。此时,如果查询命中尚未追上进度的节点,便可能看到过期或缺失的 Schema。0.11 引入了客户端可观测的 Revision 跟踪和屏障 RPC,弥补了这一缺口。具体字段和 RPC 请参阅下文的 [API 变更](#api-changes);完整 RPC 契约请参阅 [Schema 一致性客户端接口与 SchemaBarrierService 参考](https://github.com/apache/skywalking-banyandb/blob/master/docs/interacting/schema-consistency/barriers.md)。 +在 0.11 之前,Schema 变更(例如创建 Stream、添加 Index Rule 或删除 Group)可能尚未应用到集群中的所有节点,元数据服务就已经返回成功。此时,如果查询命中尚未追上进度的节点,便可能看到过期或缺失的 Schema。 + +0.11 引入了客户端可观测的 Revision 跟踪和屏障 RPC,补上了这一缺口。具体字段和 RPC 请参阅下文的 [API 变更](#api-changes);完整 RPC 契约请参阅 [Schema 一致性客户端接口与 SchemaBarrierService 参考](https://github.com/apache/skywalking-banyandb/blob/master/docs/interacting/schema-consistency/barriers.md)。 第二阶段将屏障扩展至整个集群:通过新增的 `NodeSchemaStatusService`,将相同调用扇出至每个 Liaison 和 Data 节点,并安全处理混合版本及成员变更场景。所有能力均为显式启用;取零值的请求会保留原有行为,因此不传入 Revision 的现有客户端不会受到影响。 @@ -88,9 +91,13 @@ tags: 0.11 为编码智能体提供了两种相互独立的 BanyanDB 查询方式,无需手写 BydbQL。 -第一种是 **Claude Code / Codex 插件**。它将 BanyanDB MCP Server 与 `bydbql` Skill 打包在一起,可针对 STREAM、MEASURE、TRACE 和 PROPERTY 资源将自然语言转换为 BydbQL。直接从仓库安装(在 Claude Code 中运行 `/plugin install apache/skywalking-banyandb`,或使用等效的 `codex plugin add` 流程)后,任意 Claude Code 或 Codex 会话都能获得四个 MCP 工具:`list_groups_schemas` 用于发现 Schema;`get_generate_bydbql_prompt` 用于生成查询(这是唯一会注入实时索引字段列表,并强制执行 `ORDER BY` Index Rule 替换的工具);`validate_bydbql` 通过预构建的 Go 二进制文件执行仅解析式的语法和安全校验;`list_resources_bydbql` 则用于执行已校验的只读语句。 +第一种是 **Claude Code / Codex 插件**。它将 BanyanDB MCP Server 与 `bydbql` Skill 打包在一起,可针对 STREAM、MEASURE、TRACE 和 PROPERTY 资源将自然语言转换为 BydbQL。直接从仓库安装即可使用:Claude Code 运行 `/plugin install apache/skywalking-banyandb`,Codex 使用对应的 `codex plugin add` 流程。 + +安装后,Claude Code 或 Codex 会话会获得四个 MCP 工具:`list_groups_schemas` 用于发现 Schema;`get_generate_bydbql_prompt` 用于生成查询(这是唯一会注入实时索引字段列表,并强制执行 `ORDER BY` Index Rule 替换的工具);`validate_bydbql` 通过预构建的 Go 二进制文件执行仅解析式的语法和安全校验;`list_resources_bydbql` 则用于执行已校验的只读语句。 + +第二种是 **`bydbctl agent`**。这是一个独立的双窗格终端界面,可直接驱动 Codex 或 Claude Code CLI 进程,以自然语言交互查询 BanyanDB。它会发现 Schema、生成类型明确的查询计划,并执行只读查询。 -第二种是 **`bydbctl agent`**。这是一个独立的双窗格终端界面,可直接驱动 Codex 或 Claude Code CLI 进程,以自然语言交互查询 BanyanDB:它会发现 Schema、提出类型明确的查询计划,并执行只读查询。它不持有任何 AI 提供商凭据;你需要单独为其封装的 CLI 完成认证。MCP 插件能把 BanyanDB 查询能力加入任意 Claude Code/Codex 会话,而 `bydbctl agent` 则是专门完成同一任务的独立交互式工具。 +`bydbctl agent` 不持有 AI 提供商凭据,需要先为它调用的 CLI 单独完成认证。MCP 插件把查询能力加入已有的 Claude Code/Codex 会话;`bydbctl agent` 则提供专用的交互界面。
    @@ -129,9 +136,9 @@ tags: ## 同期发布:Canopy、迁移工具及更多功能 -另外还有四项值得关注的新增能力: +0.11 同时加入四项能力: -- **Canopy** 是全新的管理界面。它不是嵌入现有 `ui/` 的页面,而是采用 Fastify BFF 的独立 React SPA,支持 Group/Stream/Measure/Trace/IndexRule 元数据的 CRUD、在分布式集群上完整支持 WHERE 子句的查询控制台、Property Collection CRUD,以及 TopN 聚合管理。它还拥有独立的 Docker 镜像、CI 和端到端测试套件。(这些细节来自 `canopy/` 相关提交及设计文档本身;CHANGES.md 对 Canopy 的介绍较为简略。) +- **Canopy** 是采用 Fastify BFF 的独立 React SPA,不依赖现有 `ui/`。它支持 Group/Stream/Measure/Trace/IndexRule 元数据的 CRUD、在分布式集群上完整支持 WHERE 子句的查询控制台、Property Collection CRUD,以及 TopN 聚合管理。它还拥有独立的 Docker 镜像、CI 和端到端测试套件。(这些细节来自 `canopy/` 相关提交及设计文档本身;CHANGES.md 对 Canopy 的介绍较为简略。) - **迁移工具**新增 `copy`、`verify` 和 `analyze` 子命令。在早期版本 Trace/生命周期迁移能力的基础上,现在也支持 Measure 和 Stream 数据,包括索引模式的 Measure。 - **Schema 变更时可以修改 Tag 类型,而不会破坏旧 Part。** 如果 Tag 类型发生变化(例如从 int 变为 string),BanyanDB 现在会将每种类型变体分别持久化到各自的文件(`{tag_name}.{tag_type}.tf`)中,而不再覆盖原文件;查询和合并逻辑则通过(名称、类型)二元组完成解析。该机制适用于 Measure、Stream、Trace 和 SIDX Part。 - Trace Part 合并采用**公平的快/慢通道调度**,短合并不再排在耗时较长的合并之后;队列等待时间现通过 `total_merge_queue_latency` 暴露。 @@ -170,11 +177,11 @@ tags:

    API 变更

    -API 版本本身也已升级至 0.11。由于这并非增量能力,而是会阻碍升级的变更,因此将在下文的[破坏性变更](#breaking-changes-and-how-to-upgrade-safely)中说明。本节所列变更均为增量且需显式启用: +API 版本也已升级至 0.11,这项变更会直接影响升级流程,详见下文的[破坏性变更](#breaking-changes-and-how-to-upgrade-safely)。本节先列出需要显式启用的增量 API: - Group/IndexRule/IndexRuleBinding/TopNAggregation 的创建和更新响应新增 `mod_revision`;所有删除响应新增 `delete_time`;新增 `created_at`,且更新时会保留该字段。 - 新增 `STATUS_SCHEMA_NOT_APPLIED` 状态码,用于 Revision 超前于服务端缓存的写入与查询。 -- 新增 `SchemaBarrierService` RPC:`AwaitRevisionApplied`、`AwaitSchemaApplied` 和 `AwaitSchemaDeleted`。客户端可以阻塞等待,直到 Schema 变更真正传播至整个集群后再继续。 +- 新增 `SchemaBarrierService` RPC:`AwaitRevisionApplied`、`AwaitSchemaApplied` 和 `AwaitSchemaDeleted`。客户端可以阻塞等待,直到 Schema 变更传播至整个集群后再继续。 - 新增 `QueryRequest.group_mod_revisions` / `QueryResponse.group_statuses`,用于按 Group 对查询路径进行 Revision 门控。 - **BydbQL 新增 `?` 位置参数绑定**:可以绑定值,而无需将其以字符串方式插入查询文本,从而像参数化 SQL 一样防止 QL 注入。可复用的 `Prepared` 绑定类型还在 gRPC 查询路径之上增加了预处理语句缓存,并提供有界缓存、Top-K 保留、缓存与慢查询可观测性;慢查询日志中还会对绑定参数脱敏。 - 新增校验:Measure 的 `ShardingKey` 现在必须包含所有 `Entity` Tag,以确保实体局部性。 @@ -249,7 +256,7 @@ API 版本本身也已升级至 0.11。由于这并非增量能力,而是会 ## 后续计划 -向量化引擎的发布说明也列出了尚未完成的工作:分布式 Map 模式的部分聚合和多 Group(多 Measure)请求仍然使用逐行路径。这些缺口预计将在后续版本中补齐,而不是本次发布。随着 SDK 和开发工具包趋于稳定,链路采样流水线的插件生态也有望超越目前两个第一方采样器的规模。 +向量化引擎的发布说明也列出了尚未完成的工作:分布式 Map 模式的部分聚合和多 Group(多 Measure)请求仍然使用逐行路径。这些缺口预计要到后续版本才会补齐。随着 SDK 和开发工具包趋于稳定,链路采样流水线的插件生态也有望超越目前两个第一方采样器的规模。 ## 常见问题 @@ -275,4 +282,4 @@ MCP 插件会为正在运行的任意 Claude Code 或 Codex 会话添加四个 B ## 总结 -在 0.11.0 中,BanyanDB 的列式查询引擎从可选能力升级为默认路径;链路保留不再仅依靠简单粗放的 TTL,而是获得了真正可插拔的解决方案;编码智能体也能以自然语言一等访问数据。完整变更列表请阅读[完整的 0.11.0 发布说明](https://github.com/apache/skywalking-banyandb/tree/master/CHANGES.md)。在操作生产集群前,请务必逐项完成[“升级至 0.11”检查清单](https://github.com/apache/skywalking-banyandb/blob/master/docs/operation/upgrade.md#upgrading-to-011)。 +BanyanDB 0.11.0 默认启用列式查询引擎,用可插拔流水线处理链路保留采样,并为编码智能体提供自然语言查询入口。升级分布式集群时,0.11 API 版本和 Liaison→Data 的节点顺序都会影响服务可用性。完整改动见[0.11.0 发布说明](https://github.com/apache/skywalking-banyandb/tree/master/CHANGES.md),生产升级步骤见[“升级至 0.11”检查清单](https://github.com/apache/skywalking-banyandb/blob/master/docs/operation/upgrade.md#upgrading-to-011)。 From c3199d6526e42c515c8a266b6622547b3167680b Mon Sep 17 00:00:00 2001 From: Hongtao Gao Date: Tue, 8 Sep 2026 09:46:10 +0000 Subject: [PATCH 3/4] Simplify Chinese release blog technical prose --- .../index.md | 46 ++++++++++--------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md b/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md index 03ec05a6da1a..5f29351fba7a 100644 --- a/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md +++ b/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md @@ -23,12 +23,11 @@ tags: > - 编码智能体现在可以通过两种方式使用自然语言查询 BanyanDB:一种是带有 `bydbql` Skill 的 Claude Code/Codex **MCP 插件**,另一种是独立的 **`bydbctl agent`** 终端界面。 > - **etcd 支持已完全移除**,API 版本也升级至 0.11,因此请安排维护窗口执行升级。队列和生命周期指标同样经过了重新设计。 - ## 向量化查询现已默认启用 列式(向量化)查询路径使用批量列式流水线取代逐行 Protobuf 序列化。自 0.10 起,Measure 查询已经默认使用该路径;在 0.11 中,**Stream 和 Trace 查询也加入其中**:`--stream-vectorized-enabled`、`--trace-vectorized-enabled` 和 `--measure-vectorized-enabled` 均默认为 `true`。 -对于 Measure 查询,单节点场景的覆盖现已完整:扫描、通过 `BatchAggregation` 实现的 `GroupBy`+`Agg`、标量归并(scalar reduce)、原始 `GroupBy`、`TopN`/`BottomN`、`order_by`,以及边界错误的一致性,都会通过向量化分派执行,并保持与逐行路径相同的语义。其 gRPC 线上格式与逐行路径的输出逐字节一致;团队还通过 6 小时的生产环境浸泡测试验证了这一点,期间未发现任何差异。分布式 Map 模式的部分聚合和多 Group 请求目前仍使用逐行路径,后续版本将继续完善。 +对于 Measure 查询,单节点场景的覆盖现已完整:扫描、通过 `BatchAggregation` 实现的 `GroupBy`+`Agg`、标量归并(scalar reduce)、原始 `GroupBy`、`TopN`/`BottomN`、`order_by`,以及边界错误的一致性,都会通过向量化分派执行,并保持与逐行路径相同的语义。其 gRPC 传输格式与逐行路径的输出逐字节一致;团队还通过 6 小时的生产环境持续运行测试(soak test)验证了这一点,期间未发现任何差异。分布式 Map 模式的部分聚合和多 Group 请求目前仍使用逐行路径,后续版本将继续完善。 这也是本次发布中最重要的**滚动升级破坏性变更**。所需的升级顺序请参阅下文的[破坏性变更与安全升级方法](#breaking-changes-and-how-to-upgrade-safely)。 @@ -36,10 +35,12 @@ tags: 链路数据保留得越多,存储成本越高;直接丢弃数据,又可能删掉排障需要的链路。0.11 在存储节点加入了**合并中链路保留过滤器**。过滤器按 Group 执行采样器链,从核心 Part 和二级索引 Part 中安全移除未保留的链路。采样器可按 Group 动态配置,也支持运行时注册、更新和移除。 -为了让过滤器能在生产环境中稳定运行,0.11 加入了两项设计: +采样流水线还要处理漏采样和内存占用问题。 + +- **最终化采样(Finalization sampling)**提供尽力而为的兜底处理。每个节点只有一个并发度为 1 的扫描器,定期扫描已经冷却的 Segment,并让每个 Shard 尚未最终化的 Part 通过所属 Group 的采样器链进行强制合并。它复用现有的热合并路径,因此不会与热合并信号量竞争。每个 Part 都带有 `finalizeGen` 标记;该标记会先于 Part 元数据写入磁盘,因此即使进程崩溃,重放时也不会重复采样。 +- **Drop set 有大小上限。** Shard 的首轮最终化可能会将所有已冷却的 Part 选入同一次合并。如果不加限制,包含 1,800 万个条目的 Drop set 会占用约 1.3 GiB 活跃堆内存和 2.6 GiB 预留堆内存,而该进程还需要同时处理查询。 -- **最终化采样(Finalization sampling)**是一道尽力而为的兜底机制。节点范围内仅有一个并发度为 1 的扫描器,定期扫描已经冷却的 Segment,并让每个 Shard 尚未最终化的 Part 通过所属 Group 的采样器链进行强制合并。它复用现有的热合并路径,因此不会与热合并信号量竞争。每个 Part 都带有 `finalizeGen` 标记;该标记会先于 Part 元数据写入磁盘,因此即使进程崩溃,重放时也不会重复采样。 -- **Drop set 的大小在设计上有界。** Shard 的首轮最终化可能会将所有已冷却的 Part 一次性选入同一次合并。如果不加限制,包含 1,800 万个条目的 Drop set 会占用约 1.3 GiB 活跃堆内存和 2.6 GiB 预留堆内存,而该进程还需要同时处理查询。因此,流水线限制的是采样*决策*数量,而不是裁剪谓词。一旦某次合并的 Drop set 已满,后续原本建议丢弃的记录都会被保留,而不再加入集合。这样,集合对于实际执行的丢弃操作始终是完整的,既不会出现孤立条目,也不会遗漏任何条目。上限由内存保护器按 `limit/(16×CPUs)` 计算,使并发合并的总占用保持在约 `limit/16`。 + 流水线对采样*决策*数量设置上限,裁剪谓词保持不变。某次合并的 Drop set 满后,后续原本建议丢弃的记录会直接保留,不再加入集合。集合仍完整记录实际执行的丢弃操作,不会产生孤立或遗漏条目。上限由内存保护器按 `limit/(16×CPUs)` 计算,使并发合并的总占用保持在约 `limit/16`。
    @@ -75,7 +76,7 @@ tags: 完整的推导过程请参阅 [Trace Drop Set 边界设计文档](https://github.com/apache/skywalking-banyandb/blob/master/docs/design/trace-drop-set-bounding.md)。 -项目随版本提供了适配 SkyWalking 自有 Trace Schema 和 Zipkin 的第一方采样器插件(`sw-trace-sampler.so`、`zipkin-trace-sampler.so`),以及带资源上限的遥测 SDK。采样器插件因此可以输出自身经过计量的指标和日志,而不会让宿主进程的基数或日志预算无限增长。 +版本自带适配 SkyWalking 自有 Trace Schema 和 Zipkin 的采样器插件(`sw-trace-sampler.so`、`zipkin-trace-sampler.so`),以及带资源上限的遥测 SDK。插件可以输出自身的指标和日志,SDK 会限制基数和日志开销,避免占用过多宿主进程资源。 完整的配置 Schema 请参阅 [Trace Pipeline 插件 SDK 与采样器配置参考](https://github.com/apache/skywalking-banyandb/blob/master/plugins/README.md)。 @@ -85,7 +86,7 @@ tags: 0.11 引入了客户端可观测的 Revision 跟踪和屏障 RPC,补上了这一缺口。具体字段和 RPC 请参阅下文的 [API 变更](#api-changes);完整 RPC 契约请参阅 [Schema 一致性客户端接口与 SchemaBarrierService 参考](https://github.com/apache/skywalking-banyandb/blob/master/docs/interacting/schema-consistency/barriers.md)。 -第二阶段将屏障扩展至整个集群:通过新增的 `NodeSchemaStatusService`,将相同调用扇出至每个 Liaison 和 Data 节点,并安全处理混合版本及成员变更场景。所有能力均为显式启用;取零值的请求会保留原有行为,因此不传入 Revision 的现有客户端不会受到影响。 +第二阶段将屏障扩展至整个集群:通过新增的 `NodeSchemaStatusService`,将相同调用分发到每个 Liaison 和 Data 节点,并处理混合版本和成员变更场景。调用方需要显式启用这组功能。请求值为零时仍按原有逻辑处理,不传入 Revision 的现有客户端不受影响。 ## 编码智能体的自然语言查询 @@ -93,7 +94,12 @@ tags: 第一种是 **Claude Code / Codex 插件**。它将 BanyanDB MCP Server 与 `bydbql` Skill 打包在一起,可针对 STREAM、MEASURE、TRACE 和 PROPERTY 资源将自然语言转换为 BydbQL。直接从仓库安装即可使用:Claude Code 运行 `/plugin install apache/skywalking-banyandb`,Codex 使用对应的 `codex plugin add` 流程。 -安装后,Claude Code 或 Codex 会话会获得四个 MCP 工具:`list_groups_schemas` 用于发现 Schema;`get_generate_bydbql_prompt` 用于生成查询(这是唯一会注入实时索引字段列表,并强制执行 `ORDER BY` Index Rule 替换的工具);`validate_bydbql` 通过预构建的 Go 二进制文件执行仅解析式的语法和安全校验;`list_resources_bydbql` 则用于执行已校验的只读语句。 +安装后,Claude Code 或 Codex 会话会获得四个 MCP 工具: + +- `list_groups_schemas`:发现 Schema。 +- `get_generate_bydbql_prompt`:生成查询。只有这个工具会注入实时索引字段列表,并强制执行 `ORDER BY` Index Rule 替换。 +- `validate_bydbql`:调用预构建的 Go 二进制文件,仅解析语句,完成语法和安全校验。 +- `list_resources_bydbql`:执行已校验的只读语句。 第二种是 **`bydbctl agent`**。这是一个独立的双窗格终端界面,可直接驱动 Codex 或 Claude Code CLI 进程,以自然语言交互查询 BanyanDB。它会发现 Schema、生成类型明确的查询计划,并执行只读查询。 @@ -138,7 +144,7 @@ tags: 0.11 同时加入四项能力: -- **Canopy** 是采用 Fastify BFF 的独立 React SPA,不依赖现有 `ui/`。它支持 Group/Stream/Measure/Trace/IndexRule 元数据的 CRUD、在分布式集群上完整支持 WHERE 子句的查询控制台、Property Collection CRUD,以及 TopN 聚合管理。它还拥有独立的 Docker 镜像、CI 和端到端测试套件。(这些细节来自 `canopy/` 相关提交及设计文档本身;CHANGES.md 对 Canopy 的介绍较为简略。) +- **Canopy** 是采用 Fastify BFF 的独立 React SPA,不依赖现有 `ui/`。它支持 Group/Stream/Measure/Trace/IndexRule 元数据和 Property Collection 的 CRUD,以及 TopN 聚合管理。查询控制台在分布式集群上完整支持 WHERE 子句。它还拥有独立的 Docker 镜像、CI 和端到端测试套件。(功能说明依据 `canopy/` 相关提交及设计文档整理;CHANGES.md 对 Canopy 的介绍较简略。) - **迁移工具**新增 `copy`、`verify` 和 `analyze` 子命令。在早期版本 Trace/生命周期迁移能力的基础上,现在也支持 Measure 和 Stream 数据,包括索引模式的 Measure。 - **Schema 变更时可以修改 Tag 类型,而不会破坏旧 Part。** 如果 Tag 类型发生变化(例如从 int 变为 string),BanyanDB 现在会将每种类型变体分别持久化到各自的文件(`{tag_name}.{tag_type}.tf`)中,而不再覆盖原文件;查询和合并逻辑则通过(名称、类型)二元组完成解析。该机制适用于 Measure、Stream、Trace 和 SIDX Part。 - Trace Part 合并采用**公平的快/慢通道调度**,短合并不再排在耗时较长的合并之后;队列等待时间现通过 `total_merge_queue_latency` 暴露。 @@ -147,12 +153,12 @@ tags: ## 性能改进 -除上述默认启用向量化的查询引擎外,0.11 还包含多项有针对性的优化: +0.11 还减少了点查解码、采样、备份上传和生命周期迁移的开销。 -- Trace 和 Stream 的**点查更快**:通过延迟解码 Block 元数据,只需少量行的查询不再需要预先承担元数据解码开销。 +- Trace 和 Stream 的**点查更快**:通过延迟解码 Block 元数据,只读取少量行的查询可以省去预先解码元数据的开销。 - **Trace 采样器的解码路径得到优化**:延迟解码、字符串和 Tag 的零拷贝处理、提前拒绝 Tag、直接读取标量,以及缓存规则前缀,使 SkyWalking 和 Zipkin 采样器的采样决策成本与 Tag 规则成本大约减半。 - **GCS 备份上传更快**:每个对象及其校验和元数据现在通过一次请求写入,省去了每个对象一次的 `Update` 往返。 -- **生命周期迁移的内存效率显著提高。** 通过流式 Dump Reader 和按大小分级的序列化缓冲池,不再将大型 Measure Part 整体读入内存;在相同工作负载下,行重放的堆内存峰值降低了约 80%: +- **生命周期迁移的堆内存峰值降低约 80%。** 通过流式 Dump Reader 和按大小分级的序列化缓冲池,不再将大型 Measure Part 整体读入内存;下图对比了相同工作负载下行重放的堆内存峰值。
    @@ -188,7 +194,7 @@ API 版本也已升级至 0.11,这项变更会直接影响升级流程,详

    破坏性变更与安全升级方法

    -按照项目升级指南中的顺序,具体如下: +项目升级指南列出了以下兼容性要求。 **1. API 版本 0.11。** 不支持同时包含 0.10 与 0.11 节点的集群。此次升级需要维护窗口:停止写入和所有 API 客户端,停止全部 0.10 节点,将所有节点升级至 0.11 并启动,再将 API 客户端升级为要求 0.11 版本;确认 Schema 初始化和数据写入正常后,方可恢复流量。回滚时同样必须先停止所有客户端和节点——无论升级还是回滚,都绝不能运行 0.10/0.11 混合版本集群。 @@ -199,18 +205,18 @@ API 版本也已升级至 0.11,这项变更会直接影响升级流程,详 | 先 Liaison,后 Data | **安全。** 新版 Liaison 可以同时解码 Frame 和 Protobuf;旧版 Data 节点在升级前会继续发送 Protobuf。 | | 先 Data,后 Liaison | 在整个发布过程中,**查询都会失败**。 | -单机部署不受影响,因为只有分布式 Data 节点会发送这种 Frame。如果无法控制节点升级顺序,请在启动新版 Data 节点时添加 `--stream-vectorized-enabled=false --trace-vectorized-enabled=false --measure-vectorized-enabled=false`,并在所有 Liaison 升级完成后再启用这些选项。回滚也使用相同的三个选项;由于它们只影响查询路径和线上格式,不影响磁盘格式,因此无需迁移数据。对于沿用此前版本“Data 节点优先”假设的自动化滚动升级流水线,这项变更最容易造成问题。 +单机部署不受影响,因为只有分布式 Data 节点会发送这种 Frame。如果无法控制节点升级顺序,请在启动新版 Data 节点时添加 `--stream-vectorized-enabled=false --trace-vectorized-enabled=false --measure-vectorized-enabled=false`,并在所有 Liaison 升级完成后再启用这些选项。回滚也使用相同的三个选项;由于它们只影响查询路径和传输格式,不影响磁盘格式,因此无需迁移数据。对于沿用此前版本“Data 节点优先”假设的自动化滚动升级流水线,这项变更最容易造成问题。 **3. etcd 已移除。** 现在仅支持基于 Property 的 Schema Registry。所有 `--etcd-*` 选项和 `--namespace` 均已移除,`--node-discovery-mode` 也不再接受 `etcd`(请使用 `dns`、`file` 或 `none`)。如果 `--schema-registry-mode` 或 `--node-discovery-mode` 仍然引用 etcd,则必须先迁移至基于 Property 的 Registry,之后才能运行 0.11。 -**4. 队列与生命周期指标经过重新设计。** `queue_pub`/`queue_sub` 指标现统一采用带 `operation`/`group` 标签的模型(旧有 `topic` 标签和 Chunk 排序指标族已移除);生命周期健康指标新增 `remote_node`/`remote_role`/`remote_tier`/`group` 标签,而 `banyandb_lifecycle_self_identity_resolution_total` 则被完全移除。请在升级前更新仪表盘和告警,而不是升级之后再处理。 +**4. 队列与生命周期指标经过重新设计。** `queue_pub`/`queue_sub` 指标现统一采用带 `operation`/`group` 标签的模型(旧有 `topic` 标签和 Chunk 排序指标族已移除);生命周期健康指标新增 `remote_node`/`remote_role`/`remote_tier`/`group` 标签,而 `banyandb_lifecycle_self_identity_resolution_total` 则被完全移除。仪表盘和告警需要在升级前改用新版指标。 完整的维护窗口检查清单请参阅[“升级至 0.11”完整指南](https://github.com/apache/skywalking-banyandb/blob/master/docs/operation/upgrade.md#upgrading-to-011)。 ## 版本背后 -从 v0.10.3 到 v0.11.0,共有 14 位贡献者提交了非合并提交。这提醒我们,如此内容丰富的版本来自团队协作,而非一次单独的推进。 +从 v0.10.3 到 v0.11.0,14 位贡献者共提交了 229 次非合并提交,下图列出了提交数分布。
    @@ -256,7 +262,7 @@ API 版本也已升级至 0.11,这项变更会直接影响升级流程,详 ## 后续计划 -向量化引擎的发布说明也列出了尚未完成的工作:分布式 Map 模式的部分聚合和多 Group(多 Measure)请求仍然使用逐行路径。这些缺口预计要到后续版本才会补齐。随着 SDK 和开发工具包趋于稳定,链路采样流水线的插件生态也有望超越目前两个第一方采样器的规模。 +向量化引擎的发布说明也列出了尚未完成的工作:分布式 Map 模式的部分聚合和多 Group(多 Measure)请求仍然使用逐行路径。这两项查询能力预计要到后续版本才会补齐。随着 SDK 和开发工具包稳定下来,链路采样插件也有望在现有两个项目自带采样器的基础上继续增加。 ## 常见问题 @@ -270,7 +276,7 @@ API 版本也已升级至 0.11,这项变更会直接影响升级流程,详 ### 除性能外,向量化查询路径的正确性是否值得信赖? -Measure 路径经过了 6 小时的生产环境浸泡测试,其输出与逐行路径逐字节一致,且未发现任何差异;此外还通过了针对各类工作负载的基准门禁。如果确实遇到不一致,三个引擎(Measure、Stream、Trace)都保留了回滚选项(`--{measure,stream,trace}-vectorized-enabled=false`),可立即切回逐行路径,且无需迁移数据。 +Measure 路径经过了 6 小时的生产环境持续运行测试(soak test),输出与逐行路径逐字节一致,未发现差异;针对各类工作负载的基准检查也已通过。如果确实遇到不一致,三个引擎(Measure、Stream、Trace)都保留了回滚选项(`--{measure,stream,trace}-vectorized-enabled=false`),可立即切回逐行路径,且无需迁移数据。 ### BydbQL 现在支持参数化查询了吗? @@ -280,6 +286,4 @@ Measure 路径经过了 6 小时的生产环境浸泡测试,其输出与逐行 MCP 插件会为正在运行的任意 Claude Code 或 Codex 会话添加四个 BanyanDB 查询工具(Schema 发现、生成、校验和执行)。安装一次后,即可与其他工作一起使用。`bydbctl agent` 则是独立的专用双窗格终端界面,专为交互式 BanyanDB 查询而设计。如果希望在现有智能体工作流中查询 BanyanDB,请使用插件;如果希望使用独立查询工具,请使用 `bydbctl agent`。 -## 总结 - -BanyanDB 0.11.0 默认启用列式查询引擎,用可插拔流水线处理链路保留采样,并为编码智能体提供自然语言查询入口。升级分布式集群时,0.11 API 版本和 Liaison→Data 的节点顺序都会影响服务可用性。完整改动见[0.11.0 发布说明](https://github.com/apache/skywalking-banyandb/tree/master/CHANGES.md),生产升级步骤见[“升级至 0.11”检查清单](https://github.com/apache/skywalking-banyandb/blob/master/docs/operation/upgrade.md#upgrading-to-011)。 +完整改动见[0.11.0 发布说明](https://github.com/apache/skywalking-banyandb/tree/master/CHANGES.md),生产升级步骤见[“升级至 0.11”检查清单](https://github.com/apache/skywalking-banyandb/blob/master/docs/operation/upgrade.md#upgrading-to-011)。0.11 API 版本的兼容性要求和 Liaison→Data 的升级顺序都会影响分布式集群的服务可用性。 From d932caaa48a6176854d233838912c6b3728f8b07 Mon Sep 17 00:00:00 2001 From: Hongtao Gao Date: Tue, 8 Sep 2026 09:52:18 +0000 Subject: [PATCH 4/4] Clarify post-persistence Trace sampling terminology in Chinese blog --- .../index.md | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md b/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md index 5f29351fba7a..83eef61cdafb 100644 --- a/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md +++ b/content/zh/banyandb-0-11-0-vectorized-queries-by-default-explained/index.md @@ -2,7 +2,7 @@ title: "BanyanDB 0.11.0:新特性与升级指南" date: 2026-09-07 author: "BanyanDB 团队" -description: "BanyanDB 0.11.0:默认启用向量化查询、可插拔链路采样、Schema 屏障,以及不可忽略的升级顺序。" +description: "BanyanDB 0.11.0:默认启用向量化查询、可插拔 Trace 后采样、Schema 屏障,以及不可忽略的升级顺序。" tags: - Release - Storage @@ -12,14 +12,14 @@ tags: ![BanyanDB 0.11.0 发布封面:包含 229 次提交、14 位贡献者,以及默认启用向量化的三类查询引擎](banner.jpg) -[BanyanDB](https://github.com/apache/skywalking-banyandb) 0.11.0 已正式发布。向量化查询从可选功能升级为默认路径;链路保留采样有了可插拔流水线;集群级 Schema 一致性屏障补上了正确性缺口;编码智能体可以通过两条新路径用自然语言查询 BanyanDB;etcd 支持也已移除,Schema Registry 统一使用 Property 模式。 +[BanyanDB](https://github.com/apache/skywalking-banyandb) 0.11.0 已正式发布。向量化查询从可选功能升级为默认路径;Trace 后采样有了可插拔流水线;集群级 Schema 一致性屏障补上了正确性缺口;编码智能体可以通过两条新路径用自然语言查询 BanyanDB;etcd 支持也已移除,Schema Registry 统一使用 Property 模式。 我们逐一梳理了此次发布的 229 次提交,整理出集群运维人员需要关注的功能、性能改进、API 变化和升级风险。 > **核心要点** > > - Measure、Stream 和 Trace 的向量化查询路径现已**默认启用**,可减少扫描密集型查询的内存分配;但这也改变了滚动升级顺序:必须**先升级 Liaison 节点,再升级 Data 节点**。 -> - 新增的合并中(in-merge)和最终化阶段(finalize-time)链路保留采样流水线,可通过可插拔的 `.so` 采样器插件丢弃不需要的 Span;即使一次合并涉及数百万条链路,其内存占用也有明确上限。 +> - 新增 **Trace 后采样**流水线,在数据落盘后的合并中(in-merge)和最终化阶段(finalize-time)执行采样。此时 Trace 相对更完整,采样依据也更充分。流水线通过可插拔的 `.so` 采样器插件决定保留或丢弃哪些 Trace;即使一次合并涉及数百万条链路,其内存占用也有明确上限。 > - 编码智能体现在可以通过两种方式使用自然语言查询 BanyanDB:一种是带有 `bydbql` Skill 的 Claude Code/Codex **MCP 插件**,另一种是独立的 **`bydbctl agent`** 终端界面。 > - **etcd 支持已完全移除**,API 版本也升级至 0.11,因此请安排维护窗口执行升级。队列和生命周期指标同样经过了重新设计。 @@ -31,11 +31,13 @@ tags: 这也是本次发布中最重要的**滚动升级破坏性变更**。所需的升级顺序请参阅下文的[破坏性变更与安全升级方法](#breaking-changes-and-how-to-upgrade-safely)。 -## 可插拔的链路保留采样流水线 +## 可插拔的 Trace 后采样流水线 -链路数据保留得越多,存储成本越高;直接丢弃数据,又可能删掉排障需要的链路。0.11 在存储节点加入了**合并中链路保留过滤器**。过滤器按 Group 执行采样器链,从核心 Part 和二级索引 Part 中安全移除未保留的链路。采样器可按 Group 动态配置,也支持运行时注册、更新和移除。 +Trace 前采样在探针端就决定是否采集和上报链路数据。BanyanDB 0.11 提供的 **Trace 后采样**则在数据已经落盘后进行。此时 Trace 相对更完整,可用于采样判断的信息也更充分,但不意味着每条 Trace 都已完整到齐。 -采样流水线还要处理漏采样和内存占用问题。 +链路数据保留得越多,存储成本越高。后采样根据落盘后的 Trace 信息决定哪些链路需要继续保留。0.11 在存储节点加入了**合并中 Trace 后采样过滤器**,按 Group 执行采样器链,从核心 Part 和二级索引 Part 中安全移除未保留的链路。采样器可按 Group 动态配置,也支持运行时注册、更新和移除。 + +后采样流水线还要处理漏采样和内存占用问题。 - **最终化采样(Finalization sampling)**提供尽力而为的兜底处理。每个节点只有一个并发度为 1 的扫描器,定期扫描已经冷却的 Segment,并让每个 Shard 尚未最终化的 Part 通过所属 Group 的采样器链进行强制合并。它复用现有的热合并路径,因此不会与热合并信号量竞争。每个 Part 都带有 `finalizeGen` 标记;该标记会先于 Part 元数据写入磁盘,因此即使进程崩溃,重放时也不会重复采样。 - **Drop set 有大小上限。** Shard 的首轮最终化可能会将所有已冷却的 Part 选入同一次合并。如果不加限制,包含 1,800 万个条目的 Drop set 会占用约 1.3 GiB 活跃堆内存和 2.6 GiB 预留堆内存,而该进程还需要同时处理查询。 @@ -44,9 +46,9 @@ tags:
    - - 链路保留采样流水线如何决定保留哪些数据 - 采样器链接收两类输入:在合并中过滤阶段评估的新 Part,以及由最终化兜底扫描器扫描、未经过合并中过滤的已冷却 Segment。采样器链按 Group 规则评估,并将每条链路分流为保留或丢弃。 + + Trace 后采样流水线如何决定保留哪些数据 + 后采样在数据落盘后执行。采样器链接收两类输入:在合并中过滤阶段评估的新 Part,以及由最终化兜底扫描器扫描、未经过合并中过滤的已冷却 Segment。采样器链按 Group 规则评估,并将每条链路分流为保留或丢弃。 新 Part (合并中过滤器) @@ -71,7 +73,7 @@ tags: 来源:BanyanDB CHANGES.md 与 docs/design/trace-drop-set-bounding.md,0.11.0 -
    链路保留采样流水线如何决定保留哪些数据。原创示意图。
    +
    Trace 后采样流水线如何决定保留哪些数据。原创示意图。
    完整的推导过程请参阅 [Trace Drop Set 边界设计文档](https://github.com/apache/skywalking-banyandb/blob/master/docs/design/trace-drop-set-bounding.md)。 @@ -156,7 +158,7 @@ tags: 0.11 还减少了点查解码、采样、备份上传和生命周期迁移的开销。 - Trace 和 Stream 的**点查更快**:通过延迟解码 Block 元数据,只读取少量行的查询可以省去预先解码元数据的开销。 -- **Trace 采样器的解码路径得到优化**:延迟解码、字符串和 Tag 的零拷贝处理、提前拒绝 Tag、直接读取标量,以及缓存规则前缀,使 SkyWalking 和 Zipkin 采样器的采样决策成本与 Tag 规则成本大约减半。 +- **Trace 后采样器的解码路径得到优化**:延迟解码、字符串和 Tag 的零拷贝处理、提前拒绝 Tag、直接读取标量,以及缓存规则前缀,使 SkyWalking 和 Zipkin 采样器的采样决策成本与 Tag 规则成本大约减半。 - **GCS 备份上传更快**:每个对象及其校验和元数据现在通过一次请求写入,省去了每个对象一次的 `Update` 往返。 - **生命周期迁移的堆内存峰值降低约 80%。** 通过流式 Dump Reader 和按大小分级的序列化缓冲池,不再将大型 Measure Part 整体读入内存;下图对比了相同工作负载下行重放的堆内存峰值。 @@ -262,7 +264,7 @@ API 版本也已升级至 0.11,这项变更会直接影响升级流程,详 ## 后续计划 -向量化引擎的发布说明也列出了尚未完成的工作:分布式 Map 模式的部分聚合和多 Group(多 Measure)请求仍然使用逐行路径。这两项查询能力预计要到后续版本才会补齐。随着 SDK 和开发工具包稳定下来,链路采样插件也有望在现有两个项目自带采样器的基础上继续增加。 +向量化引擎的发布说明也列出了尚未完成的工作:分布式 Map 模式的部分聚合和多 Group(多 Measure)请求仍然使用逐行路径。这两项查询能力预计要到后续版本才会补齐。随着 SDK 和开发工具包稳定下来,Trace 后采样插件也有望在现有两个项目自带采样器的基础上继续增加。 ## 常见问题