Delta Lake(deltalake)如何保证ACID交易?

时间:2019-11-19 12:13:05

标签: acid delta-lake

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

1 个答案:

答案 0 :(得分:0)

0)DeltaLog

Deltalog = Delta Lake 的交易日志。

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

1)原子性

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

2)一致性

DeltaTable一致性通过其强大的模式检查得到保证。

3)隔离

管理并发性以确保隔离。应用了乐观并发控制:

  • 开始执行提交时,线程将快照当前增量日志。
  • 提交操作完成后,线程将同时检查 Deltalog 是否已被另一个更新:
    • 如果没有,则将提交记录在增量日志中
    • 否则,如果需要重新处理,它会更新其DeltaTable视图并再次尝试注册提交。

4)耐久性

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


更多读数:

Diving Into Delta Lake: Unpacking The Transaction Log

ACID properties