2

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

4

1 回答 1

1

0. 增量日志

Deltalog = Delta Lake的事务日志。

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

1. 原子性

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

2. 一致性

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

3. 隔离

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

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

4. 耐用性

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


进一步阅读:

潜入 Delta Lake:解包事务日志

酸性质

于 2019-11-19T12:13:05.057 回答