本节书摘来自华章出版社《云数据管理》一书中的第2章,第3节,作者迪卫艾肯特·阿格拉沃尔,更多章节内容可以访问云栖社区“华章计算机”公众号查看

 恢复和提交

集中式恢复

故障恢复是数据库管理系统不可分割的一部分。集中式恢复可以在单站点数据库在磁盘上存储所有数据时确保其持久性或永久性。为了在确保原子性的同时实现故障恢复,很多机制在事务执行的过程中都使用持久性存储设备,如磁盘,从而确保all-or-nothing属性。下面是3种常用的方案。

1. 影子页:在磁盘上保存两份数据库备份,其中一个用于事务更新,当事务提交时,原子指针切换到新的数据库备份。

2. 前像文件:磁盘日志用来存储所有更新数据项的前像文件(before-image),事务会立即更新物理数据库。一旦故障出现并且事务尚未提交,数据库就会根据日志恢复到初始状态。

3. 后像文件:所有更新操作在后像文件(after image)日志中执行。事务提交后,根据日志,将所有的后像文件装载到数据库中。

在这些基本概念的基础上,提出了各种各样的恢复方法。这些方法以不同的方式对前像文件日志和后像文件日志进行组合,从而提高提交事务或中止事务的性能[Bernstein and Newcomer, 2009, Gray and Reuter, 1992, Weikum and Vossen, 2001]。

从集中式数据库扩展到分布式数据库(即对象可能存在于不同的站点上)的关键挑战是:当故障出现时,如何在不同站点之间确保原子性。下面将介绍主要的分布式提交协议。

原子提交(atomic commitment)

提交的根本问题是由于事务在多个服务器上执行操作而引起的。全局提交需要所有参与者的一致本地提交。分布式系统可能会部分失效,在特殊情况下,服务器可能崩溃,极端情况下,会出现网络故障,从而导致网络划分。这可能会导致不一致的决定,即,在某些服务器上事务完成了提交,而在其他服务器上,事务却中止了。

基本的原子提交协议是一种简单的分布式握手协议,称为两阶段提交协议(two-phase commit, 2PC)[Gray, 1978]。在该协议中,协调者(事务管理者)负责一致决定:提交或中止。其他所有的执行事务的数据库服务器在该协议中都是参与者,都依赖于该协调者。提交时,协调者向所有参与者请求选票。原子提交要求所有进程得到相同的决定,特别是,只有当所有进程都投赞成(yes)票时,事务才能提交。因此,如果没有故障发生,并且所有的进程都投赞成(yes)票时,最终结果才可以提交。

该协议执行过程如下。协调者向所有参与者发送投票请求(vote-request)。当参与者接收到投票请求消息时,如果能本地提交,就返回一个yes消息,如果需要中止该事务(由于死锁或者无法把本地操作写到磁盘上),就返回no消息。协调者收集所有投票,如果都是赞成票(yes),那么就认为事务已经提交,否则事务就被中止了。协调者将结果发送给所有参与者,参与者相应地对本地事务进行提交或中止。

如果一个站点没有接收到预期的消息,该站点会怎么做呢?注意,该协议假设分布式系统是异步的,因此,其中有一个超时机制。有以下3种情况需要考虑。

1. 参与者等待投票请求:这种情况下,参与者在本地中止事务是安全的。

2. 协调者等待投票:这种情况下,协调者也可以安全地中止事务。

3. 参与者等待最终决定:这是一种不确定的情况,由于事务可能已经提交或者中止,因此,参与者也可能是不确定的,参与者可能不知道实际的决定。而有趣的是,协调者是确定的。

接下来详细探讨不确定参与者的情况。实际上,该参与者可以向其他参与者询问最终决定并寻求帮助。一旦任何参与者已提交或中止,该参与者就可以发送提交或中止决定。如果一个参与者尚未投票,那么它就可以安全地中止该事务,并可以向其他参与者发送中止决定。然而,如果所有参与者都投赞成票(yes),那么所有活动的参与者都是不确定的。这种情况下,该事务就被认为已阻塞,所有活动的参与者都需要一直等待,直到有足够多的站点赞成该事务进行恢复的决定。直观来看,活动的参与者处于不确定状态,其他一些失败的参与者可能处于提交状态,还有一些参与者处于中止状态。一般来说,两阶段提交协议即使是在简单的系统崩溃故障情况下也可能存在阻塞问题。

为了解决阻塞问题,可以引入中间缓冲状态,这样一来,如果任何运行站点是不确定的,那么,所有进程都不能提交[Skeen and Stonebraker,1983]。这种协议就是三阶段提交协议,该协议在站点故障情况下是非阻塞的。然而,三阶段提交协议不允许分区故障。实际上,可以证明在分区故障情况下,不存在非阻塞原子提交协议[Skeen and Stonebraker, 1983]。

总之,分布式数据库中的提交协议可能导致高复杂度和潜在的阻塞问题。实际上,其他站点的故障可能导致本地数据不可用。分布式数据库需要大量的额外开销来确保执行的正确性。这种对全局同步机制的依赖会限制系统的可扩展性,并对容错性和数据可用性产生重要影响。上述所有原因及其他因素(与不同地点的数据权限有关)共同导致分布式数据库的商业化应用较少。

《云数据管理:挑战与机遇》2.3.3 恢复和提交相关推荐

  1. 京颐医疗云产品总监柏鹏:云转型布局未来,我们是如何应对医疗云的挑战与机遇...

    [现场视频]京颐医疗云产品总监柏鹏:云转型布局未来,我们是如何应对医疗云的挑战与机遇,点此观看视频→https://yq.aliyun.com/video/play/1172 摘要:在9月7日云栖专家 ...

  2. 《云数据管理:挑战与机遇》2.3 数据库系统

    本节书摘来自华章出版社<云数据管理>一书中的第2章,第3节,作者迪卫艾肯特·阿格拉沃尔,更多章节内容可以访问云栖社区"华章计算机"公众号查看 本节中,我们将为数据库系统 ...

  3. 圆桌对话:云时代下,企业运维面临的挑战与机遇

    简介:四位企业运维大咖展开对话,讨论"云时代下,企业运维面临的挑战与机遇". 编者按:上云,已经成为了企业势不可挡的选择.云计算所拥有的"软件定义一切"的特性, ...

  4. 大数据技术在发展 挑战与机遇并存

    大数据技术是在传统数据处理手段无法应对海量数据的实时需求的情况下,采用新的信息技术来应对大数据爆发进行数据处理的技术.大数据技术一般可以包括基础架构支持.数据采集.数据存储.数据计算和数据展现交互等. ...

  5. 【财务管理论文】大数据背景下企业财务管理的挑战与机遇(节选)

    [摘 要]随着大数据时代的到来,数据开始影响人们的生活,小到吃穿住行,大到城市建设都在利用大数据相关技术.而对于企业发展来说,大数据时代的到来,为企业迎来了新的机遇和挑战,传统的财务管理模式已然无法满 ...

  6. 年收入过10亿美元,Veeam看好云数据管理

    ▼更多精彩推荐,请关注我们▼ 在云计算时代,无论是厂商还是用户,谁都不想"Out",关键是如何妥善处理好自身与云之间的关系,是云的搭建者.使用者还是赋能者?很荣幸,Veeam能够成 ...

  7. 清华大学邓志东:自动驾驶的“感”与“知” - 挑战与机遇(附视频)

    不到现场,照样看最干货的学术报告! 嗨,大家好.这里是学术报告专栏,读芯术小编不定期挑选并亲自跑会,为大家奉献科技领域最优秀的学术报告,为同学们记录报告干货,并想方设法搞到一手的PPT和现场视频--足 ...

  8. 阿里巴巴阳振坤:关系数据库挑战与机遇

    文章讲的是阿里巴巴阳振坤:关系数据库挑战与机遇,2014年4月10日-12日,第五届中国数据库技术大会(DTCC 2014)在北京五洲皇冠国际酒店拉开序幕.在为期三天的会议中,大会将围绕大数据应用.数 ...

  9. 1月23日云栖精选夜读:一张图解读阿里云数据管理DMS企业版

    摘要: 阿里云数据管理DMS企业版,作为数据管理产品大家族里的新成员,于2017年11月开启公测,今年1月底正式发布商业化版本. 作为业界领先的面向企业的数据库DevOps解决方案,DMS企业版旨在帮 ...

最新文章

  1. java的异常机制面试题(转)
  2. 【译】Getting Started With Ethereum and Building Basic Dapp — Part 1
  3. QTP简单框架(6)之脚本编写实例
  4. java 输出全部小写_输入小写,输出大写,为什么报错?
  5. P3244-[HNOI2015]落忆枫音【dp】
  6. c# 路径空格---ProcessStartInfo参数问题
  7. jetbrick-template 和其他模板的性能测试比较
  8. 动环监控调试线_电力综合监控系统解决方案-【斯必得智慧物联】
  9. java常见的gc回收器_一篇文章让你了解GC垃圾回收器
  10. CentOS 6.6源码编译升级GCC至4.8.2
  11. jQuery实现button按钮提交表单
  12. 狸窝全能视频转换器功能介绍
  13. 用油猴子定制你的个性化插件
  14. visio中图形任意位置添加连接点
  15. 弹性云服务器的规格系列,新睿云简析云服务器的配置规格怎么选择?
  16. springboot环境配置,yml格式,不同环境切换
  17. 台达PLC ES系列与英威腾GD变频器通讯程序原创可直接用于生产的程序
  18. 软考系统架构设计师范文2:论面向服务的架构及其应用
  19. 亚马逊欧洲站现在做怎么样?
  20. TI_BLE软件开发者指导4——链路层(笔记)

热门文章

  1. mnist学习实例(2)
  2. 报错解决:Failed to talk to init daemon.
  3. 更新elementui图标不显示_超简单elementui主题及变量修改方案
  4. 面试看缘分php,php测试姓名缘分指数
  5. Synchronized和ReentranLock的区别
  6. 台式电脑可以练计算机二级嘛6,练习六-计算机二级考试OFFICE高级应用试卷与试题.pdf...
  7. UI调试神器 for ios:Reveal的使用与破解
  8. 软件测试之功能测试详细过程
  9. java桌游设计,java毕业设计_springboot框架的桌游吧管理
  10. 页面 切换 中英文 怎么实现_【完美解决】AE CC2018表达式错误 ae cc2018如何进行中英文转换?...