Databricks多语句事务GA:Lakehouse原生支持数仓事务
DataHot 速览
Databricks 宣布多语句事务(Multi-Statement Transactions)正式可用,支持在 Lakehouse 上运行复杂多步骤工作流并提供原子性保证,无需依赖独立数仓系统。该能力原生覆盖 Delta Lake 与 Apache Iceberg 表,并可结合存储过程、临时表和 SQL 脚本使用。官方称其可减少数据搬迁、重复副本与治理碎片化,降低运维复杂度。
为什么值得关注:这是 Lakehouse 补齐传统数仓事务能力的重要产品进展,直接影响数据平台架构选型、数据一致性与治理复杂度。
译文
AI 逐段翻译多语句事务现已正式可用,使组织能够以原子性保证运行复杂的多步骤工作流,而无需单独的仓库系统。
数据仓库支撑着企业一些最重要的工作负载,包括数据摄取、转换、商业智能、应用和运营分析。其中许多工作负载需要跨多个表进行更改,以共同成功或失败。过去,组织依赖单独的仓库系统来实现这些事务性保证,这带来了昂贵的数据移动、重复副本、分散的治理和运营复杂性。
Databricks 是首个在 Delta Lake 和 Apache Iceberg 表上原生支持多语句事务的湖仓架构。连同存储过程、临时表和 SQL 脚本,多语句事务将传统数据仓库工作负载带到湖仓上开放、受治理的数据中。
传统和云仓库中的事务问题
传统和云仓库提供事务性保证,但往往以碎片化的数据架构为代价:
- 额外副本和数据移动:将数据移入和移出单独的仓库会增加延迟、成本和不一致风险。
- 分散的治理:团队必须在各系统之间复制和同步访问策略、审计和运营控制。
- 复杂的一致性变通方案:开发人员需要自定义编排、对账和重试逻辑来保持相关更改的一致性。
多语句事务将这些保证直接带到开放、受治理的湖仓中,减少重复系统以及保持它们一致所需的运营工作。
湖仓上的事务为数据仓库提供统一基础
湖仓上的事务为在开放企业数据上运行高要求的仓库工作负载提供了基础。它们将开放表格式支持与统一治理和高并发性能相结合。它们还与熟悉的仓库开发工具、数据管道和生产可观测性能力集成。
跨 Delta Lake 和 Apache Iceberg 开放
多语句事务同时支持 Delta Lake 和 Apache Iceberg 表。团队可以保留开放表格式,同时获得跨多个语句和表的原子性保证。他们不必将受治理的数据移入专有格式,也不必在另一个系统中维护事务性副本。
在高并发下快速
湖仓架构支持行级并发,允许并发事务写入同一张表,只要它们不更新同一行。与使用锁将写入串行化的传统数据仓库不同,行级并发使更多事务能够并行运行。因此,Databricks 的性能显著优于传统云仓库和旧式仓库,使组织能够直接在湖仓上运行高要求的仓库工作负载。

与仓库开发和数据管道集成
事务可与其他仓库能力组合,使团队能够在湖仓上构建传统数据仓库工作负载。例如,开发人员可以将中间结果暂存到临时表中,将多步骤业务逻辑封装在存储过程中,并以原子方式提交整个工作流。
事务还可以写入流式表,为持续摄取、转换和发布数据的工作流带来原子性保证。现在,下游管道可以接收一致的更新,防止它们处理不完整的数据。
对敏感数据的受治理事务
事务在读取和写入时均遵守 Unity Catalog 基于属性的访问控制,包括行级安全和列掩码。这对于暂存、验证和发布敏感数据的工作流尤为重要。
生产中的可观测性
生产事务不仅需要正确,还需要易于理解。开发人员可以使用诸如DESCRIBE TABLE、SHOW COLUMNS和GET DIAGNOSTICS等命令来检查事务中涉及的表,并捕获有关事务执行的信息。这些能力使事务性工作流更易于开发、运营和故障排除。
这种完全集成的体验使 Fivetran 能够在湖仓事务之上构建其连接器。
"Fivetran History Mode 使用缓慢变化维度(SCD)类型 2 保留记录的每个版本。每个源更改都是两次目标写入:关闭先前版本并插入新的活动版本——两者必须一起成功。以前,由于事务性保证仅限于单条语句,我们将这些作为单独操作运行,并通过后续同步中的对账逻辑和一致性检查来防御部分失败。借助多语句、多表事务,我们现在将关闭和插入作为一个原子单元提交,因此要么应用完整更改,要么不应用任何更改。这使 Fivetran 能够移除一整类一致性修复代码,并为我们的客户提供对历史数据更强的正确性保证。"——Egidio Terra,Fivetran 员工产品经理
同样,Accolade 使用事务每天处理数千条索赔和负债记录。
"在 Accolade,我们每天在生产中处理大约 1,700 笔事务,以处理传入的索赔和负债。每个更新都必须可靠且一致地完成。多语句、多表事务让我们能够直接在我们的受治理湖仓上运行这些多步骤操作,并具有完整的事务性保证。这种可靠性是我们将关键工作负载更广泛迁移到开放湖仓、而无需搭建单独仓库的核心。"——Akshay Ajgaonkar,Accolade 工程经理
开放格式、集中式治理、行级并发、熟悉的 SQL 功能、管道集成和可观测性共同在湖仓上创造了完整的事务体验。
多语句事务的关键用例
多语句、多表事务支持多种常见模式,用于实现 ETL 现代化、迁移数仓工作负载以及发布可信数据。
为 ETL 提供多表事务保证
一个 ETL 作业可以将相关表作为一个单元进行更新。在此示例中,订单状态和库存余额不会出现不同步。
如果任一更新失败,工作流可以回滚这两项更改,而不是发布一个已完成订单却没有相应的库存调整。
将数仓存储过程迁移到湖仓
存储过程和临时表让开发者能够在受治理的湖仓数据上操作,同时保留熟悉的数仓开发模式。
Unity Catalog 的行级安全和列掩码策略继续适用于受治理的读取和写入。该过程还使用 DESCRIBE TABLE 在下一组写入之前检查目标的架构和元数据,帮助开发者验证其配置并排查问题,而无需离开事务工作流。
实现写入-审计-发布
写入-审计-发布可防止数据在通过所需质量检查之前变为可见。
该工作流暂存新数据、记录其质量结果,并在一个原子操作中发布已验证的记录。如果验证或写入失败,事务可以回滚,而不是暴露部分结果。当下游管道需要持续获取已发布数据时,同一模式可以包含对流式表的事务性写入。
立即开始使用事务
多语句事务已在 Databricks 上针对 UC 托管的 Delta Lake 和 Apache Iceberg 表正式可用。立即使用 Databricks 的 文档 开始使用事务,或通过提示产品内 Assistant 开始使用。
借助湖仓上的事务,您可以将关键的数仓工作负载迁移到开放、受治理的数据上,同时减少重复系统、数据移动和运维复杂性。
这篇内容对你有用吗?
反馈只用于改善内容筛选,不等同于收藏