LanceDB 把主键升成 MemWAL 的启用条件并重排 SSTable 命名;MatrixOne 4.2.6 让 IVF-FLAT Top-K 穿过等值连接;OpenDAL 0.59.5 以周更补丁对齐十一个包;PostgreSQL 19 排期落到 RC2 与更新版本同日、GA 11 月 19 日
本期聚焦四条把「已经写进系统的东西」重新审一遍的动作:LanceDB 用主键把 MemWAL 的入口收窄、MatrixOne 要求 DECIMAL256 索引重建、OpenDAL 按周滚动版本号、PostgreSQL 在 GA 前把已提交的特性成批撤下。
本期四条动态全部落在 10 月 18 日至 19 日这个周末窗口,形状出人意料地一致:都不是新增一项能力,而是回头审一遍已经写进系统的东西,并把审出来的结论变成硬约束。LanceDB 把主键从可选配置升成 MemWAL 的启用条件,命名从 LSM 收敛到 MemWAL 加 SSTable;MatrixOne 4.2.6 一边把 IVF-FLAT Top-K 推进等值连接与标量子查询,一边要求受 DECIMAL256 历史写入影响的索引从基表重建;Apache OpenDAL 0.59.5 把核心与十个下游包一起推版本号,理由统一标注为周更补丁;PostgreSQL 19 的第一份候选在 10 月 15 日落地,官方把第二个候选与例行更新版本排在同一天,GA 顺延到 11 月 19 日,社区侧的复盘则把顺延归因于审查能力在这一轮周期里跑到了修复能力前面。四处动作的代价都写在明面上:入口变窄、索引要重建、下游要跟着滚动、发布要推迟。
LanceDB v0.41.0-beta.8 与 Lance v14.0.0-beta.20:主键从可选配置变成 MemWAL 的启用条件
事件概述
LanceDB 在 10 月 18 日 18:16 UTC 打出 v0.41.0-beta.8,两小时后 Lance 格式仓库在 20:30 UTC 打出 v14.0.0-beta.20。两个仓库现在分属 lancedb 与 lance-format 两个组织,发布说明里的 PR 链接指向后者,读 changelog 时需要认准这个前缀。
这一版的醒目之处是一条破坏性变更:LanceDB 把 LSM 相关 API 整体改名为 MemWAL,SSTable 与 table shard 的命名一并对齐(#4075)。改名背后是实现形态的收敛——写入侧不再按通用 LSM 来描述,而是按「内存 WAL 加 SSTable 分层」来描述。上一版 Lance beta.19 里的 finish the SSTable/frozen naming pass 是同一次改名动作的收尾。
紧接着是一条语义上的收紧:启用 MemWAL 必须有主键,没有主键的表在初始化阶段被直接拒绝(#4561)。此前无主键也能开 MemWAL,现在这个入口被关掉了。远端线上配套给出一个反向出口:set_unenforced_primary_key,允许声明一个不做强制校验的主键(#4158)。
技术解析
- 命名与门槛:LSM API 改名为 MemWAL,SSTable 与 table shard 命名对齐(#4075);启用 MemWAL 要求主键(#4561)。Lance 侧在
beta.19已经先做了一道:初始化时拒绝不可哈希的主键类型(#10040),并把 memtable flush 失败的重试排到后续 generation 之前(#10031)。 - 物化视图自引用被拒:来源表链路绕回自身的物化视图会被拒绝创建(#4494)。这是一条防环规则,放在创建期而不是执行期。
- blob 读取补齐:Node 侧新增
blobMode,让查询直接返回 blob 字节(#4353);远端侧补上 blob 区间读(#4553)。多模态表里「小元数据进列、大对象走 blob」的分层已经能从查询侧直接取回,不必再绕一次对象存储。 - Python 函数签名:
Function签名接受large_binary(#4577)。 - Lance 侧的正确性修补:拒绝为零的多段上传并发(#9756);带索引的 join 上按名字构造
update_if结构体(#9950);读取任意深度 list 项下面新增的 struct 子列(#9954);解析技术栈其余部分已经接受的路径(#10009);把此前未计入的 IO 纳入统计(#10010);所有索引段为空时保留最早创建的那个(#10107);延迟 overlay 压缩时从陈旧索引里清掉旧 fragment id(#10109);稀疏输入下限制 FSST 采样(#10120)。 - Lance 侧的性能项:
Dataset::count_rows(None)改为累加 manifest 里的行数(#10016);一次扫描内所有 fragment 共用同一个已规划的 filter(#10042);merge_insert在匹配行不被更新时把目标列从 join 扫描里剪掉(#10043);全文索引把暂存分区就地收尾,副本与合并走有预算的并行(#10138)。
行业影响
MemWAL 靠主键做行定位、去重与 upsert 语义,把主键设成启用条件等于把这套机制的适用边界写进初始化检查里。此前无主键也能开的情况,会以运行期行为不明确的形式留到后面;现在这类配置在启动阶段就失败。远端线给出的 set_unenforced_primary_key 保留了另一种取舍:只想给行一个稳定标识、不想承担唯一性校验开销的场景,仍然有一条显式路径,代价是声明出来的主键不再被强制。物化视图的自引用检查则是把依赖图上的环检测提前到创建期,代价是某些靠自引用实现的增量构造要改写。
这几条合起来指向一个方向:Lance 生态正在把「能跑起来」和「语义明确」分开,前者让位于后者。写入路径上的命名统一(LSM 到 MemWAL 加 SSTable)不只是措辞,它决定了后续文档、配置项与调优参数按哪套模型来组织。
相关链接
- LanceDB v0.41.0-beta.8 发布说明
- Lance v14.0.0-beta.20 发布说明
- PR #4075:LSM API 改名为 MemWAL
- PR #4561:启用 MemWAL 要求主键
- PR #4494:拒绝来源绕回自身的物化视图
- PR #10042:一次扫描共用同一个已规划 filter
MatrixOne 4.2.6:IVF-FLAT Top-K 穿过等值连接,DECIMAL256 索引要求重建
事件概述
MatrixOne 在 10 月 18 日发布 v4.2.6,沿用 4.2 发布线。发布说明把内容分成升级注意、关键改进与关键修复三块,完整变更对比挂在 v4.2.5...v4.2.6 上。
升级注意里只有一条,但分量最重:受历史 DECIMAL256 写入影响的索引,需要在维护窗口内从基表重建,之后才恢复读写;受影响的环境不允许新旧写入者共存。官方给了一份专门的升级流程文档(docs/cn/decimal256_index_upgrade.md)。这是一个需要排停机窗口的版本,不是滚动替换就能过去的那种。
关键改进集中在向量检索的 SQL 形态上。IVF-FLAT 的 Top-K 现在可以穿过符合条件的等值连接(#30013),IVF-FLAT 与 HNSW 都支持用标量子查询产生查询向量(#30012)。另一项改进是 median 聚合的中间态内存放大被压低(#29686)。
技术解析
- 向量检索进入常规查询计划:此前典型的向量查询形态是「给出一个常量向量,找最近的 K 条」。这次两项改动把它往 SQL 里推:查询向量可以由标量子查询算出(#30012),Top-K 可以作为等值连接的一部分下推到 IVF-FLAT(#30013)。前者意味着「先按条件查出一条记录的向量,再用它去找相似项」这种两段式查询能写成一条语句;后者意味着连接键相等的场景里,向量检索不再是连接之后的一个独立算子。
- 索引正确性:复合键范围剪枝与 DECIMAL256 索引正确性一起修(#29518)。这两块是同一次回补,前者影响范围查询的扫描量,后者是本次要求重建索引的直接原因。
- 备份与恢复:重复备份保留历史对象(#29504);账号级恢复可重复执行,grants 正确重新绑定(#29431)。恢复类操作此前这类问题会表现为「第二次恢复的结果和第一次不一样」,属于很难在测试里复现的一类。
- 其他修复:保留在途的 logtail 订阅(#29616);
ON DUPLICATE KEY UPDATE的元数据归属修正;SQL 回放时保留存储的 BINARY 字节;布尔模式全文检索里的单个双引号被安全处理。 - 聚合内存:median 的中间态内存放大降低(#29686)。median 与求和不一样,中间态要留住样本,高基数分组下这部分内存是主要开销。
行业影响
国产数据库这一轮的向量能力竞争,已经从「有没有向量索引」移到「向量检索能不能进常规 SQL 计划」。MatrixOne 这次的两项改动都是这个方向上的具体一步:查询向量的来源从常量扩展到子查询,Top-K 的位置从独立算子移进连接。这条路的工程难点在于优化器要判断什么时候可以下推、下推之后索引的召回假设是否还成立,而这些判断目前仍要靠查询形状上的限制来保证,发布说明用的措辞是「合格的等值连接」。
升级侧的代价则非常具体:DECIMAL256 索引不能原地修,只能重建,且新旧写入者不能混用。这一条决定了受影响环境的升级流程要按维护窗口来排,而不是按滚动发布来排。
相关链接
- MatrixOne v4.2.6 发布说明
- DECIMAL256 索引升级流程文档
- PR #30013:IVF-FLAT Top-K 穿过等值连接
- PR #30012:标量子查询作为查询向量
- PR #29686:降低 median 中间态内存放大
- PR #29504:重复备份保留历史对象
Apache OpenDAL 0.59.5:十一个包一起挪版本号,理由统一写「Weekly patch」
事件概述
Apache OpenDAL 在 10 月 18 日 05:29 UTC 发布 0.59.5。OpenDAL 是统一存储访问层,给上层引擎提供一套跨对象存储与文件系统的访问抽象。
这次的发布说明本身很薄:下载链接、发布说明链接、投票记录链接,加一张包版本表。表里列了十一个包,每一个的变更理由都写着 Weekly patch:core 从 0.59.4 到 0.59.5,集成侧 dav-server 0.7.10 到 0.7.11、object_store 0.60.4 到 0.60.5、parquet 0.10.4 到 0.10.5、unftp-sbe 0.4.10 到 0.4.11,绑定侧 C、C++、Java、Node.js、Python、Ruby 各进一步。
把 v0.59.4...v0.59.5 的提交列出来看,这一周的实际改动只有六个提交,主体是 CI 与依赖升级:fs 服务的删除测试对齐路径归一化(#8368)、MinIO 测试夹具迁移到 Silo(#8372)、setup-uv action 引用更新(#8349)、surrealdb 依赖升级修 docsrs(#8371)、C++ 绑定的 cxx-async 依赖升级修编译(#8374),加上若干 dependabot 的依赖提级。
技术解析
- 版本号节奏:核心与十个下游包每次发布同步推进,理由字段一律是 Weekly patch。下游如果只锁
core而不锁绑定,容易在某次发布后发现绑定版本落后一格。 - 集成面:
object_store集成是 OpenDAL 与 DataFusion 这类引擎之间的接口,版本号单独走0.60.x序列,不与核心的0.59.x对齐,读版本号时不能按同一个序列理解。 - 本周实际内容:fs 服务删除测试对齐路径归一化(#8368)是这一周里唯一带行为语义的改动,其余落在 CI 与依赖。C++ 绑定的编译修复(#8374)说明绑定侧的构建链路本身也需要跟随依赖升级维护。
行业影响
存储访问层处在引擎与对象存储之间,它的发布节奏会直接传导到下游:object_store 集成被 DataFusion 一类项目使用,parquet 集成给读 Parquet 的路径用,Python 与 Java 绑定分别对应两类上层生态。周更的好处是修复能快速下发,成本是下游要持续跟进版本号,且每次发布的信息密度不稳定——本周这次的实际内容只有 CI 与依赖升级,但 eleven 个包的版本号全部向前挪了一格。对把 OpenDAL 作为依赖的项目,这种节奏意味着锁版本策略要么写死,要么跟一套自动提级流程,中间状态会积累偏差。
相关链接
PostgreSQL 19:RC1 落在 10 月 15 日,RC2 与更新版本同日,GA 排到 11 月 19 日
事件概述
PostgreSQL 全球开发组在 10 月 15 日发布 PostgreSQL 19 的第一个候选版本。官方公告给出的排期是:11 月 12 日这一轮受支持版本的例行更新包含大量修复,发布团队决定把这些修复并入 PostgreSQL 19 再 GA,因此第二个候选与这次更新版本安排在同一天;GA 的预定日期是 2026 年 11 月 19 日。从 RC1 升级到 PostgreSQL 19 需要走大版本升级路径,例如 pg_upgrade。
官方公告只讲排期与升级路径,没有提特性回退,也没有提代码审查。社区侧的解释来自另一条线:EDB 副总裁、长期提交者 Peter Eisentraut 在一篇题为《The reverts will continue until morale improves》的博文里复盘了这一轮周期。据二手报道转述,beta 开始之后有大约八到十个重要特性被撤下,而正常周期里这个数字通常在一左右;被撤下的名单里最显眼的是 SQL/PGQ,即 SQL 标准 2023 年加入的属性图查询语法,它顺延到 PostgreSQL 20。
技术解析
- 官方排期:RC1 于 2026-10-15 发布;RC2 与 11 月 12 日的例行更新版本同日;GA 预定 2026-11-19。升级到 RC1 需要大版本升级策略。这是本条里唯一有官方出处的部分,其余为社区侧转述。
- 回退原因的构成:据转述,Eisentraut 列了四条。一部分特性有难以在 beta 期内修完的架构缺陷;一部分是 LLM 辅助代码审查把原本会在发布后五年里慢慢冒出来的边界问题提前暴露;4 月至 8 月资深开发者被一批安全修复占用,beta 期的评审人力变薄;特性与 domain、复合类型、分区、视图、触发器之间的组合让穷举测试不现实。他还提到社区讨论过让特性以 experimental 状态进入主树,目前没有这样的机制。
- 「四十条缺陷报告」的说法:据转述,他用一个「四十来条缺陷报告、平均每条三行修复」的例子说明固定开销——复现、写测试、评审、讨论这些步骤一条都少不了,四十条微小条目足以吃光排期。部分二手报道把这个例子当成统计数字引用,官方公告里没有这些数字。
- 不是 vibe coding:据转述,他明确否认这批回退是 AI 生成代码导致的,理由是受影响的代码写于这类做法普及之前,变化的是审查能力而不是代码来源。他的判断是,只要审查能力不再以当前速度继续提升,这类情况会在后续周期里自行消退。
- 保留下来的内容:据转述,REPACK CONCURRENTLY 保留,它能在不施加
VACUUM FULL那种长时间排他锁的前提下重写表;pg_plan_advice与序列的逻辑复制也在保留之列。被撤下的特性预计进入 PostgreSQL 20。
行业影响
对生产环境,直接影响是时间线:按 10 月 GA 排的升级窗口要整体后移到 11 月下旬,谨慎的团队本来也会等第一个小版本,等于再往后推一轮。托管服务商通常在 GA 之后数周至数月才跟进大版本,RDS、Cloud SQL 与 Azure 上的 19 会跟着顺延。在 beta 上试过 SQL/PGQ 或 GROUP BY ALL 的原型代码,升级前必须摘掉。
更值得留意的是这条周期给出的机制性信号。AI 辅助审查把「发现问题」这半边的成本压了下来,却没有同比例压低「判定与修复」这半边——后者由有限的维护者时间供给,而且每条发现的固定开销与它本身多严重无关。PostgreSQL 是第一个把这种失衡公开摆到发布排期上的大型开源项目,同一个约束会出现在其他有严格评审文化的项目上:审查工具越强,积压的待判定项越长,而缓解手段不在审查侧,在分流侧——按严重度分派、把边缘项批量处理、把审查前移到每个 PR 而不是堆到发布冻结期。
相关链接
编者评
本期四条动态分属四个项目,指向同一件事的不同切面:已经写进系统的东西,正在被重新审一遍,而审出来的结论开始变成硬约束。LanceDB 把主键升成 MemWAL 的启用条件,等于宣布无主键的写入路径不再被这套机制支持;MatrixOne 要求受历史 DECIMAL256 写入影响的索引从基表重建,等于宣布旧索引不能原地修;OpenDAL 用周更把十一个包的版本号锁在同一节奏上,等于宣布下游要么跟要么被落下;PostgreSQL 在 GA 前把已提交的特性成批撤下,等于宣布「提交过」不再等于「会发货」。
四条里前三条是工程侧的取舍,第四条把同一件事推到了组织层。前三条的代价都落在执行上:入口变窄、索引要排维护窗口、版本号要持续跟进。第四条的代价落在时间上,而它的成因不在代码质量变差,恰恰相反——审查能力在这一轮周期里跑到了修复能力前面。Eisentraut 那个「四十来条缺陷报告、平均三行修复」的例子,说的就是固定开销不随问题大小缩放:发现变便宜了,判定与修复没有。
这条失衡与本期前三条其实是同一个问题的两端。LanceDB 选择在建表入口就把主键约束住,MatrixOne 选择要求索引重建而不是打补丁,都是在减少后续需要判定的模糊状态。PostgreSQL 遇到的则是模糊状态已经积累到发布冻结期才发现的情况。可以预期的演进方向,是把拦截点持续往前挪——从发布前挪到合并前,从运行期挪到创建期。代价也很清楚:拦截点越靠前,被它挡掉的合法用法越多,set_unenforced_primary_key 这种显式出口就是为此准备的。
需要交代的覆盖情况:本轮扫描窗口落在周末,产出密度明显低于工作日。Databricks 官方 feed 最新一条仍是 10 月 16 日 21:00 的多语句事务 GA(已在 Vol.95 报道),10 月 17—19 日无新条目;AWS Big Data Blog 最新为 10 月 15 日,AWS what’s new 在 10 月 17—19 日无数据基建类条目;Google Cloud 发布说明在 10 月 18 日只有一条 Google SecOps 条目、与数据产品无关,数据云周更汇总最新版仍是 October 12–16 那一期;Trino 仍停在 484、Doris 仍停在 4.1.5、Pinot 仍停在 1.6.0-rc0、Hudi 仍停在 1.1.2、Iceberg 仍停在 1.12.0、Delta Lake 最新为 08-20、Flink 博客最新为 10-10 CDC 3.7.0、dbt 博客最新为 10-09、DuckDB 新闻页最新为 10-16 两篇(已在 Vol.96 报道)、Anyscale 最新为 10-15 的 KubeRay 文章、The New Stack 数据类最新为 10-16、Dremio 与 Trino 博客均无可解析的新条目。PostgreSQL 19 的排期与回退,官方公告日期为 10 月 15 日,社区复盘与汇总报道集中在 10 月 16—19 日,本专栏此前未覆盖,本轮一并补入,并已逐条区分官方出处与社区转述。中文源方面,阿里云博客、阿里云开发者社区大数据页、火山引擎文档站与开发者社区在本轮依旧取不到可解析的 10 月 18—19 日条目,这是连续第十六期零可用;本期的中文生态观察由 MatrixOne 4.2.6 承接,Doris、Paimon、StarRocks、SeaTunnel、Amoro、Kyuubi、Linkis、InLong 在窗口内均无新版本。另有一条中文侧可用线索:数据库行业通讯 FutureX 第 49 期(10 月 17 日)把 PostgreSQL 19 推迟与 Pinot 1.6.0 RC0 并列为本期要点,后者已在 Vol.96 报道。