Delta Lake 使用什么机制来确保用户对 DeltaTable 的操作发起的事务的原子性、一致性、隔离性和持久性?
问问题
184 次
1 回答
1
0. 增量日志
Deltalog = Delta Lake的事务日志。
deltalog 是有序 json 文件的集合。它充当单一的事实来源,使用户可以访问 aDeltaTable
的状态的最后一个版本。
1. 原子性
- Delta Lake将用户执行的每个操作分解为提交,而提交本身由操作组成。
- 只有在其每个操作成功完成后(否则它会被还原并重新启动或抛出错误),提交才会记录在 deltalog 中,以确保其原子性。
2. 一致性
a的一致性DeltaTable
由其强大的模式检查来保证。
3. 隔离
管理提交的并发性以确保它们的隔离。应用了乐观并发控制:
- 当提交执行开始时,线程对当前的 deltalog 进行快照。
- 当提交操作完成时,线程检查Deltalog是否同时被另一个更新:
- 如果不是,它会在 deltalog 中记录提交
- 否则,它会更新其
DeltaTable
视图并再次尝试注册提交,如果需要,在重新处理步骤之后。
4. 耐用性
包含改变数据的操作的提交DeltaTable
需要完成对底层Parquet文件(存储在文件系统上)的写入/删除,才能被视为成功完成,从而使它们持久。
进一步阅读:
于 2019-11-19T12:13:05.057 回答