两阶段提交协议

上传人:夏** 文档编号:568840937 上传时间:2024-07-27 格式:PPT 页数:51 大小:138KB
返回 下载 相关 举报
两阶段提交协议_第1页
第1页 / 共51页
两阶段提交协议_第2页
第2页 / 共51页
两阶段提交协议_第3页
第3页 / 共51页
两阶段提交协议_第4页
第4页 / 共51页
两阶段提交协议_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《两阶段提交协议》由会员分享,可在线阅读,更多相关《两阶段提交协议(51页珍藏版)》请在金锄头文库上搜索。

1、 4.3 两阶段提交协议两阶段提交协议4.4分布式数据库中的数据更新分布式数据库中的数据更新4.5分布式事务增强数据库一致性分布式事务增强数据库一致性4.6本章小结本章小结14.3 两阶段提交协议两阶段提交协议n n431 两阶段提交协议的基本思想和内容n n432 两阶段提交协议的通信结构n n433 两阶段提交协议与故障恢复24 43 31 1 两阶段提交协议的基本思想和内容两阶段提交协议的基本思想和内容两阶段提交协议的基本思想和内容两阶段提交协议的基本思想和内容n n 两阶段提交协议两阶段提交协议(Two-phase Commitment (Two-phase Commitment Pr

2、otocal2PC)Protocal2PC)既简单又精巧,它把本地原子性提交既简单又精巧,它把本地原子性提交行为的效果扩展到分布式事务,保证了分布式事务行为的效果扩展到分布式事务,保证了分布式事务提交的原子性,并在不损坏日志的情况下实现快提交的原子性,并在不损坏日志的情况下实现快速故障恢复,提高分布式数据库系统的可靠性。速故障恢复,提高分布式数据库系统的可靠性。n n 在两阶段提交协议中,把分布式事务的某一个代在两阶段提交协议中,把分布式事务的某一个代理理( (根代理根代理) )指定为协调者指定为协调者(coodinator)(coodinator),所有其他,所有其他代理称为参与者代理称为参

3、与者(Participants)(Participants)。只有协调者才有。只有协调者才有掌握提交或撤销事务的决定权,而其他参与者各自掌握提交或撤销事务的决定权,而其他参与者各自负责在其本地数据库中执行写操作,并向协调者提负责在其本地数据库中执行写操作,并向协调者提出撤销或提交子事务的意向。一般一个站点惟一地出撤销或提交子事务的意向。一般一个站点惟一地对应一个子事务,如果某一参与者与协调者在同一对应一个子事务,如果某一参与者与协调者在同一站点,虽然它们不需要使用网络来通信,但在处理站点,虽然它们不需要使用网络来通信,但在处理时仍逻辑地认为它与协调者不在同一站点。时仍逻辑地认为它与协调者不在同

4、一站点。 3图图4.14为协调者和参与者关系的示意图为协调者和参与者关系的示意图 4 2PC 2PC保证分布式事务提交的原子性,这是通过坚持保证分布式事务提交的原子性,这是通过坚持在分布式事务的结果生效以前,所有参与执行分布式在分布式事务的结果生效以前,所有参与执行分布式事务的站点都同意提交而做到这一点事务的站点都同意提交而做到这一点. . 5 图图图图4.154.15描述了协调者和一个参与者之间的两阶段描述了协调者和一个参与者之间的两阶段描述了协调者和一个参与者之间的两阶段描述了协调者和一个参与者之间的两阶段提交协议的活动提交协议的活动提交协议的活动提交协议的活动 。图中椭圆形表示状态,虚线

5、表。图中椭圆形表示状态,虚线表。图中椭圆形表示状态,虚线表。图中椭圆形表示状态,虚线表示协调者和参与者之间的消息。虚线上的标号说示协调者和参与者之间的消息。虚线上的标号说示协调者和参与者之间的消息。虚线上的标号说示协调者和参与者之间的消息。虚线上的标号说明了消息的种类明了消息的种类明了消息的种类明了消息的种类 . 2Pc2Pc把事务的提交过程分为两个阶段:把事务的提交过程分为两个阶段:把事务的提交过程分为两个阶段:把事务的提交过程分为两个阶段: 第一阶段是表决阶段,目的是形成一个共同的第一阶段是表决阶段,目的是形成一个共同的第一阶段是表决阶段,目的是形成一个共同的第一阶段是表决阶段,目的是形成

6、一个共同的决定。决定。决定。决定。 第二阶段是执行阶段,目的是实现这个决定第二阶段是执行阶段,目的是实现这个决定第二阶段是执行阶段,目的是实现这个决定第二阶段是执行阶段,目的是实现这个决定. .根根根根据协调者的指令参与者或者提交事务,或者撤据协调者的指令参与者或者提交事务,或者撤据协调者的指令参与者或者提交事务,或者撤据协调者的指令参与者或者提交事务,或者撤销事务,并给协调者发送确认消息。此时,协调销事务,并给协调者发送确认消息。此时,协调销事务,并给协调者发送确认消息。此时,协调销事务,并给协调者发送确认消息。此时,协调者在日志中写入一条事务结束记录并终止事务。者在日志中写入一条事务结束记

7、录并终止事务。者在日志中写入一条事务结束记录并终止事务。者在日志中写入一条事务结束记录并终止事务。67 请注意协调者做出关于事务的全局终止决定的方请注意协调者做出关于事务的全局终止决定的方式。该决定受两条规则支配式。该决定受两条规则支配, ,这两条规则合称为全这两条规则合称为全局提交规则:局提交规则: n n 只要有一个参与者撤销事务,协调者就必须做只要有一个参与者撤销事务,协调者就必须做出全局撤销决定。出全局撤销决定。n n 只有所有参与者都同意提交事务,协调者才能只有所有参与者都同意提交事务,协调者才能做出全局提交决定。做出全局提交决定。 8 从从图图4.144.14中可以看出以下一些关于

8、两阶段提交协议的中可以看出以下一些关于两阶段提交协议的一些重要之处。首先,两阶段提交协议允许参与者可以一些重要之处。首先,两阶段提交协议允许参与者可以单方面撤销事务;其次,一旦参与者确定了提交或撤销单方面撤销事务;其次,一旦参与者确定了提交或撤销提议它就不能再更改它的提议提议它就不能再更改它的提议; ;第三,当参与者处于第三,当参与者处于就绪状态时,根据协调者发出的消息的种类,参与者可就绪状态时,根据协调者发出的消息的种类,参与者可以转换为提交状态或撤销状态;第四,协调者依据全局以转换为提交状态或撤销状态;第四,协调者依据全局提交规则做出全局终止决定提交规则做出全局终止决定; ;最后,注意协调

9、者和参与最后,注意协调者和参与者可能进入某些相互等待对方发送消息的状态。为了确者可能进入某些相互等待对方发送消息的状态。为了确保它们能够从这些状态中退出并终止,要使用定时器。保它们能够从这些状态中退出并终止,要使用定时器。每个进程进入一个状态时都要设置定时器。如果所期待每个进程进入一个状态时都要设置定时器。如果所期待的消息在定时器超时之前没有到来,定时器向进程报警,的消息在定时器超时之前没有到来,定时器向进程报警,进程于是调用它自己的超时协议。进程于是调用它自己的超时协议。 9432 两阶段提交协议的通信结构两阶段提交协议的通信结构n n集中式2Pc通信结构n n分层式2Pc通信结构n n线性

10、2Pc的通信结构 n n分布式2PC的通信结构10 集中式集中式2Pc通信结构通信结构 有一些不同的通信范例可以在实现两阶段提交协议时有一些不同的通信范例可以在实现两阶段提交协议时使用。上面讨论的并在使用。上面讨论的并在图图4.144.14中指述的范例称为集中式两中指述的范例称为集中式两阶段提交协议,这是因为通信只发生在协调者和参与者之阶段提交协议,这是因为通信只发生在协调者和参与者之间,参与者之间不交换消息。图间,参与者之间不交换消息。图4.164.16中作了更明确的描述中作了更明确的描述. .11分层式分层式2Pc通信结构通信结构 如图协调者是在树根的如图协调者是在树根的DTMDTM代理者

11、。在协调者和代理者。在协调者和参与者之间的通信不用直接广播的方法进行参与者之间的通信不用直接广播的方法进行, ,而是使报而是使报文在树中上下传播。每个文在树中上下传播。每个DTMDTM代理者是通信树的一个代理者是通信树的一个内部节点,它从下层节点处收集报文或向它们广播报文。内部节点,它从下层节点处收集报文或向它们广播报文。 12 线性线性2Pc的通信结构的通信结构 另一种可供选择的范例是线性两阶段提交协议另一种可供选择的范例是线性两阶段提交协议( (也称为嵌套两阶段提交协议也称为嵌套两阶段提交协议) )。在该结构中,参。在该结构中,参与者之间可以相互通信。为了通信,系统中的站与者之间可以相互通

12、信。为了通信,系统中的站点之间要进行排序。假定参与事务执行的站点之点之间要进行排序。假定参与事务执行的站点之间的顺序是间的顺序是1 1到到N N,协调者就是序列中的第一个。,协调者就是序列中的第一个。实现两阶段提交协议时,在第一阶段使用了向前实现两阶段提交协议时,在第一阶段使用了向前通信方式,从协调者通信方式,从协调者(No(No1)1)到到N N;在第二阶段使;在第二阶段使用了向后通信方式,即从用了向后通信方式,即从N N到协调者。于是,线到协调者。于是,线性两阶段提交协议按如下方式操作性两阶段提交协议按如下方式操作. . 13 图图4.18 4.18 线性线性2PC2PC的通信结构的通信结

13、构 它产生较少的消息但是不提供任何并行。因它产生较少的消息但是不提供任何并行。因此,它增加了相应时间,降低了性能。然而,它此,它增加了相应时间,降低了性能。然而,它可能适合于没有广播能力的网络。可能适合于没有广播能力的网络。14分布式分布式2PC的通信结构的通信结构 实现两阶段提交协议的另一种流行的通信结构实现两阶段提交协议的另一种流行的通信结构允许所有的参与者在第一阶段相互通信,以便它允许所有的参与者在第一阶段相互通信,以便它们能独立做出关于特定事务的终止决定。这称为们能独立做出关于特定事务的终止决定。这称为分布式两阶段提交协议,它不需要第二阶段,因分布式两阶段提交协议,它不需要第二阶段,因

14、为参与者可以自己做出决定。其操作过程如下:为参与者可以自己做出决定。其操作过程如下: 15 图4.19 分布式2PC的通信结构 16 另外在线性两阶段提交协议中,一个参与者必须知道在线序关系中其后继参与者的标识;在分布式两阶段提交协议中,一个参与者必须知道所有参与者的标识。在协调者发给参与者的准备消息中附加一张参与者列表可以解决该问题,因为协调者清楚地知道谁是参与者。这样的问题不会出现在集中式两阶段提交协议中。 算法4.1和算法4.2分别描述了集中式两阶段提交协议通信结构中协调者和参与者的执行过程.这些算法说明了协调者和参与者之间相互通信的过程。 17n n算法4.1 2PC-Coordina

15、torn n算法4.2 2PC-Parcipant 18433 两阶段提交协议与故障恢复两阶段提交协议与故障恢复 由两阶段提交协议的工作原理可见,之所以能由两阶段提交协议的工作原理可见,之所以能够在不丢失运行记录信息的情况下够在不丢失运行记录信息的情况下. .从所有故障中从所有故障中迅速恢复,就是因为在执行过程中维护了事务日迅速恢复,就是因为在执行过程中维护了事务日志,记录了执行恢复所需要的信息。志,记录了执行恢复所需要的信息。 现在来分析当发生不同类型故障时,现在来分析当发生不同类型故障时,2Pc2Pc的行为的行为 。n n 站点故障n n 丢失报文 n n 网络分割 19站点故障站点故障

16、(1) (1)一参与者在把就绪记录写入运行记录以前出一参与者在把就绪记录写入运行记录以前出现故障。在这种情况下,协调者超时机制满期,现故障。在这种情况下,协调者超时机制满期,它将采取撤消的决定。所有的参与者都撤销它们它将采取撤消的决定。所有的参与者都撤销它们的子事务。当发生该故障的参与者恢复时,重启的子事务。当发生该故障的参与者恢复时,重启动过程简单地撤销该事务即可不需要过问其他动过程简单地撤销该事务即可不需要过问其他站点的情况。站点的情况。 20 (2)(2)一参与者在把就绪记录写入运行记录以后发一参与者在把就绪记录写入运行记录以后发生故障。在这种情况下,其他参与者的站点终止该生故障。在这种

17、情况下,其他参与者的站点终止该事务事务( (提交或撤消提交或撤消) )。当故障站点恢复时,重启动过。当故障站点恢复时,重启动过程不得不询问协调者或别的某个参与者关于该事务程不得不询问协调者或别的某个参与者关于该事务的结果的结果( (提交或撤消提交或撤消) ),然后执行相应的动作,然后执行相应的动作( (提交提交或撤消或撤消) )。这种情况下需要访问远程的恢复信息。这种情况下需要访问远程的恢复信息. .21 (3) (3)协调者在把预备记录写入运行记录以后,而在协调者在把预备记录写入运行记录以后,而在写入写入global-commitglobal-commit或或global-abortglob

18、al-abort记录以前发生故障。记录以前发生故障。这种情况下所有已经回答这种情况下所有已经回答READYREADY的参与者必须等待的参与者必须等待协调者恢复。协调者的重启动过程从头开始恢复提协调者恢复。协调者的重启动过程从头开始恢复提交协议,从预备记录交协议,从预备记录( (在运行记录中在运行记录中) )读取参与者的读取参与者的标识,再次把标识,再次把PREPARE(PREPARE(预备预备) )报发送给它们。每个报发送给它们。每个就绪的参与者必须要识别出该新的就绪的参与者必须要识别出该新的PREPAREPREPARE报文是报文是前一个的重复报文。前一个的重复报文。22 (4) (4)协调者

19、在远行记录中写入协调者在远行记录中写入global-commitglobal-commit或或global-abortglobal-abort记录以后而在写入完成记录以前发生记录以后而在写入完成记录以前发生故障。这种情况下,协调者在重启动时必须再次故障。这种情况下,协调者在重启动时必须再次给所有参与者发送其决定给所有参与者发送其决定, ,未曾收到此命令的所有未曾收到此命令的所有参与者不得不等待到协调者恢复为止。和以前一参与者不得不等待到协调者恢复为止。和以前一样,参与者不应因收到该命令报文两次而受到影样,参与者不应因收到该命令报文两次而受到影响。响。 (5) (5)协调者在运行记录中写入完成以

20、后发生故障。协调者在运行记录中写入完成以后发生故障。这种情况下这种情况下, ,该事物已经结束该事物已经结束, ,在重启动时不需任在重启动时不需任何动作何动作。23 丢失报文丢失报文 (1) (1)来自一个参与者的回答报文来自一个参与者的回答报文(READY(READY或或ABORT)ABORT)被丢失。在这种情况下,协调者的超时满被丢失。在这种情况下,协调者的超时满期,整个事务被撤销。要注意,只由协调者来发期,整个事务被撤销。要注意,只由协调者来发现这种故障,而从协调者的观点来看,它完全好现这种故障,而从协调者的观点来看,它完全好像是一参与者的故障。但是从参与者的观点来像是一参与者的故障。但是

21、从参与者的观点来看情况就不同了,该参与者并不认为自己有故障,看情况就不同了,该参与者并不认为自己有故障,因而不会执行重启动过程。因而不会执行重启动过程。 (2) (2)丢失一个丢失一个PREPAREPREPARE报文。这种情况下该参与报文。这种情况下该参与者仍停在等待状态。因为协调者并没有收到回答,者仍停在等待状态。因为协调者并没有收到回答,所以其全局结果和前一种情况相同。所以其全局结果和前一种情况相同。24 (3) (3)丢失一命令报文丢失一命令报文(commit(commit或或abort)abort)。采用。采用图图4.154.15的协议时,该参与者对此命令处于不肯定状态。的协议时,该参

22、与者对此命令处于不肯定状态。在参与者中引入超时机制就可简单地消除这个问在参与者中引入超时机制就可简单地消除这个问题;从回答起在超时后仍末收到任何报文的话,题;从回答起在超时后仍末收到任何报文的话,就发送就发送请求再发送该命令。请求再发送该命令。 (4) (4)丢失一个丢失一个AcKAcK报文。协调者对参与者有无收报文。协调者对参与者有无收到该报文处于不肯定状态。可以在协调者中引入到该报文处于不肯定状态。可以在协调者中引入超时机制就可简单地消除这个问题;如果从发出超时机制就可简单地消除这个问题;如果从发出命令起到超时后仍未受到任何命令起到超时后仍未受到任何AcKAcK报文,协调者报文,协调者就再

23、次发送该命令。在参与者站点处理这种情况就再次发送该命令。在参与者站点处理这种情况的最好办法是再次发送的最好办法是再次发送AcKAcK报文,即使该子事务报文,即使该子事务在那期间已经完成并不再活动也要重发。在那期间已经完成并不再活动也要重发。25网络分割网络分割 这里假设发生了简单的网络分割情况,即把这里假设发生了简单的网络分割情况,即把站点分成为两个组;包含协调者的组叫做协调者站点分成为两个组;包含协调者的组叫做协调者组,而另一组叫参与者组。从协调者的观点来看,组,而另一组叫参与者组。从协调者的观点来看,这种分割等效于一组参与者的故障情况,与上述这种分割等效于一组参与者的故障情况,与上述第第1

24、(1)1(1)和和1(2)1(2)点相似:协调者作出决定然后把命令点相似:协调者作出决定然后把命令发送给协调者一组中的所有参与者,因而这些站发送给协调者一组中的所有参与者,因而这些站点能够正确地结束事务。如从参与者组的成员观点能够正确地结束事务。如从参与者组的成员观点来看,这种分割等效于协调者故障,情况与上点来看,这种分割等效于协调者故障,情况与上述第述第1(3)1(3)和和1(4)1(4)点相似。点相似。 要注意,对于涉及处理分布式事务的站点来要注意,对于涉及处理分布式事务的站点来说,其恢复过程要比集中式数据库复杂。在集中说,其恢复过程要比集中式数据库复杂。在集中式数据库中,只合两种可能;事

25、务要么提交,要式数据库中,只合两种可能;事务要么提交,要么不提交,所以恢复机构执行相应的重做或撤销么不提交,所以恢复机构执行相应的重做或撤销动作。在分布式数据库中,还可能有其他情况;动作。在分布式数据库中,还可能有其他情况;26 (1) (1)一个参与者就绪一个参与者就绪( (情况情况1(2)1(2)。 (2) (2)协调者已启动第协调者已启动第1 1阶段阶段( (情况情况1(3)1(3)。 (3) (3)协调者已启动第协调者已启动第2 2阶段阶段( (情况情况1(4)1(4)。 这些情况分布式数据库管理系统中的这些情况分布式数据库管理系统中的恢复机制都能识别,并根据识别的情况恢复机制都能识别

26、,并根据识别的情况作相应的处理作相应的处理。274.4分布式数据库中的数据更新分布式数据库中的数据更新n n4.4.1 多站点的数据更新n n4.4.2 主文本更新法n n4.4.3 快照方法284.4.1 多站点的数据更新多站点的数据更新 1 多站点数据更新的原则和方法 在分布式数据库系统中,为了获得高查询速度和在分布式数据库系统中,为了获得高查询速度和高可靠性,以增加数据复制的代价来减少数据通信高可靠性,以增加数据复制的代价来减少数据通信的代价并增强系统的可靠性。但由于数据复制在的代价并增强系统的可靠性。但由于数据复制在多个站点上,一旦要对有多个副本的数据进行更新多个站点上,一旦要对有多个

27、副本的数据进行更新时,为保证数据库的一致性,就必须对这些数据的时,为保证数据库的一致性,就必须对这些数据的所有复制版本同时做同样的更新。所有复制版本同时做同样的更新。29 先考虑单用户情况。如果站点先考虑单用户情况。如果站点A A上有一个事务上有一个事务T T对数对数据据x x进行更新,若进行更新,若x x在站点在站点BlBl,B2B2,BnBn和和C1C1,C2C2,C mC m上都有它的副本上都有它的副本. .而现在站点而现在站点BlBl,B2B2,BnBn与站点与站点A A连通,但站点连通,但站点ClCl,C2C2,CmCm与站点与站点A A现在不连通,如图所示。现在不连通,如图所示。

28、30 此时现在只能对连通站点此时现在只能对连通站点BlBl,B2B2,BnBn上的上的x x副本进行更新,而对不连通站点副本进行更新,而对不连通站点ClCl,C2C2,CmCm上的上的x x副本,只能当站点连通时才能进行副本,只能当站点连通时才能进行更新。为此,要记录对更新。为此,要记录对x x所做的更新内容和应更新所做的更新内容和应更新而未被连通的站点,一旦其中的站点连通,就立刻而未被连通的站点,一旦其中的站点连通,就立刻进行相应的更新。进行相应的更新。2 2 多站点数据更新存在的问题多站点数据更新存在的问题 1) 1) 多站点各副本同时更新的不现实性多站点各副本同时更新的不现实性: :因为

29、每一个因为每一个站点某一时刻与站点站点某一时刻与站点A A连通的概率为连通的概率为P P (P=1), (P=1),同时更新要求每一个有同时更新要求每一个有X X副本的站点与副本的站点与A A都连都连通通, ,其概率是其概率是:P*n,:P*n,当当n n趋于无穷大时趋于无穷大时, , P*n P*n趋于趋于0. 0. 31 2) 2)当对未连通的站点上的副本要求更新的事务增当对未连通的站点上的副本要求更新的事务增多时多时, ,就不能保证在该站点就不能保证在该站点A A连通时连通时, ,进行的更新是进行的更新是正确的正确的. . 因为更新的顺序就是连通的顺序因为更新的顺序就是连通的顺序, ,而

30、通常情况下而通常情况下, ,更新的顺序不会是连通的顺序更新的顺序不会是连通的顺序, ,除非更新是相互独除非更新是相互独立的立的. . 324.5.2主文本更新法主文本更新法1. 1.基本思想基本思想 对每一个有多副本的数据对每一个有多副本的数据( (关系或片段关系或片段) ),指,指定其中一个副本为主文本,其他为辅文本。一定其中一个副本为主文本,其他为辅文本。一般,不同的数据其主文本在不同的站点上,对般,不同的数据其主文本在不同的站点上,对一个数据的更新,只要对它的主文本进行更新,一个数据的更新,只要对它的主文本进行更新,就认为完成了对该数据的更新。然后由拥有主就认为完成了对该数据的更新。然后

31、由拥有主文本的站点负责把对主文本所做的更新,及时文本的站点负责把对主文本所做的更新,及时发送给各辅文本站点进行更新。各辅文本的更发送给各辅文本站点进行更新。各辅文本的更新可并行进行。如有与主文本尚未连通的辅文新可并行进行。如有与主文本尚未连通的辅文本,在连通后按记录的更新顺序逐一进行更新。本,在连通后按记录的更新顺序逐一进行更新。33例如 34 站点站点A A拥有拥有x x的主文本,其他站点拥有的主文本,其他站点拥有x x的辅文的辅文本站点本站点B1B1现在未连通现在未连通TITI和和T2T2分别为站点分别为站点A A和和站点站点B5B5发出的修更新发出的修更新x x的事务,且的事务,且TIT

32、I先于先于T2T2。站。站点点A A上的事务管理程序按上的事务管理程序按TITI,T2T2顺序对在其站点顺序对在其站点上的上的x x主文本进行修改,并依次记录更新内容和尚主文本进行修改,并依次记录更新内容和尚 未连通的站点未连通的站点B3B3。并及时向各连通站点发出更新。并及时向各连通站点发出更新通知和更新内容,由于站点通知和更新内容,由于站点BIBI,B2B2,B4B4, B5 B5是是连通站点,收到通知按连通站点,收到通知按T1T1,T2T2要求进行修改。因要求进行修改。因B3B3尚未连通,待其连通时,由站点尚未连通,待其连通时,由站点A A将记录的要将记录的要求更新的内容和修更新顺序通知

33、站点求更新的内容和修更新顺序通知站点B2B2上的事务上的事务管理器执行更新。管理器执行更新。35 2 2存在问题存在问题 (1) (1)更新传播要在短时间内完成,否则将会得到更新传播要在短时间内完成,否则将会得到“ “过时过时” ”数据。数据。 (2) (2)如果主文本站点不可用时,会引起其他辅文如果主文本站点不可用时,会引起其他辅文本站点也不可用。本站点也不可用。 3 3 改进方法改进方法 采用采用“ “移动主文本法移动主文本法”. ”. 移动主文本法移动主文本法移动主文本法移动主文本法:若初次修改在某个辅文本站点上:若初次修改在某个辅文本站点上进行,然后再把更新引向该数据的主站点。如果主进

34、行,然后再把更新引向该数据的主站点。如果主站点此时尚未连通,则另选一个辅站点中的辅文本站点此时尚未连通,则另选一个辅站点中的辅文本为该数据新的主文本进行更新为该数据新的主文本进行更新. .待原主文本站点连待原主文本站点连通后通后, ,系统将自动把它改为辅文本系统将自动把它改为辅文本, ,并按记录要求执并按记录要求执行更新行更新. .36 若初次修改就在主文本上进行,而主文本站点若初次修改就在主文本上进行,而主文本站点现在与网络未连通,即作本地修改,则这次修改现在与网络未连通,即作本地修改,则这次修改操作失败,事务被撤消。因为主文本站点与网络操作失败,事务被撤消。因为主文本站点与网络尚未连通,也

35、就无法传播更新。尚未连通,也就无法传播更新。 移动主文本法也存在一个问题,当网络分割成移动主文本法也存在一个问题,当网络分割成多个部分时,更新处理会不一致。例如网络被多个部分时,更新处理会不一致。例如网络被分割成分割成w1w1和和w2w2,对数据,对数据x x进行更新。若进行更新。若w1w1中将中将x x修修改为改为R R,w2w2中将中将x x修改为修改为S S,当网络连通时,将使,当网络连通时,将使用用R R还是使用还是使用S S来恢复来恢复x x呢呢? ?374.4.3 快照方法快照方法 1 1定义定义 快照类似于视图,但快照的数据是实际存放在数快照类似于视图,但快照的数据是实际存放在数

36、据库中,是对其中数据暂时凝固,且对满足条件的据库中,是对其中数据暂时凝固,且对满足条件的数据的定期复制,并用新的一次复制替代原来的复数据的定期复制,并用新的一次复制替代原来的复制。它可以使用命令定义制。它可以使用命令定义, ,既可定期刷新,也可当既可定期刷新,也可当必要时强制刷新。必要时强制刷新。 下面是一个创建快照的下面是一个创建快照的SQLSQL语句语句 38 2 2快照方法的优缺点快照方法的优缺点快照方法的优缺点快照方法的优缺点 采用快照方法可完成复杂的查询,而又不阻止采用快照方法可完成复杂的查询,而又不阻止更新更新. .为了与主文本保持同步为了与主文本保持同步, ,当主文本被更新时当主

37、文本被更新时, ,需要刷新快照需要刷新快照. . 虽然快照中的数据不是虽然快照中的数据不是“ “全新全新” ”的,但在实际的,但在实际应用中,很少需要真正应用中,很少需要真正“ “全新全新” ”的数据。因此,的数据。因此,快照方法既避免了某些并发控制的开销快照方法既避免了某些并发控制的开销( (见第五章见第五章) ),而又便于复杂查询的完成,是提高系统可用性,而又便于复杂查询的完成,是提高系统可用性的有的有 效方法效方法. . 但是快照是一个只读关系但是快照是一个只读关系. .对查询操作可使用对查询操作可使用快照快照, ,也可使用主文本也可使用主文本, ,而对更新操作还是应在主而对更新操作还是

38、应在主文本上完成文本上完成. .39分布式数据库中存在的信息是对客观世界的反分布式数据库中存在的信息是对客观世界的反映客观世界要保持合理的状态存在,总要有一定映客观世界要保持合理的状态存在,总要有一定规则的,这种规则反映到分布式数据库中,就是分规则的,这种规则反映到分布式数据库中,就是分布式一数据库的数据要满足一定约束条件,这种约布式一数据库的数据要满足一定约束条件,这种约束条件称为束条件称为一致性约束一致性约束一致性约束一致性约束它分为两类:它分为两类:业务规则业务规则业务规则业务规则的一致性约束:它是客观世界本身存的一致性约束:它是客观世界本身存在的一定规则;在的一定规则;冗余数据冗余数据

39、冗余数据冗余数据的一致性约束:分布式数据库管理的的一致性约束:分布式数据库管理的需要,如为了提高系统效率和可靠性采用冗余数据需要,如为了提高系统效率和可靠性采用冗余数据45 分布式数据库中的数据更新分布式数据库中的数据更新404.5.1 4.5.1 业务规则的一致性业务规则的一致性业务规则的一致性业务规则的一致性 业务规则可以被分为 有效性约束和数据依赖约束. 有效性约束有效性约束的业务规则主要是 域约束 数据依赖约束数据依赖约束的业务规则是指实体完整性约束和引用完整性约束. 41 如果一个数据库中的数据满足全部业务规则如果一个数据库中的数据满足全部业务规则, ,就是就是说它是一致的数据库说它

40、是一致的数据库, ,也就是说也就是说, ,数据库中的数据值对数据库中的数据值对于预先确定的业务规则是一致的。于预先确定的业务规则是一致的。 数据库管理员和用户对分布式数据库系统必须支数据库管理员和用户对分布式数据库系统必须支持的业务规则都应有确切的了解。持的业务规则都应有确切的了解。 例如:考虑在银行业务中的一些事务的例子:例如:考虑在银行业务中的一些事务的例子: 银行的现金存取处理是一个事务:银行的现金存取处理是一个事务: 银行的客户从他们在银行的帐户中取走现金。注银行的客户从他们在银行的帐户中取走现金。注意:如果客户试图从他的帐户中取出多于存入的累计意:如果客户试图从他的帐户中取出多于存入

41、的累计余额,事务将对数据库所做的任何更新进行回退余额,事务将对数据库所做的任何更新进行回退. . 那么这个事务强制实施下述业务规则,即一个帐那么这个事务强制实施下述业务规则,即一个帐户的存款余额必须大于等于户的存款余额必须大于等于0 0。42 所有业务规则,无论在用户编写的事务中或由所有业务规则,无论在用户编写的事务中或由DBMSDBMS的事务优化器产生的事务中,都必须强制的事务优化器产生的事务中,都必须强制实行。实行。 多数商用分布式多数商用分布式DBMSDBMS的事务优化,在产生分的事务优化,在产生分布式事务时只加少数几类规则。布式事务时只加少数几类规则。 为了补救这种不足,需要:为了补救

42、这种不足,需要: 1. 1.程序员必须编写加进业务规则的分布式事务程序员必须编写加进业务规则的分布式事务 2. 2.必须定期扫描,检测不一致的数据,予以消必须定期扫描,检测不一致的数据,予以消除除 3. 3.找出那些没有实施的,不能由事务优化器加找出那些没有实施的,不能由事务优化器加上的强行业务规则。上的强行业务规则。434 45 52 2 冗余数据的一致性冗余数据的一致性 1 1冗余数据必须保持一致冗余数据必须保持一致 在分布式数据库设计时,数据库管理员把关系在分布式数据库设计时,数据库管理员把关系的片段分配到多个成员站点是出于以下两个主要的片段分配到多个成员站点是出于以下两个主要的理由:的

43、理由: 提高系统的可靠性和可用性。如果用户由于某提高系统的可靠性和可用性。如果用户由于某种原因不能访问某个成员数据库那么他们可以种原因不能访问某个成员数据库那么他们可以访问另一个成员数据库上的相同片段;访问另一个成员数据库上的相同片段; 提高提高“ “读读” ”事务的本地性,以降低通信成本。事务的本地性,以降低通信成本。特别是对读出比写入频率高得多的那些应用。特别是对读出比写入频率高得多的那些应用。44考虑下面两个事务:考虑下面两个事务:考虑下面两个事务:考虑下面两个事务: 假定包含的片段的副本驻留在北京和上海两个成员数据库中。同时假定一个请求(事务)是在北京发出,而另一个请求在上海发出。这两

44、个请求在两个成员中可能以不同的顺序执行。设x的初始值为50。在两个DBMs按不问顺序执行这两个请求的结果如表所示。45 x在这两个成员数据库中的值是有分歧的。 数据库管理员所能做的,或者允许成员数据库中的冗余数据出现暂时的分歧而后使它们归于一致;或者保证事务在包含冗余数据的站点以相同的顺序执行事务,从而防止包含冗余数据的成员数据库产生分歧。46 2 2异步复制器异步复制器 试图使分布式数据库中冗余数据绝对保持一致试图使分布式数据库中冗余数据绝对保持一致似乎是不可能的,一般允许对冗余数据的修改有似乎是不可能的,一般允许对冗余数据的修改有暂时的不一致。暂时的不一致。 为了更好地管理冗余数据为了更好

45、地管理冗余数据( (多副本的复制数据多副本的复制数据) )最近数据库厂家推出了几种新的产品,这些产最近数据库厂家推出了几种新的产品,这些产品称为数据复制器。采用一种级联策略对复制片品称为数据复制器。采用一种级联策略对复制片段或复制表中的数据值进行同步。复制器强制用段或复制表中的数据值进行同步。复制器强制用户修改数据的主副本,然后把修改迁移到其余的户修改数据的主副本,然后把修改迁移到其余的副本上。用户可以从辅助副本检索数据,但是禁副本上。用户可以从辅助副本检索数据,但是禁让用户修改辅助副本。让用户修改辅助副本。47 复制数据使用户可以把一个数据库分拆开来,复制数据使用户可以把一个数据库分拆开来,

46、把信息存放在更接近于使用信息最多的用户。把信息存放在更接近于使用信息最多的用户。 不同的数据复制产品的差别有如下两个方面:不同的数据复制产品的差别有如下两个方面:n n 在主副本上何时获取数据在主副本上何时获取数据n n 何时把主副本获取的数据用到辅助副本。何时把主副本获取的数据用到辅助副本。 主副本获取数据,在其传输到不同成员数据库主副本获取数据,在其传输到不同成员数据库中的辅助副本之前,先复制到一个获取文件或队中的辅助副本之前,先复制到一个获取文件或队列中。获取有关数据更新信息可采用如下方法:列中。获取有关数据更新信息可采用如下方法:n n 数据驱动数据驱动n n 计时器驱动计时器驱动n

47、n 应用程序驱动应用程序驱动48 把获取的有关数据更新信息用于辅助副本也可把获取的有关数据更新信息用于辅助副本也可以采用如下方法:以采用如下方法:n n 数据驱动数据驱动n n 计时器驱动计时器驱动n n 应用程序驱动应用程序驱动494.6小结小结 分布式事务管理的主要目标是保证所有事务具分布式事务管理的主要目标是保证所有事务具有原子性、一致性有原子性、一致性( (可串行性可串行性) )、隔离性和持久性。、隔离性和持久性。为了达到这个目标为了达到这个目标, ,分布式事务管理程序在本地事分布式事务管理程序在本地事务管理程序保证本地事务的务管理程序保证本地事务的ACID(ACID(或或ASID)A

48、SID)的基础的基础上,利用两阶段提交协议来保证分布式事务的上,利用两阶段提交协议来保证分布式事务的ACIDACID,从而获得分布式数据库系统的可靠性。,从而获得分布式数据库系统的可靠性。 两阶段提交协议确保同一事务的所有子事务要两阶段提交协议确保同一事务的所有子事务要么全部提交,要么全部撤消,不管有无发生故障。么全部提交,要么全部撤消,不管有无发生故障。而且两阶段提交协议在不丢失运行日志信息的情而且两阶段提交协议在不丢失运行日志信息的情况况 下,可从任何故障恢复。两阶段提交协议的通下,可从任何故障恢复。两阶段提交协议的通信结构可以是集中式、分层式、线性或分布信结构可以是集中式、分层式、线性或分布 式的,式的,它们各有特色。它们各有特色。50 分布式事务增强了数据库的一致性,包括业务分布式事务增强了数据库的一致性,包括业务规则一致性和冗余数据的一致性。在分布式数据规则一致性和冗余数据的一致性。在分布式数据库系统中数据的冗余是提高系统可靠性和查询处库系统中数据的冗余是提高系统可靠性和查询处理效率的基础,对多副本数据的更新,通常采用理效率的基础,对多副本数据的更新,通常采用主文本或移动主文本更新方法。快照方法不影响主文本或移动主文本更新方法。快照方法不影响数据更新而又利于处理复杂查询,是提高系统可数据更新而又利于处理复杂查询,是提高系统可用性的有效方法。用性的有效方法。51

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号