DuckDB 2.0.0 以 LTS 身份发布,服务端、异步 I/O、VARIANT、触发器与 PEG 解析器一次打包;Databricks AI Runtime GA,把 GPU 训练收进湖仓治理边界;Lance 2.3 打出 v14.0.0-rc.1,btree 索引换行地址域、JSONB 转为自有实现;Google Cloud 同日给 Dataflow 补上跨区流式高可用
本期聚焦四条 10 月 21 日的进展,动作形状一致:把一道原本跑在系统外面、靠人或靠外部服务兜住的工序搬进系统内部——DuckDB 把服务端、异步 I/O、扩展托管与触发器搬进内核,Databricks 把 GPU 平台搬进 Unity Catalog 的治理边界,Lance 把格式契约冻结成 RC,Google Cloud 把跨区容灾、文档切分与元数据编目变成开关或函数。
本期四条动态全部落在 10 月 21 日这一天,来自两个开源项目与两个平台方,做的是同一件事:把一道原本要在系统外面绕一道的工序搬进系统内部,然后把搬进来带来的代价逐条写在明面上。DuckDB 发布 2.0.0 LTS「Cinnamon Teal」,距 1.5 累计近
20,000次提交,把客户端-服务端模式、异步 I/O、一等公民的 VARIANT、触发器、PEG 解析器与自托管扩展仓库一次性收进内核,代价是存储格式单向不兼容——2.0 之前版本读不了 2.0 写的文件。Databricks 宣布 AI Runtime GA,把 GPU 采购、健康检查、环境缓存与可观测性收进湖仓,代价是 GPU 工作负载从此落在 Unity Catalog 的权限与 serverless 隔离语义之内。Lance 打出v14.0.0-rc.1,2.3 格式从 beta 进入 RC,代价是一份含8条破坏性变更的公开清单,其中 btree 标量索引换行地址域会直接打乱在 crate 之外自建索引的做法。Google Cloud 同日在发布说明里给出三项:Dataflow 流式高可用让后端状态跨区复制、BigQuery 的AI.CHUNK_DOCUMENT转 GA、Looker 元数据自动编目进 Knowledge Catalog 转 GA,代价分别是强制区域放置与资源计费、依赖 Document AI layout parser、血缘集成仍留在 Preview。
DuckDB 2.0.0 LTS:把服务端、异步 I/O、VARIANT、触发器与 PEG 解析器一次收进内核
事件概述
10 月 21 日,DuckDB 团队发布 2.0.0,代号「Cinnamon Teal」(Spatula cyanoptera),并明确这是一次长期支持版本。官方博文的定性很直接:1.0 是关于稳定性与向后兼容的,2.0 首先是特性版本。累计提交数接近 20,000,起点是 DuckDB 1.5。
版本线一并变成三条。2.0 是 LTS,支持至至少 2027 年 10 月;上一个 LTS 版本 1.4 仍支持到 2026 年 11 月下旬;为了让迁移有足够测试窗口,1.5 的支持期被延长到 2027 年 3 月,实际上也被转成 LTS。客户端侧 CLI 与 Python 已可用,Go、R、Java 与部分扩展因为改动较大、需要额外评审,会晚几天。
发布形态上的另一个变化是 DuckDB 第一次以「服务器」的身份出现。Quack 协议在 1.5.3 引入,2.0.0 交付的是打磨过的版本,并新增 CONNECT 语句;CLI 也配套了 -serve 与 -connect。
技术解析
- Quack 与
CONNECT:服务端用CALL quack_serve(token = 'my_token')起,客户端ATTACH 'quack:localhost' AS qk (TOKEN 'my_token')后CONNECT qk即可切过去。默认只监听 localhost;跨机器访问的建议做法是保持 localhost 并置于 TLS 终止反向代理之后,allow_other_hostname这个直接暴露服务端的选项仅供测试。CONNECT不限于 Quack,也指向任何支持它的远端库(PostgreSQL、MySQL),配套的新 remote pushdown 优化器会把查询直接推到远端,而不是把表拉过网络。 - 异步 I/O:2.0 为 Parquet、CSV 与 DuckDB 自有存储格式引入异步 I/O。I/O 层现在独立于查询处理层扩展,后台发出读请求并保持多个请求在飞,远端读的并行度大幅提升,对象存储(
s3://)上的查询显著变快。设计细节在 7 月 31 日的专门博文里,官方在其中给出了开启前后网络吞吐随查询时间变化的对比。 - VARIANT 成为一等公民:1.5 引入 VARIANT,2.0 完成全面整合——检测数据中的公共结构并做 shredding,压缩与执行都走列式路径,端到端从存储里的 shredded 执行一直到 Parquet 的 shredded 读写,背后是
variant_*函数族。它与 JSON 的差别在于不是文本格式:'{"user": {"id": 42}}'::JSON::VARIANT之后,variant_type()与variant_keys()直接作用在类型化值上。 - CLI 的 agent 模式:编码 agent 越来越多的场景下,2.0 的 CLI 会检测自己是否被 agent 驱动,然后切进 agent 模式——输出紧凑 Markdown 表而不是填充对齐的方框、明确声明结果被截断、提前终止失控查询、用 JSON 报告错误。长时间运行的 SQL 会先报出预估代价,让 agent 判断是否等待。官方在 TPC-H 上的实验结果是:agent 模式下模型需要读的 DuckDB 输出量减少
59%。手动测试可用-agent,反向可用-no-agent。 - PEG 解析器转正:DuckDB 一直用派生自 PostgreSQL 的解析器,2.0 里自家现代可扩展的 PEG 解析器(1.5 中以可选项形式首次出现)成为默认。扩展现在可以挂进语法本身,错误信息带精确源码位置。官方说明它被设计成与旧解析器兼容,如果发现问题可以
SET enable_legacy_parser = true退回(对应legacy_parser扩展)。换掉的理由写得很具体:旧解析器自 2018 年第一个提交起服役,语法用 YACC/Bison 生成,产出的是 LALR(1) 解析器,DuckSQL 每加一点语法都可能与既有规则冲突并引发 shift/reduce 或 reduce/reduce 冲突;PEG 按书写顺序逐个尝试备选,加语法不再有破坏无关规则的风险。Python 在 3.9 换成 PEG 解析器,理由相同。 - 自托管扩展仓库:2.0 交付了改动很大的 C API v2,暴露文件系统、表函数等组件给扩展,官方希望在标为稳定前先在实战中验证。配合它的是可信扩展仓库:
SET allow_extension_repositories = 'allowed'之后可CREATE EXTENSION REPOSITORY my_repo WITH PREFIX 'https://extensions.example.org',再INSTALL AND LOAD my_ext FROM my_repo。仓库定义是一个名字、一个 URL 前缀与一个或多个被信任的 RSA 公钥;前缀可以指向任何 DuckDB 能读的位置(本地路径、https、s3)。CREATE时 DuckDB 会取回公钥钉进仓库定义,并打印每个密钥的 SHA-256 指纹供带外比对。官方标注该功能仍在推进中,语法后续可能变。 - 触发器:
CREATE TRIGGER支持BEFORE与AFTER、FOR EACH ROW与FOR EACH STATEMENT、REFERENCING OLD/NEW TABLE过渡表、同一事件挂多个触发器、被触发表上使用RETURNING,以及DROP TRIGGER。部分组合(BEFORE ... FOR EACH ROW、以及UPDATE ... FOR EACH ROW)暂不支持。官方给的例子不止审计表:用插入与删除两个触发器增量维护一张物化聚合表,把sum_age、num_people与平均值一起存下来,删除时人数归零就删掉该国籍的行。官方把这一步表述为「离物化视图更近一步」——物化视图长期挂在路线图的未来工作里。 - SQL 方言补充:
$x简写替代getvariable('x');数据修改 CTE 允许把INSERT、UPDATE、DELETE、COPY当作流水线步骤;NEARESTjoin 把 top-k 相似度搜索变成 join 子句;嵌套 schema(CREATE SCHEMA finance.reports);JSON 修改函数json_set、json_insert、json_replace、json_remove返回修改后的副本;支持 SQL 标准的FETCH FIRST;GROUP BY中允许UNNEST;MERGE与UPDATE ... FROM在匹配到多行的情况下语义被明确定义。 - 核心扩展:DuckLake 1.1 发布,含新规范与参考实现;Iceberg 扩展朝完整实现推进,新增 REST catalog 的
ATTACH选项(从 namespace 推导表位置,或从 catalog 返回的 metadata-location 文件加载表元数据),并控制 URL 前缀与 namespace 分隔符;Delta 扩展可以用CREATE TABLE建 Delta 表(含分区与 Delta 表属性),支持 time travel,VARIANT 支持改进。 - 迁移与内部变更:最可能出问题的是存储格式——2.0 之前的版本读不了 2.0 创建的数据库文件,2.0 能读写既有文件且这些文件仍可被旧版本读。官方建议先在影子系统上测,关键负载可以等 11 月的第一个补丁版。编译器要求从长期坚持的 C++11 提到 C++17,发布构建默认切到 Clang(Linux 与 macOS 上 DuckDB 与核心扩展均用 Clang,Windows 上 CLI 用 Clang、多数核心扩展仍用 MSVC)。ICU 库整体移除:时区、日历与排序改由
icu扩展自己实现,时区数据直接从 IANA 数据库构建并压缩到约45kB,行为不变且更快。弃用三项:单箭头 lambda(x -> x + 1)默认禁用,改lambda x: x + 1,可用SET lambda_syntax = 'enable_single_arrow'临时开启,该开关与语法在 v2.1 全部移除;amalgamation 构建弃用;osx_amd64 逐步退场(社区扩展不再为该平台构建,2.1 停止支持)。
行业影响
嵌入式分析引擎的边界在这一版被向外推了一大圈。Quack 与 CONNECT 让 DuckDB 从「一个进程里的库」变成「可以被多个进程共享的服务」,而 remote pushdown 又把联邦查询的代价从「搬数据」改成「推查询」,这两件事合起来会改变它在小型数据栈里的位置——过去它通常待在管道末端做本地计算,现在可以挂在中间做一层可远程访问的执行节点。异步 I/O 的意义同样在位置层面:I/O 层与执行层解耦之后,瓶颈从 CPU 核数转向并发请求数,对象存储上的分析不再需要先落盘。
代价也写得同样清楚。存储格式单向不兼容意味着任何把 DuckDB 文件当持久化产物保存的系统,升级路径是单向门;三条版本线并行意味着运维上要并行跟踪各自的支持期;C++17 与 Clang 的切换会影响自建与嵌入;osx_amd64 退场直接命中仍在 Intel Mac 上做开发的团队。官方把这些逐条列出来,并明确建议关键负载等一个补丁版,这种自我标注边界的做法本身就值得照做。
相关链接
- Announcing DuckDB 2.0.0 LTS “Cinnamon Teal”(2026-10-21)
- DuckDB v2.0.0 release notes(GitHub)
- 2.0 迁移指南
- Quack 协议概览
CONNECT语句- 异步 I/O 设计博文(2026-07-31)
- VARIANT 类型文档
- variant 函数族
- CLI agent 模式文档
- Agent mode 博文(2026-10-09)
- PEG 解析器文档
- PEG 解析器博文(2026-08-20)
- legacy_parser 扩展(回退入口)
- 扩展仓库文档
- C API v2 概览
CREATE TRIGGER文档- 2.0 文档新增索引页
- 发布日历与 LTS 支持期
- Iceberg 扩展 ATTACH 选项
- Delta 扩展文档
- DuckLake 扩展文档
- icu 扩展文档
NEARESTjoin(FROM子句)- 数据修改 CTE(
WITH子句) FETCH FIRST语法- 嵌套 schema(
CREATE SCHEMA) - JSON 修改函数
- Friendly SQL 方言总览
- DuckDB 1.5 发布公告(VARIANT 与 PEG 的首次出现)
Databricks AI Runtime GA:GPU 基础设施进入湖仓的治理边界
事件概述
10 月 21 日,Databricks 宣布 AI Runtime(AIR)正式可用,作者为 Tejas Sundaresan、Jianwei Xie、Mike Del Balso、Hanlin Tang、Julia Powell 与 Cynthya Peranandam。定位是把全托管的 GPU 基础设施直接放进 Databricks,让训练发生在企业数据已经在的地方。
官方给出的问题描述是:AI 团队花在抢 GPU 容量、处理故障、等待实验启动上的时间,往往多于改进模型的时间;把 GPU 基础设施与湖仓分开运行会带来治理缺口,并让敏感训练数据暴露在风险中;当编码 agent 开始驱动越来越多的训练实验时,这些瓶颈与风险一起放大。
采用侧的数字:数百家公司已在用 AIR 训练并上线深度学习模型,点名的有 Robinhood、PicPay、Merck、Flo Health、TinyFish 与 FactSet,场景覆盖医疗、制造与面向消费者的 agent;Databricks 自己的 AI Research 团队用它训练 KARL 与 AI Parse 背后的模型。可靠性口径是 100,000+ GPU 小时的训练运行。
技术解析
- 托管范围:Databricks 接下 GPU 采购、集群配置与网络,用户按需拿到容量。健康保障的做法是在训练前、训练中以及空闲期周期性执行几十项 GPU 与网络检查,检测并移除不健康节点,目标是让负载可靠扩展到数百张 GPU。
- 数据加载:内置 data loader 负责流式传输与缓存训练数据,减少等 I/O 的时间;官方点名
UCVolumeDataset作为提升吞吐、免于自建加载管道的手段。 - 秒级启动:官方把启动路径逐层优化,即使是有数十张 GPU、启用 RDMA 的大规模集群也能在秒级起来。机制是温 serverless GPU 池加懒加载镜像——不必像传统 GPU 栈那样先完整下载容器镜像再跑代码,剩余镜像数据在后台继续加载。环境缓存让环境只需构建一次。
- 调试与可观测:MLflow 侧是一套新的可观测体验,日志在提交后几秒内流式返回,加
--watch即可看;更深的排查走为多节点训练专门做的日志查看器。Genie Code 嵌入整个使用流程,分析 AIR 训练日志、定位问题并给出下一步建议,预置的 agent skills 里包含研究与性能团队发现的经验,例如把 Qwen 训练时间降到1/6的那次优化。 - 治理与隔离:Unity Catalog 对 GPU 工作负载的各个方面(数据访问、checkpoint、日志)统一强制读写权限,让 GPU 平台与数据治理层说同一种语言。隔离层面强调 VM 级隔离,与那些暴露宿主内核的 GPU 隔离机制做对照,并支持 PrivateLink 与 serverless 出网控制。成本侧走 Databricks 计费系统表,可拿到 workload 级使用记录来定位 GPU 预算去向。
- 编排与迁移:与 Lakeflow 原生集成,GPU 工作负载可与上下游管道保持同步;上生产只需多写几行 YAML,内建优先级与抢占以减少 GPU 空闲,配套 Genie ZeroOps 降低运维负担。从 Kubernetes 或 SLURM 集群迁移,官方称用 Databricks AIR Skills 一条自然语言提示即可。
- 客户口径:Superhuman 的 Kostia Omelianchuk 给出的是从单机
8张 A100 迁到多机16张 H100,训练时间从约7天降到48小时,即3.5倍加速。FactSet 的口径是把模型从搭建、训练到部署的时间从数天压到数小时。 - 同日配套:10 月 21 日另有《Databricks AI Runtime and NVIDIA make it easier to customize open models with enterprise data》,讲的是与 NVIDIA 合作降低用企业数据定制开源模型的门槛。
行业影响
这条发布的重点不在「又一家提供托管 GPU」,而在 GPU 平台与数据平台合并后,治理边界被重新划了一次。过去训练栈与数据栈分属两套系统时,权限、审计与数据副本的一致性靠跨系统的配置与流程维持;AIR 把 checkpoint 与日志这类 GPU 侧产物也纳入 Unity Catalog 的权限模型,意味着训练过程的每一次读写都落到与数据表相同的策略上。在 agent 并发发起大量训练实验的场景里,这个差别会从「合规上更好看」变成「能不能靠策略自动管住」。
代价是把 GPU 调度的自由度交了出去:集群形态、镜像加载方式、健康检查节奏、日志与计费口径都由平台定义,习惯自建 SLURM/K8s 的团队需要用 AIR Skills 之类的迁移路径重做一遍工程;VM 级隔离与 serverless 出网控制也意味着网络访问方式要按 Databricks 的模型重新设计。这是一次典型的「用控制面换取运维面」的交换。
相关链接
- AI Runtime is Generally Available(2026-10-21)
- Databricks AI Runtime and NVIDIA make it easier to customize open models with enterprise data(2026-10-21)
- AI Runtime 快速上手
- AI Runtime 使用指南
- AI Runtime 的 coding agent skills
- AIR CLI 与镜像文档
- ai-runtime-cookbook 示例仓库
- How we keep GPUs reliable across Databricks AI
- Reducing Qwen training time by 6x on AI Runtime
- Fast, fault-tolerant PyTorch training on AI Runtime
- Introducing Genie ZeroOps
Lance 2.3 进入 RC:btree 索引换行地址域,JSONB 收进自有 crate
事件概述
10 月 21 日 17:09 UTC,Lance 格式仓库打出 v14.0.0-rc.1 标签——这是 2.3 格式线的第一个 RC。changelog 的对比基准是 release-root/14.0.0-beta.N,累计 228 条。LanceDB 侧同日 10:48 UTC 打出 v0.41.0-beta.12。
本专栏在 Vol.99 已展开过 beta 线里的 planar 六段栈(#9920 → #9925)与 LanceDB 把 MemWAL 改名为 RTE 的那次破坏性变更。本期看的是 RC 这一步真正定下来的东西:一份包含 8 条破坏性变更、4 条关键修复的清单。RC 的含义是编码契约冻结,生态可以开始对齐;代价是清单里每一条都要有人去改。
技术解析
- btree 标量索引换行地址域(#9481):这是清单里对用户影响最直接的一条。btree 现在训练并存储物理行地址(
_rowaddr)而不是 row id,与 ZoneMap、BloomFilter 对齐,从而可以与稳定行 ID 数据集上的 fragment-reuse index 共存。此前 FRI、稳定行 ID 与 row-id 域的组合对 btree 是 outright 拒绝的,原因是 FRI 作用在裸 row id 上会静默损坏它们。BTREE_INDEX_VERSION提到1;已存在的 row-id 域段仍能正确读取,且永不与地址域数据合并。PR 正文明确提醒:在 crate 之外自建 btree 索引的用户(例如通过 Spark 构建)需要修改列名,并确保读的是行地址而不是 row id,作者表示会在社区同步会上专门提出。 - JSONB 转为自有实现(#9534):Lance 把 JSONB 载荷持久化在
lance.json列里,但字节布局与读侧语义(JSONPath、以及json_get_int这类严格转换)原本来自外部jsonbcrate。该 crate 的 semver 兼容版本改过可观察行为(0.5.6重写了to_i64的取整),而 Lance 无法让编码与自己的文件格式一起演进。这次把databendlabs/jsonb的fba895cvendor 成新的lance-jsonbcrate,lance-arrow、lance-datafusion、lance-index一并切换。持久化布局不变,tests/it/compat.rs把0.5.6在两条写入路径(parse_value与OwnedJsonb::from_str)上产出的字节,以及 decimal 与 extension 载荷的解码文本全部钉住。可观察差异只有一处:JSONPath 算术与过滤字面量现在走同一个编码器,decimal 编码输入上的算术保留 decimal 结果而不再转f64——Lance 不写 decimal 载荷。 - 索引插件拿到版本号(#9518):把
index_version传进ScalarIndexPlugin::load_index。与 #9481 是同一组改动,索引插件现在必须知道自己在读哪个版本。 - memtable 上的模糊合取(#9526):支持带 fuzzy 匹配并用
AND连接的 FTS 查询,在活跃 memtable 上求值。PR 正文记下一条已存在并被 ticket 化的限制:当配置了max_extensions时,它对每个 tier 单独生效,而 memtable、sstable 与基表各自的 FTS 索引语料不同,算出来的扩展词可能不一致;有提案是预建语料供查询使用,但那会在查询热路径上多一个 RTT。 - v2.3 mini-block 的 offset 压缩(#8331)、Blob v2 写入与提升优化(#9717)、清理删除的并发可配置(#9774)、f32 l2/dot 内核只选一次并通过
_intoAPI 批量填充(#10086):前三条是格式与运维面,最后一条是线性代数层的破坏性提速。 - 关键修复四条:#9760 展平嵌套 FSL 时使用每一层自己的 dimension;#9789 保留来自非精确标量索引结果的候选;#9865 把 overlay 里的陈旧行纳入 indexed merge insert;#10145 修 RLE 压缩的 mini-block 字典值读取。
- 查询与格式侧的新增:#9331 支持 SQL
IS [NOT] DISTINCT FROM作为空安全比较;#9750 在 top-k 下对非排序列做延迟物化;#9611 在稳定行 ID 表上为延迟压缩记录行地址移动;#9871 让optimize_indices可以分布式执行;#9878 定义 provider-managed clustering 元数据;#9967 加实验性 PCA 模型与查询预变换。 - 回退两条:#9885 撤销过早的稳定化(spilled row lineage),#9889 回退 JSONB 逻辑与物理存储的文档说明。RC 前把没准备好的东西撤掉,与 Vol.97 里 PostgreSQL 19 那批回退是同一种动作。
行业影响
列存格式的 RC 与应用程序的版本不同:它是给整个生态的信号,告诉所有读写这个格式的引擎可以开始对齐了。Lance 的处境特殊之处在于它还是 AI 工作负载的存储层——向量索引、FTS、blob 与结构化列挤在同一份格式里,任何一条编码变更都会一并打到检索与分析两条路径上。这次 RC 里的 #9481 就是典型:为了让 btree 与 fragment-reuse index 共存,索引的取值域被换掉,代价转嫁给所有在 Rust crate 之外构建索引的集成方。
值得注意的还有 #9534 的处理方式。外部依赖在 semver 兼容范围内改了可观察行为,这在依赖管理上是常见困境;Lance 的选择不是锁版本,而是把代码 vendor 进来、把字节级兼容测试钉住,换取编码与文件格式同步演进的自由。这条路径的成本是长期维护一份 fork,收益是格式演进不再受上游节奏牵制——对一个把字节布局当契约的项目来说,这笔交换是划算的。
相关链接
- Lance v14.0.0-rc.1 release notes
- LanceDB v0.41.0-beta.12
- #9481 btree 标量索引换行地址域
- #9534 把 jsonb vendor 进 lance-jsonb
- #9518 把 index_version 传进 ScalarIndexPlugin::load_index
- #9526 memtable 上的模糊合取
- #9717 Blob v2 写入与提升优化
- #9774 清理删除并发可配置
- #10086 f32 l2/dot 内核选择一次
- #9920 定义 v2.3 的独立 planar 元数据
- #9921 实现 planar 页执行
- #9878 provider-managed clustering 元数据
- #9871 optimize_indices 分布式执行
- #9967 PCA 模型与向量预变换
- #9331 SQL IS [NOT] DISTINCT FROM
- #9750 top-k 下延迟物化非排序列
- #9611 记录行地址移动用于延迟压缩
Google Cloud 同日三项:Dataflow 跨区流式高可用、BigQuery 文档切分 GA、Looker 元数据编目 GA
事件概述
10 月 21 日的 Google Cloud 发布说明里,与数据基建直接相关的有三项,分属三个产品。
Dataflow 的流式高可用进入 Preview。文档把问题说得很具体:默认情况下 Dataflow 流式作业的部分后端资源跑在单个 Compute Engine zone 里,zone 级故障期间这些作业会丢数据。开启流式高可用后,后端状态跨区域内的多个 zone 复制,单 zone 故障不再导致作业中断——作业从 zone 级资源变成区域级资源。
BigQuery 的 AI.CHUNK_DOCUMENT 函数转 GA。这是一个表值函数,把非结构化文档切分为语义连贯的文本块,切分依据是文档版面结构而不是字符数或词数。
Looker 侧是 Knowledge Catalog 对 Looker(Google Cloud core)元数据的自动编目与摄取转 GA,粒度更细,资产类型更多。
技术解析
- Dataflow 流式高可用的五条约束:第一,必须使用 Streaming Engine,作业必须是流式管道。第二,Compute Engine worker 必须使用区域级放置;如果作业只在某个特定 zone 里有 worker,那个 zone 不可用时作业依旧无法处理数据——后端状态虽然复制了,worker 也没了,开启后 Dataflow 会拒绝指定了具体 worker zone 的作业(
--workerZone、--worker_zone或--zone)。第三,只能在创建作业时开启,不能通过原地管道更新开关;要改运行中管道的这项设置,得走 automated stop-and-replace 更新,或者 stop/drain 后不带--update重启。第四,额外的 watermark 延迟:开启后 watermark 只在数据先被处理、再被跨 zone 复制之后才推进,会有几秒额外延迟。第五,强制资源计费且永不走 data-processed 计费,Preview 期间不额外收费。 - 开启方式:Java 用
--dataflowServiceOptions=requires_high_availability,Python 与 Go 用--dataflow_service_options=requires_high_availability;gcloud跑模板或 Flex Template 时是--enable-streaming-engine加--additional-experiments=requires_high_availability。 AI.CHUNK_DOCUMENT的工作方式:底层用 Document AI layout parser 分析文档结构(标题、章节、段落、列表、表格),并跨结构边界保留语义上下文,产出面向向量嵌入与 RAG 工作流优化的块。BigQuery 自动配置并管理 layout parser,无需创建或训练模型;每个项目只用一个 processor(名为bq-created-layout-parser),避免跨查询重复开通。输入三种形式:Cloud Storage URI 字符串字面量(目录路径末尾支持单个*,也可按扩展名过滤)、含名为ref的 ObjectRef 列的对象表、返回ref列的子查询。可选参数有connection_id与chunk_size。使用该功能需要先启用 Document AI API。- Looker 侧:GA 的范围是自动编目与摄取,包含更细粒度的元数据(dimension/measure 定义、默认查询、关系)与新的资产类型(LookML 仪表盘、LookML 仪表盘元素、agents)。数据血缘集成仍是 Preview。
行业影响
这三项的共同点是把原本要在管道外面补的工序收进平台。流式高可用对应的过去做法是靠作业重启与重放兜住 zone 故障,代价是数据处理语义上的不确定;现在它是创建作业时的一次开关,代价是五条约束——其中「强制区域放置」与「强制资源计费」是实打实的架构限制,前者会让指定了 worker zone 的既有作业被拒,后者会改变计费模型,从按处理数据量变成按资源。AI.CHUNK_DOCUMENT 对应的过去做法是在管道里自己写切分逻辑,按固定长度硬切;换成版面感知的切分之后,检索质量的上游决定权从自己的代码转给了 Document AI layout parser,也就继承了它的文件格式支持范围与限制。Looker 元数据编目对应的过去做法是靠人维护资产清单,现在的代价是血缘这一环还没跟上,仍留在 Preview。
把三者放在一起看,Google Cloud 这一天的动作是把「可靠性」「RAG 前置处理」「元数据目录」三件长期被当作周边工具的事,变成平台的原生能力。对已经在用这些产品的团队,取舍点不在功能本身,而在那些被写进约束里的代价是否可接受。
相关链接
- Dataflow 流式高可用文档
- Streaming Engine 文档
- BigQuery
AI.CHUNK_DOCUMENT函数文档 - Looker 与 Dataplex 集成文档
- Looker 数据血缘文档
- Google Cloud 发布说明(2026-10-21 条目)
编者评
本期四条动态落在同一天,形状却完全一致:把一道原本跑在系统外面、由人或外部服务兜住的工序搬进系统内部,然后把搬进来带来的代价逐条写清楚。DuckDB 把服务端、异步 I/O、扩展托管与触发器搬进内核,代价是存储格式单向不兼容、编译器提到 C++17、三条版本线并行、osx_amd64 开始退场。Databricks 把 GPU 平台搬进湖仓,代价是 GPU 工作负载的调度与网络方式都要按平台的模型重做。Lance 把格式契约冻结成 RC,代价是一份公开到 PR 级别的破坏性清单,其中 btree 换域这一条直接要求 crate 之外的集成方改列名与读取方式。Google Cloud 把跨区容灾、文档切分与元数据编目变成开关和函数,代价写成了五条约束、一个外部 parser 依赖与一个仍在 Preview 的血缘环节。
四处代价的共同点是都可以提前核对——不需要等到故障发生才知道。这是一条与 Vol.99 一致的脉络:把「默认由谁负责」重新指派一次,并要求每次交接留下可核对的凭据。DuckDB 留下的是发布日历上三条版本线的支持期与一个明确建议(关键负载等 11 月的补丁版);Databricks 留下的是 Unity Catalog 对 checkpoint 与日志的权限记录与计费系统表里的 workload 级用量;Lance 留下的是 RC changelog 里的 PR 号与 compat 测试钉住的字节;Google Cloud 留下的是文档里逐条列出的限制与 Preview 期间的计费说明。工程上的含义是,选型评估可以不依赖厂商的承诺,而是读这些凭据本身。
本期还需要交代几处没有单独立篇但值得记录的观察。中文源方面,阿里云官方博客、阿里云开发者社区大数据页、火山引擎文档站与火山引擎开发者社区四个入口在 10 月 21 日至 22 日仍然解析不出可确认日期的发布条目,这是本专栏连续第 19 期遇到同样情况;本期改以开源侧的国产项目作为观察点——MatrixOne 在 10 月 21 日打出 v4.2.6-hotfix-20261021 与 v4.1.6-hotfix-20261021 两个 hotfix 标签,Doris 仍停在 10 月 15 日的 4.1.5,Paimon、Amoro、Kyuubi、Linkis、InLong 在窗口内均无新版本。AWS 侧 10 月 21 日的 what’s new 共九条,全部落在 Connect、Direct Connect、Aurora/RDS、Cognito、SageMaker、Neuron、CloudWatch 等方向,没有一条属于数据基建主线;AWS Big Data Blog 最新仍停在 10 月 19 日。开源侧另有 ClickHouse 在 10 月 21 日发布 v26.9.24.8-stable 与 v26.8.33.10-lts 两个分支,release body 为空;Ray 的 2.58.1 与 2.57.1、dbt State 的永久免费档已在 Vol.99 记过,本期不重复。
本专栏这一期是第 100 期。回看这 100 期的取材,一个稳定的变化是:厂商越来越少地把能力发布成「一个新产品」,越来越多地把过去散落在文档、最佳实践与人工经验里的边界,写进版本说明、迁移指南与限制清单。对读者而言,最有价值的信息往往不在标题里,而在那些被显式写出来的代价条目中。