分布式数据库中的事务管理和恢复

分布式数据库中的事务管理和恢复

ID:39150931

大小:370.81 KB

页数:44页

时间:2019-06-25

分布式数据库中的事务管理和恢复_第1页
分布式数据库中的事务管理和恢复_第2页
分布式数据库中的事务管理和恢复_第3页
分布式数据库中的事务管理和恢复_第4页
分布式数据库中的事务管理和恢复_第5页
资源描述:

《分布式数据库中的事务管理和恢复》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、分布式事务概述分布式事务的执行与恢复两阶段提交协议分布式数据库中的数据更新分布式事务增强数据库一致性本章主要内容分布式事务概述分布式事务定义和特性分布式事务的结构和事务状态分布式事务管理的问题和目标分布式事务定义和特性1.分布式事务的定义事务——是为了实现特定的业务功能而访问数据库的一个最小的逻辑工作单位,它是一个操作序列。分布式事务——在分布式系统中,对分布在网络中不同站点上数据库存取操作的序列。一个分布式事务即全局事务,通常由一个主(父)事务和在不同站点上执行的子事务(局部事务)组成。主事务负责事务的开始,提交和异常中止。子事务完成对相应站点上数据库的

2、访问操作。全局事务是访问或更新多个站点上数据的事务。局部事务是仅仅访问或更新一个站点上数据的事务。2.分布式事务的特性:ACID原子性(atomicity)——指事务执行时的不可分割性。这个特性确保了每个事务要么全部发生,要么全部不发生。一致性(consistency)——事务执行的结果必须使数据库从一个一致性状态转到另一个一致性状态。。隔离性(isolaty)——一个事务的执行不被其他事务干扰。持久性(durability)——一个事务一旦提交,它对数据库中数据的改变应该是永久性的。无论系统发生任何故障,都不会丢失该事务的执行结果。应用分布式事务的结构分

3、布式事务分布式事务分布式事务子事务子事务子事务子事务子事务子事务分布式事务的一般结构为:BeginTransaction原语:开始一个事务T1[T2[:子事务或操作序列:Tn[Commit原语:事务成功完成的结束RollBack或Abort原语:事务失败的结束2.分布式数据库中进程的协作(1)两个概念进程:是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它有两个侧面:进程说明:定义进程的行为模式,包括数据和对数据的一组操作,执行这组操作,完成某一功能。进程执行:按进程说明中所定义的模式来启动这个进程,执行其中的那组操作。事务代理(Agent):

4、在分布式数据库系统中,为了完成在不同站点上的相应功能,分布式应用必须在这些站点中执行若干进程,这些进程就称为该应用在那个站点上的“事务代理”。(2)进程的协作为了协调地执行分布式应用的全局操作,分驻于不同站点的诸事务代理必须进行协调。为考虑事务的特性,把各站点上的诸代理组建成协作进程来完成一个全局应用,并作如下规定:1)每一应用均有一个负责启动整个事务的总代理或称根代理,建立总代理的站点称为源站点;2)只有总代理才能发出全局有效的事务开始,提交和撤销原语;3)只有总代理才能请求建立新的事务代理;4)各站点上的子事务都执行成功,总代理才能决定提交该事务,否则

5、总代理将决定撤销该事务。FUND_TRANSFER:Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);Begin_Transaction;SelectAMOUNTinto$FROM_AMOUNTfromACCOUNTwhereACCOUNT_NUMBER=$FROM_ACC;if$FROM_AMOUNT-$AMOUNT<0thenabortelsebeginUpdateACCOUNTsetAMOUNT=AMOUNT-$AMOUNTwhereACCOUNT_NUMBER=$FROM_ACC;UpdateACCOUNTsetAM

6、OUNT=AMOUNT-$AMOUNTwhereACCOUNT_NUMBER=$TO_ACC;Commitend图1全局级的FUND_TRANSFER事务ROOT_AGENTAGENT:输入:汇出金额和转出/转入账号事务开始:检查转出账号中是否又足够的转出资金更新转出账号存款余额创建代理Agent向代理送信息:转入帐号,金额等待来自Agent的消息成功提交事务:成功结束否撤销事务:失败结束接收来自根代理的消息更新转入账号存款余额发送执行消息给根代理(成功或失败)ROOT-AGENT;Read(terminal,$AMOUNT,$FROM_ACC,$TO_A

7、CC);Begin_transaction;SelectAMOUNTinto$FROM_AMOUNTfromACCOUNTwhereACCOUNT_NUMBER=$FROM_ACCOUNT;if$FROM_AMOUNT-$AMOUNT<0thenabortelsebeginUpdateACCOUNTsetAMOUNT=AMOUNT-$AMOUNTwhereACCOUNT=$FROM_ACC;CreateAGENT;SENDtoAGENT($AMOUNT,$TO_ACC);CommitendAGENT;ReceivefromROOT_AGENT($AMOUN

8、T,$TO_ACC);UpdateACCOUNTsetAMOUNT

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。