无共享数据库系统中的单相提交技术方案

技术编号:2850184 阅读:275 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了用于在无共享数据库系统中处理分布式事务的技术,其中,一个或多个节点能够访问共享的永久存储器。分布式事务的协调器使用单相提交协议,而不使用双相提交协议来协调分布式事务,该单相提交协议具有能够访问由协调器保持的事务状况信息的那些参与者。事务状况信息可以驻留在例如协调器的重做日志中。在协调器故障的情况下,那些参与者可以基于存储在共享磁盘上的信息来确定分布式事务的状态。此外,协调器可以基于由参与者存储在共享磁盘上的信息来确定是否可能提交分布式事务,而不用那些参与者进入正式的“准备好的”状态。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及用于管理在共享磁盘硬件上运行的无共享(shared-nothing)数据库系统中的数据的技术。
技术介绍
多处理计算机系统一般分为三类一切资源共享(shared-everything)系统、共享磁盘系统、以及无共享系统。在一切资源共享系统中,所有处理器上的程序能够直接访问系统中的所有易失存储装置(下文中一般称为“存储器”)以及所有非易失存储装置(下文中一般称为“磁盘”)。因此,要求不同的计算机组件之间的高级布线,以提供一切资源共享的功能。另外,就一切资源共享结构而言还存在可扩缩性限制。在共享磁盘系统中,处理器和存储器被分组成节点。共享磁盘系统中的每个节点本身可以构成包括多处理器和多存储器的一切资源共享系统。所有处理器上的程序能够访问系统中的所有磁盘,但是只有属于特定节点的处理器上的程序能够直接访问在特定节点内的存储器。共享磁盘系统通常需要少于一切资源共享系统的布线。因为所有节点能够访问所有数据,所以共享磁盘系统还能够容易地适应不平衡的工作负荷条件。然而,共享磁盘系统易受相关开销(coherence overhead)的影响。例如,如果第一节点已经修改了数据并且第二节点想要读取或者修改该相同的数据,则必须采取多个步骤以确保将数据的正确版本提供给第二节点。在无共享系统中,所有的处理器、存储器、和磁盘被分组成节点。如同在共享磁盘系统中一样,在无共享系统中,每个节点本身可以构成一切资源共享系统或共享磁盘系统。只有在特定节点上运行的程序才能够直接访问特定节点内的存储器和磁盘。在三种一般类型的多处理系统中,无共享系统通常需要最少量的各种系统组件之间的布线。然而,无共享系统最易受不平衡的工作负荷条件的影响。例如,在特定任务期间被访问的所有数据可能都驻留在特定节点的磁盘上。因此,只有在该节点内运行的程序可以用于执行工作区组(work granule),即使其他节点上的程序都保持空闲状态。在多节点系统上运行的数据库一般分为两类共享磁盘数据库和无共享数据库。共享磁盘数据库共享磁盘数据库基于以下的假设来协调工作假设由数据库系统管理的所有数据对于数据库系统可用的所有处理节点而言都可见。因此,在共享磁盘数据库中,服务器可以向任何节点上的程序分配任何工作,而与包含在工作期间将被访问的数据的磁盘的位置无关。因为所有节点都能够访问相同的数据,并且每个节点都具有其自己的专用高速缓存,所以相同数据项的多个版本可以驻留在任意数量的多个节点的高速缓存中。遗憾的是,这意味着当一个节点需要特定数据项的特定版本时,该节点必须与其他节点相协调以使数据项的特定版本被传送至请求节点。因而,共享磁盘数据库被认为以“数据传送”的原理运行,其中,数据必须被传送到已经被指定处理该数据的节点。这样的数据传送请求可能导致“查验(ping)”。特别地,当由一个节点所需的数据项的拷贝驻留在另一节点的高速缓存中时,就会出现查验。查验可能要求将数据项写入磁盘,然后从磁盘读取。查验所必需的磁盘操作的性能能够显著地降低数据库系统的性能。共享磁盘数据库既可以在无共享计算机系统上运行,也可以在共享磁盘计算机系统上运行。为了在无共享计算机系统上运行共享磁盘数据库,可以将软件支持程序(software support)添加到操作系统或者可以提供其它硬件以允许程序能够访问远程磁盘。无共享数据库无共享数据库假设程序只能在数据被包含在与程序属于相同节点的磁盘上时访问该数据。因此,如果特定节点想要对由另一节点所拥有的数据项执行操作,则特定节点必须向另一节点发送请求,请求另一节点执行该操作。因而,无共享数据库被认为执行“功能传送”,而不是在节点之间传送数据。因为任何给定的数据块都仅由一个节点拥有,因此只有这一个节点(数据的“所有者”)将永久在其高速缓存中具有数据的拷贝。因此,无需在共享磁盘数据库系统中所要求的高速缓存相关性机制类型。另外,由于不要求拥有数据项的节点将数据项的高速缓存版本保存到磁盘以使另一节点然后能够将该数据项存入其高速缓存,因此无共享系统不遭受与查验相关的性能损失。无共享数据库可以在共享磁盘多处理系统和无共享多处理系统上运行。为了在共享磁盘机器上运行无共享数据库,可以提供一种机制用于对数据库进行分区(partitioning),并且将每个分区的所有权分配给特定节点。只有有所有权的节点可以对数据块进行操作的事实意味着无共享数据库中的工作负荷可能变得极度不平衡。例如,在十个节点的系统中,所有工作请求的90%可能涉及由节点中的一个所拥有的数据。因此,该一个节点工作过度,而其他节点的计算资源未被充分使用。为了“重新平衡”工作负荷,可以使无共享数据库脱机,并且数据(及其所有权)可以在节点之间被再分配。然而,该过程涉及移动可能地大量数据,并且可能仅仅临时解决工作负荷的失衡。在无共享数据库系统中的分布式事务分布式事务可以指定对驻留在无共享数据库系统中的不同节点上的数据项的更新。例如,分布式事务可指定对由第一无共享节点拥有的第一数据块的更新,以及对由第二无共享节点拥有的第二数据块的更新。拥有在分布式事务中涉及的数据的节点在此称为“参与”节点或简单地称为“参与者”。为了保持数据的一致性,分布式事务必须被提交,或在发生错误的情况下,“回滚(roll back)”。当事务被提交时,由该事务指定的对数据的所有改变变为永久的。另一方面,当事务被回滚时,已经做出的由事务指定的对数据的所有改变被取消或撤消,如同从未对数据做出改变。因此,使数据库处于反映在事务中指定的所有改变或不反映在事务中指定的改变的状态。双相提交一种用于确保在分布式事务期间的数据一致性的方法涉及使用双相提交协议来处理分布式事务。例如,在标题为“Performing2-Phase Commit With Delayed Forget”的美国专利第6,493,726号中,详细地描述了双相提交。通常,双相提交需要首先“准备”事务,然后提交。在准备好的相位之前,在每个参与无共享节点进行由事务指定的改变。当参与节点完成了所有请求操作时,该参与节点将改变和“准备”记录强加给永久存储器。随后,参与者向协调器报告参与者处于“准备好的”状态。如果所有的参与者成功地进入准备好的状态,那么协调器将提交记录强加给永久存储器。另一方面,如果在准备好的状态之前发生任何错误,指示参与节点中的至少一个不能做出由事务指定的改变,那么取消在每个参与节点的所有改变,将每个参与数据库系统恢复到其改变之前的状态。图1示出了多节点无共享数据库系统,用于更加详细地说明与用于执行双相提交的传统方法相关的成本。多节点数据库系统100包括协调节点110和参与节点150。协调节点110接收来自数据库客户120的对数据的请求,该数据库客户包括客户122和客户124。这种请求可以是例如SQL语句的形式。协调节点110包括日志,例如日志112。日志112用于记录对数据库系统做出的修改,以及影响这些修改的状况的事件,例如提交。日志112包括多种日志记录。当第一次创建这些日志记录时,它们最初被存储在易失存储器中,并且不久被永久地存储到非易失存储器(例如,诸如磁盘的非易失存储器)。一旦日志记录被写入非易失存储器,就将由日志记录指定的修改和其它事件称为“永久的”。修改和事件本文档来自技高网...

【技术保护点】
一种用于在无共享数据库系统中执行分布式事务的方法,所述方法包括:在所述无共享数据库系统的第一无共享节点上,使正在协调所述分布式事务的协调器将指示所述分布式事务的状况的信息存储在永久存储装置上;其中,参与者能够访问所述永久存储 装置,所述参与者将执行一个或多个操作作为所述分布式事务的一部分;其中,所述参与者驻留在所述无共享数据库系统的第二无共享节点上;以及在所述无共享数据库系统的所述第二无共享节点上,使所述参与者通过读取来自所述永久存储装置的所述信 息来确定所述分布式事务的所述状况。

【技术特征摘要】
【国外来华专利技术】US 2003-8-1 60/492,019;US 2004-4-23 10/831,4011.一种用于在无共享数据库系统中执行分布式事务的方法,所述方法包括在所述无共享数据库系统的第一无共享节点上,使正在协调所述分布式事务的协调器将指示所述分布式事务的状况的信息存储在永久存储装置上;其中,参与者能够访问所述永久存储装置,所述参与者将执行一个或多个操作作为所述分布式事务的一部分;其中,所述参与者驻留在所述无共享数据库系统的第二无共享节点上;以及在所述无共享数据库系统的所述第二无共享节点上,使所述参与者通过读取来自所述永久存储装置的所述信息来确定所述分布式事务的所述状况。2.根据权利要求1所述的方法,其中所述参与者是所述分布式事务中的多个参与者的第一参与者;所述多个参与者包括不能够访问所述永久存储装置的第二参与者;以及所述方法进一步包括所述协调器根据双相提交协议与所述第二参与者相互作用的步骤。3.根据权利要求1所述的方法,进一步包括以下步骤所述协调器提交所述分布式事务;在所述协调器提交所述分布式事务之后,所述协调器将提交消息发送到所述参与者;以及防止指示所述分布式事务的状况的所述信息被重写或删除直到一组条件被满足,其中,在所述一组条件中的一个条件是所述协调器接收来自所述参与者的提交确认消息。4.根据权利要求1所述的方法,进一步包括以下步骤所述参与者将第一信息块发送到所述协调器,其中,所述第一信息块与作为所述分布式事务的一部分由所述参与者执行的工作相关;以及所述协调器在所述第一信息块和与所述第二无共享节点的重做日志相关的信息之间进行比较;以及所述协调器至少部分地基于所述比较来确定是否提交所述事务。5.根据权利要求4所述的方法,其中,信息块包括作为所述分布式事务的一部分由所述参与者做出的最新改变的日志序号。6.根据权利要求5所述的方法,其中,所述发送的步骤包括以下步骤所述参与者识别为了与所述分布式事务不相关的目的而正被发送到所述第一无共享节点的消息;以及在所述消息上捎带所述日志序号。7.一种用于在无共享数据库系统中执行分布式事务的方法,所述方法包括分配参与者以执行一个或多个操作作为所述分布式事务的一部分;其中,所述参与者驻留在所述无共享系统的第一无共享节点上;使所述参与者在永久存储装置上存储指示由所述参与者在所述一个或多个操作执行期间做出的改变的状况信息;其中,协调器可以访问所述永久存储装置,所述协调器负责协调所述分布式事务;其中,所述协调器驻留在所述无共享数据库系统的第二无共享节点上;在所述无共享数据库系统的所述第二无共享节点上,使所述协调器基于在所述永久存储装置上的所述状况信息,来确定所述参与者是否已经将通过执行所述一个或多个操作产生的改变写到永久存储器;以及所述协调程序至少部分地基于所述参与者是否已经将通过执行所述一个或多个操作产生的改变写到永久存储器,来确定所述分布式事务是否可以被提交。8.根据权利要求7所述的方法,其中所述使所述参与者在永久存储装置上存储指示由所述参与者在所述一个或多个操作执行期间做出的改变的状...

【专利技术属性】
技术研发人员:罗杰班福德萨希坎什钱德拉塞克拉安杰洛普鲁希诺
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1