您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 分布式数据库中的事务管理和恢复
第四章分布式数据库中的事务管理和恢复小组成员:王波翟晓玲翟冰冰4.1分布式事务概述4.2分布式事务的执行与恢复4.3两阶段提交协议4.4分布式数据库中的数据更新4.5分布式事务增强数据库一致性4.6本章小结4.1分布式事务概述4.1.1分布式事务定义和特性4.1.2分布式事务的结构和事务状态4.1.3分布式事务管理的问题和目标4.1.1分布式事务定义和特性1.分布式事务的定义事务——是为了实现特定的业务功能,而访问数据库的一个最小的逻辑工作单位,它是一个操作序列。分布式事务——在分布式系统中,任何一个应用的请求最终都将转化成对分布在网络中相应站点上数据库存取操作的序列,因此分布式数据库系统中的事务是一个分布式操作的序列,因被操作的数据分布在不同的站点上,所以称为分布式事务。集中式事务与分布式事务的比较:继承——外部特性扩充——执行方式不同,ACID特性复杂恢复在分布式数据库系统中,一个分布式事务即全局事务,通常由一个主(父)事务和在不同站点上执行的子事务(局部事务)组成。一般的,主事务负责事务的开始,提交和异常中止。各个子事务完成对相应站点上数据库的访问操作。全局事务——一个要求访问或更新多个站点上数据的事务。局部事务——一个仅仅访问或更新一个站点上数据的事务。2.分布式事务的特性分布式数据库系统中的事务也应具有事务的ACID四个特性。即:原子性(atomicity)——指事务执行时的不可分割性。这个特性确保了每个事务要么全部发生,要么全部不发生。如果发生,就是不可分割的瞬间的操作。当一个事务处在处理过程中时,其他进程(无论是否与事务有关)都不能看到任何中间状态。一致性(consistency)——指事务的正确性,或者说一个分布式事务是一个使分布式数据库从一个一致状态转变为另一个状态的正确程序。例如在一个银行系统中,最关键的不变性是资金守恒规则。在任何内部转帐之后,银行的资金账目应与转帐前保持一致,但是在事务执行的短暂时刻内,这种不变性会受到损害。然后,事务结束之后,这种损害就没有了。如果若干个事务并发执行的结果与按希望的顺序串行执行的结果时等价的,称该若干个事务的并发执行是可串行的,且其结果是正确的。因此,一致性特征也用可串行性(serializability)特征表示,此时,事务具有ASID特性。隔离性(isolaty)——指在一个正在执行的事务在其提交之前,决不允许把它对共享的数据所作改变的结果提供给其他事务使用。这就是说,事务的执行似乎与其他事务相隔离,即事务的执行不应受到其他并发事务执行的干扰。保持事务的隔离性是有许多原因的,保证维护事务的交互一致性是原因之一。耐久性(durability)——指一旦某个事务被提交了,则无论系统发生任何故障,都不会丢失该事务的执行结果。这就是说,已提交事务对数据库的改变在数据库中应该是持续存在的,这些改变不会因为故障而发生丢失。例如:某银行的存款系统,账号001的存款余额为0元。分布式事务T由两个子事务T1和T2组成。站点i上的事务T1在001账号中存入1000元。如果在事务T1还未提交之前,站点j上的事务T2读取此1000元,并从001账号中取走1000元,事务T2提交,此时现金1000元就交给事务T2的用户。假定此时因某种原因,使事务T1的存款操作无效,即事务T1撤销。事务T1的撤销要求事务T2也撤销,因为事务T2的操作是建立在事务T1操作的基础上的。但是此时要撤销事务T2的操作是不可能的了,因为事务T2已经提交,其产生的结果是无法由系统来撤销的。由于分布式数据库的分布特性,使得分布式事务还具有自己独有的特性:在分布式事务中,除需要考虑访问数据库的存取操作序列外,还必须考虑大量的数据传送,通信原语和控制报文等,这些都是分布式事务所特有的性质。4.1.2分布式事务的结构和事务状态应用1.分布式事务的结构分布式事务分布式事务分布式事务子事务子事务子事务子事务子事务子事务分布式事务的一般结构为:BeginTransaction原语:开始一个事务T1[T2[:子事务或操作序列:Tn[Commit原语:事务成功完成的结束RollBack或Abort原语:事务失败的结束2.分布式数据库中进程的协作(1)两个概念进程:是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它有两个侧面:进程说明:定义进程的行为模式,包括数据和对数据的一组操作,执行这组操作,完成某一功能。进程执行:按进程说明中所定义的模式来启动这个进程,执行其中的那组操作。事务代理(Agent):在分布式数据库系统中,为了完成在不同站点上的相应功能,分布式应用必须在这些站点中执行若干进程,这些进程就称为该应用在那个站点上的“事务代理”。所以,一个事务代理是一个本地进程,它代表应用来执行某些动作。启动一个事务造成在某一站点开始执行那个事务代理。这个事务代理的执行又可能引起在另一个站点开始执行另一个事务。(2)进程的协作为了协调地执行分布式应用的全局操作,分驻于不同站点的诸事务代理必须进行协调。为考虑事务的特性,把各站点上的诸代理组建成协作进程来完成一个全局应用,并作如下规定:1)每一应用均有一个负责启动整个事务的总代理或称根代理,建立总代理的站点称为源站点;2)只有总代理才能发出全局有效的事务开始,提交和撤销原语;3)只有总代理才能请求建立新的事务代理;4)各站点上的子事务都执行成功,总代理才能决定提交该事务,否则总代理将决定撤销该事务。FUND_TRANSFER:Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);Begin_Transaction;SelectAMOUNTinto$FROM_AMOUNTfromACCOUNTwhereACCOUNT_NUMBER=$FROM_ACC;if$FROM_AMOUNT-$AMOUNT0thenabortelsebeginUpdateACCOUNTsetAMOUNT=AMOUNT-$AMOUNTwhereACCOUNT_NUMBER=$FROM_ACC;UpdateACCOUNTsetAMOUNT=AMOUNT-$AMOUNTwhereACCOUNT_NUMBER=$TO_ACC;Commitend图4.1全局级的FUND_TRANSFER事务ROOT_AGENTAGENT:输入:汇出金额和转出/转入账号事务开始:检查转出账号中是否又足够的转出资金更新转出账号存款余额创建代理Agent向代理送信息:转入帐号,金额等待来自Agent的消息成功提交事务:成功结束否撤销事务:失败结束接收来自根代理的消息更新转入账号存款余额发送执行消息给根代理(成功或失败)ROOT-AGENT;Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);Begin_transaction;SelectAMOUNTinto$FROM_AMOUNTfromACCOUNTwhereACCOUNT_NUMBER=$FROM_ACCOUNT;if$FROM_AMOUNT-$AMOUNT0thenabortelsebeginUpdateACCOUNTsetAMOUNT=AMOUNT-$AMOUNTwhereACCOUNT=$FROM_ACC;CreateAGENT;SENDtoAGENT($AMOUNT,$TO_ACC);CommitendAGENT;ReceivefromROOT_AGENT($AMOUNT,$TO_ACC);UpdateACCOUNTsetAMOUNT=AMOUNT+$AMOUNTwhereACCOUNT=$TO_ACC;SendtoROOT_AGENT(‘SUCCESS’/’FALL’)图4.3两个代理组成的FUND_TRANSFER事务4.1.3分布式事务管理的问题和目标1.分布式事务管理的问题(1)处理数据项的多个副本分布式事务管理负责保持同一数据的多个副本间的一致性。(2)单个站点的故障当故障站点得到恢复时,DDBMS协同该故障站点上的DBMS,必须在该站点与系统重新连接时,使它的局部数据与其他站点同步。(3)通信网络的故障系统必须有能力处理一个或多个连接站点的通信网络故障。这个问题的一个极端情况是发生网络分割。(4)分布式提交如果在提交一个分布式事务过程中至少有一个站点发生故障的话,那么这个分布式事务的提交将会产生问题。2.分布式事务管理的目标事务管理的任务就是负责当若干个事务并发执行和事务执行发生错误时,使数据库仍保持一致状态。例如:某公司在银行中有A,B两个账号,现在公司想从账号A中取出一万元,存入账号B。那么就可以定义一个事务,该事务包括两个操作,第一个操作是从账号A中减去一万元,第二个操作是向账号B中加入一万元。在事务开始时,数据库是处于一个一致性状态。在事务执行时,如果只做第一个操作则用户逻辑上就会发生错误,少了一万元,这时数据库就处于非一致性状态。当我们接着做第二个操作,且成功提交后,数据库又处在了一致性的状态。事务管理所追求的理想目标是高执行效率,高并行性和高可靠性。这三大理想目标往往不能兼得,因为他们之间密切相关,而又矛盾。可靠性措施会使效率下降,而事务运行效率不仅取决于采用的策略,还与下列因素有关:(1)CPU和主存利用率(2)控制报文(3)相应时间(4)可用性由此可见事务管理的目标是:(1)维护分布式事务的原子性,一致性,耐久性和隔离性。(2)获得最小的主存和CPU开销,降低控制报文的传输个数和加快分布式事务的响应速度;(3)获得最大限度的系统可靠性和可用性。4.2分布式事务的执行与恢复4.2.1分布式事务管理的抽象模型在分布式数据库系统中,事务管理功能分成两个层次。在每个站点上,又类似于集中式数据库系统中的局部事务管理器(LTM)进行局部事务的管理,负责本站点事务的执行,完成对本站点数据库数据的访问;对整个分布式数据库系统,由驻留在各个站点上的分布式事务管理器(DTM)共同协作,实现对分布式事务的协调和管理。图4.5分布式事务管理的抽象模型站点1站点3站点2本地事务管理器LTM1分布式事务管理器DTM1分布式事务管理器DTM1本地事务管理器LTM2分布式事务管理器DTM1本地事务管理器LTM3局部事务管理器LTM的结构和功能在许多方面与集中式系统类似,主要包括:(1)保证本地事务的ACID特性;(2)维护一个用于恢复的日志,代替DTM把用于分布式事务执行和恢复的信息记入日志。(3)参与适当的并发控制模式,以协调在该站点上执行的事务的并发执行。接收并听从本站点上DTM代理发来的LOG原语,记入日志并执行之。LOG原语包括:localbegin_transaction,localcommitlocalabort分布式事务管理器DTM的功能包括:(1)保证分布式事务的ACID特性,尤其是执行分布式事务的原子性,使每个站点的子事务都成功执行,或都不执行。这是通过向各个站点发begin_transaction,commit或abort,create原语来实现的。(2)负责协调由该站点发出的所有分布式事务的执行。包括:启动分布式事务的执行;将分布式事务分解为一些子事务,并将这些子事务分派到恰当的站点上去执行;决定分布式事务的终止,即决定在该分布式事务中所包含的所有站点上的子事务都撤销或都提交。(3)支持分布式事务的执行位置透明性,这也是分布式事务管理的最基本要求。分布式事务管理器根据事务内部的逻辑划分为若干子事务,按某种要求分布到相应站点上执行,最后由源发站点提供事务的最终结果。它实现了对网络上各站点的各个子事务的监督与管理,完成对整个分布式事务执行过程的调度和管理,从而保证分布式数据库系统的高效率。4.2.2分布式事务执行的控制模型分布式事务的控制模型是指协调分布式事务中各成员DBMS执行其子事务的通用方法;控制分布式事务执行的控制模型有:1)主从模型2)三角模型3)层次控制模型图4.6分布式执行的主从控制模型图4.7分布式执行的三角控制模型图4.8分布式执行的层次控制模型4.2.3分布式
本文标题:分布式数据库中的事务管理和恢复
链接地址:https://www.777doc.com/doc-6299138 .html