读得到,不等于改得对
把湖表想成一本多人共用的账簿。翻开账簿查几行并不难;难的是两个人同时改账时,既不能互相覆盖,也不能留下改了一半的记录。
lakehouse(湖仓)试图在低成本对象存储上,提供类似数据仓库的表管理和可靠查询。Delta Lake、Apache Iceberg 等湖表格式用元数据把许多文件组织成一张可更新的表。它们还规定快照、删除和提交等规则,并非只告诉软件怎样读取文件。
LakeSail 项目方称,数月的 Delta 与 Iceberg 集成让团队形成一个判断:湖表格式更像“引擎契约”,而不只是外接的文件读取库。这是项目方基于自身实践提出的架构观点,目前没有论文、代码、基准测试或第三方案例交叉印证。
真正难的是一次 MERGE
简单查询可以分成三步:加载表、列出文件、读取 Parquet——一种常见的列式文件格式。但行级 MERGE(按条件更新、插入或删除记录)牵涉更多动作:读取来源数据,与目标表连接,判断哪些文件需要重写,再做原子提交。原子提交意味着整次修改要么全部成功,要么完全不生效。
项目方认为,这些动作应由引擎统一规划和执行,而不能把提交当作查询末尾的附加步骤。Sail 因此把 Delta 和 Iceberg 放进引擎内部,并称写入可以沿用查询已有的优化、分布式执行和可观测性能力。
为什么值得关注
这一区分会影响“兼容”的含义。一个引擎能读表,不代表它已经正确处理删除、并发写入和 schema evolution——也就是表的列及类型发生变化后,旧数据与新数据仍能安全共存。真正的支持,还要兑现格式规定的执行语义。
局限与未知
- 材料没有说明 Sail 的功能范围、版本、限制条件或效果数字。
- “必须在引擎内统一执行”较为绝对;其他架构可能采用不同的职责边界。
- 全部论断来自 LakeSail 项目方,现阶段更适合视为工程经验,而非行业共识。