Delta Lake(deltalake)如何保证ACID交易?
How does Delta Lake (deltalake) guarantee ACID transactions?
Delta Lake使用什么机制保证用户在DeltaTable上操作发起的事务的原子性、一致性、隔离性和持久性?
0。 DeltaLog
Deltalog = Delta Lake 的事务日志。
deltalog 是有序 json 文件的集合。它充当单一事实来源,让用户可以访问 DeltaTable
状态的最新版本。
1。原子性
- Delta Lake 将用户执行的每个操作分解为 提交,它们本身由 actions.
- 提交只有在其每个操作成功完成后才会记录在增量日志中(否则它会被还原并重新启动或引发错误),确保其原子性。
2。一致性
DeltaTable
的一致性 由其强大的模式检查保证。
3。隔离
管理并发提交以确保它们隔离。应用乐观并发控制:
- 提交执行开始时,线程会为当前增量日志创建快照。
- 提交操作完成后,线程检查 Deltalog 是否同时被另一个更新:
- 如果不是,它会在增量日志中记录提交
- 否则它会更新其
DeltaTable
视图并再次尝试注册提交,如果需要的话,在重新处理步骤之后。
4。耐久度
包含改变 DeltaTable
数据的操作的提交需要在基础 Parquet 文件(存储在文件系统中)上完成它们的 writes/deletions被视为成功完成,使它们 耐用.
进一步阅读:
Delta Lake使用什么机制保证用户在DeltaTable上操作发起的事务的原子性、一致性、隔离性和持久性?
0。 DeltaLog
Deltalog = Delta Lake 的事务日志。
deltalog 是有序 json 文件的集合。它充当单一事实来源,让用户可以访问 DeltaTable
状态的最新版本。
1。原子性
- Delta Lake 将用户执行的每个操作分解为 提交,它们本身由 actions.
- 提交只有在其每个操作成功完成后才会记录在增量日志中(否则它会被还原并重新启动或引发错误),确保其原子性。
2。一致性
DeltaTable
的一致性 由其强大的模式检查保证。
3。隔离
管理并发提交以确保它们隔离。应用乐观并发控制:
- 提交执行开始时,线程会为当前增量日志创建快照。
- 提交操作完成后,线程检查 Deltalog 是否同时被另一个更新:
- 如果不是,它会在增量日志中记录提交
- 否则它会更新其
DeltaTable
视图并再次尝试注册提交,如果需要的话,在重新处理步骤之后。
4。耐久度
包含改变 DeltaTable
数据的操作的提交需要在基础 Parquet 文件(存储在文件系统中)上完成它们的 writes/deletions被视为成功完成,使它们 耐用.
进一步阅读: