SQL网络、分布式数据库与数据管理策略
1. 两阶段提交协议
两阶段提交协议可保护分布式事务免受系统B、系统C或通信网络中任何单一故障的影响。以下是该协议在故障恢复方面的两个示例:
-故障发生在系统C发送YES消息之前:假设在步骤3中系统C发送YES消息之前发生故障,系统A将不会收到YES回复,会广播ROLLBACK消息,使系统B回滚事务。系统C的DBMS恢复工具在本地事务日志中找不到YES消息或COMMIT消息,会在恢复过程中回滚系统C上的事务,此时事务的所有部分都将回滚。
-故障发生在系统C发送YES消息之后:若系统C在步骤3发送YES消息后发生故障,系统A将根据系统B的回复决定是否提交或回滚分布式事务。系统C的DBMS恢复工具会在本地事务日志中找到YES消息,但找不到标记事务结束的COMMIT或ROLLBACK消息,恢复工具会询问协调器(系统A)事务的最终处理结果并相应操作。系统A必须记录其提交或回滚事务的决定,直到收到所有参与者的最终确认,以便在发生故障时能响应恢复工具。
两阶段提交协议虽保证了分布式事务的完整性,但会产生大量网络流量。若有n个系统参与事务,协调器为成功提交事务需发送和接收总共4n条消息,且这些消息不包括系统间实际携带SQL语句和查询结果的消息。由于网络开销大,分布式事务会严重影响数据库性能,因此分布式数据库需精心设计,使频繁访问(或至少频繁更新)的数据位于本地系统或单个远程系统,尽量减少更新两个或更多远程系统的事务。
2. 网络应用与数据库架构的发展
计算机网络的创新与关系数据库架构和SQL的许多创新密切相关。
- <