【问题标题】:How does Delta Lake (deltalake) guarantee ACID transactions?Delta Lake (deltalake) 如何保证 ACID 交易?
【发布时间】:2019-11-19 12:13:05
【问题描述】:

Delta Lake 使用什么机制来确保用户对 DeltaTable 的操作发起的事务的原子性、一致性、隔离性和持久性?

【问题讨论】:

    标签: databricks acid delta-lake


    【解决方案1】:

    0。 DeltaLog

    Deltalog = Delta Lake 的事务日志。

    deltalog 是有序 json 文件的集合。它充当单一事实来源,让用户可以访问DeltaTable 状态的最新版本。

    1。原子性

    • Delta Lake 将用户执行的每个操作分解为 commits,它们本身由 actions 组成。
    • 只有在每个操作成功完成后(否则将被还原并重新启动或引发错误),提交才会记录在 deltalog 中,以确保其原子性

    2。一致性

    DeltaTable一致性由其强大的模式检查来保证。

    3。隔离

    管理提交的并发性以确保它们的隔离。应用了乐观并发控制:

    • 当开始执行提交时,线程会对当前的 deltalog 进行快照。
    • 提交操作完成后,线程会检查 Deltalog 是否同时被另一个更新:
      • 如果不是,它会在 deltalog 中记录提交
      • 否则,它会更新其DeltaTable 视图并再次尝试注册提交,如果需要,在重新处理步骤之后。

    4。耐用性

    包含改变 DeltaTable 数据的操作的提交需要完成对底层 Parquet 文件(存储在文件系统上)的写入/删除才能被视为成功完成,使它们耐用


    进一步阅读:

    Diving Into Delta Lake: Unpacking The Transaction Log

    ACID properties

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 2021-01-27
      • 2022-10-13
      • 2020-12-11
      • 1970-01-01
      • 2019-10-06
      • 2021-02-10
      相关资源
      最近更新 更多