用于管理数据的方法技术

技术编号:2850187 阅读:271 留言:0更新日期:2012-04-11 18:40
本发明专利技术描述了用于提高无共享数据库系统的性能的各种技术,其中,运行该无共享数据库系统的节点中的至少两个节点能够共享地存取磁盘。特别地,提供用于在不改变数据在持久存储器上的位置的情况下改变无共享数据库中的数据的所有权的技术。由于数据的持久存储位置在数据的所有权的转移期间没有被改变,因此可以更加自由地转移所有权,并且具有比由数据的物理重新布置另外的招致的更小的性能损失。还描述了用于提供所有权的快速运行时再分配的各种技术。由于能够在运行时期间执行再分配,因此不必使无共享系统脱机来执行再分配。另外,这些技术描述了如何以相对的精细粒度来执行再分配,避免仅仅为了再分配在节点中的一个节点上的少数数据项的所有权而需要执行经过所有节点的大量数据的大量再分配。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及用于管理在共享磁盘硬件上运行的无共享(shared-nothing)数据库系统中的数据的技术。
技术介绍
多处理计算机系统一般分为三类一切资源共享(shared-everything)系统、共享磁盘系统、以及无共享系统。在一切资源共享系统中,所有处理器上的程序能够直接存取系统中的所有易失存储装置(下文中一般称为“存储器”)以及所有非易失存储装置(下文中一般称为“磁盘”)。因此,要求不同的计算机组件之间的高级布线,以提供一切资源共享的功能。另外,就一切资源共享结构而言还存在可伸缩性限制。在共享磁盘系统中,处理器和存储器被分组成节点。共享磁盘系统中的每个节点本身可以构成包括多处理器和多存储器的一切资源共享系统。所有处理器上的程序能够存取系统中的所有磁盘,但是只有属于特定节点的处理器上的程序能够直接存取在特定节点内的存储器。共享磁盘系统一般地要求比一切资源共享系统少的布线。因为所有节点能够存取所有数据,所以共享磁盘系统还能够容易地适应不平衡的工作负荷条件。然而,共享磁盘系统易受相关系统开销(coherence overhead)的影响。例如,如果第一节点已经修改了数据并且第二节点想要读取或者修改该相同的数据,则必须采取多个步骤以确保将数据的正确版本提供给第二节点。在无共享系统中,所有的处理器、存储器、和磁盘被分组成节点。如同在共享磁盘系统中一样,在无共享系统中,每个节点本身可以构成一切资源共享系统或共享磁盘系统。只有在特定节点上运行的程序才能够直接存取特定节点内的存储器和磁盘。三种一般类型的多处理系统的无共享系统通常要求各种系统组件之间的最少量的布线。然而,无共享系统最易受不平衡的工作负荷条件的影响。例如,在特定任务期间待被存取的所有数据可能都存在于特定节点的磁盘上。因此,只有在该节点内运行的程序可以用于执行工作颗粒(work granule),即使其他节点上的程序都保持空闲状态。在多节点系统上运行的数据库一般分为两类共享磁盘数据库和无共享数据库。共享磁盘数据库共享磁盘数据库基于以下的假设来协调工作假设由数据库系统管理的所有数据对于数据库系统可用的所有处理节点而言都可见。因此,在共享磁盘数据库中,服务器可以向任何节点上的程序分配任何工作,而与包含在工作期间将被存取的数据的磁盘的位置无关。因为所有节点都能够存取相同的数据,并且每个节点都具有其自己的专用缓存,因此相同数据项的多个版本可以存在于任意数量的多个节点的缓存中。遗憾的是,这意味着当一个节点要求特定数据项的特定版本时,该节点必须与其他节点相协调以使数据项的特定版本被传送至请求节点。因而,共享磁盘数据库被认为以“数据传送”的原理运行,其中,数据必须被传送到已经被指定处理该数据的节点。这样的数据传送要求可能导致“查验(ping)”。特别地,当由一个节点所需的数据项的拷贝存在于另一节点的缓存中时,就会出现查验。查验可能要求将数据项写入磁盘,然后从磁盘读取。查验所必需的磁盘操作的性能能够显著地降低数据库系统的性能。共享磁盘数据库既可以在无共享计算机系统上运行,也可以在共享磁盘计算机系统上运行。为了在无共享计算机系统上运行共享磁盘数据库,可以将软件支持程序(software suppot)添加到操作系统或者可以提供其它硬件以允许程序能够存取远程磁盘。无共享数据库无共享数据库假设程序只能在数据被包含在与程序属于相同节点的磁盘上时存取该数据。因此,如果特定节点想要对由另一节点所拥有的数据项执行操作,则特定节点必须向另一节点发送请求,请求另一节点执行该操作。因而,无共享数据库被认为执行“功能传送”,而不是在节点之间传送数据。因为任何给定的数据块都仅由一个节点拥有,因此只有这一个节点(数据的“所有者”)将永久在其缓存中具有数据的拷贝。因此,无需在共享磁盘数据库系统中所要求的缓存相关性机制类型。另外,由于不要求拥有数据项的节点将数据项的缓存版本保存到磁盘以使另一节点然后能够将该数据项存入其缓存,因此无共享系统不遭受与查验相关的性能损失。无共享数据库可以在共享磁盘多处理系统和无共享多处理系统上运行。为了在共享磁盘机器上运行无共享数据库,可以提供一种机制用于对数据库进行分区(partitioning),并且将每个分区的所有权分配给特定节点。只有有所有权的节点可以对数据块进行操作的事实意味着无共享数据库中的工作负荷可能变得极度不平衡。例如,在十个节点的系统中,所有工作要求的90%可能涉及由节点中的一个所拥有的数据。因此,该一个节点工作过度,而其他节点的计算资源未被充分使用。为了“重新平衡”工作负荷,可以使无共享数据库脱机,并且数据(及其所有权)可以在节点之间被再分配。然而,该过程涉及潜在地移动大量数据,并且可能仅仅临时的解决工作负荷的失衡。附图说明通过附图中的实例来描述本专利技术,但是不局限于此,在附图中相同的参考标号表示类似的元件,其中图1是示出根据本专利技术的实施例的包括两个共享磁盘子系统的群的框图;以及图2是可以实施本专利技术的实施例的计算机系统的框图。具体实施例方式下文中描述了用于提高包括共享磁盘存储系统的无共享数据库系统的性能的各种技术。在下面的描述中,为了解释的目的,描述了多个特定的细节,以对本专利技术有彻底的了解。然而,很显然,在没有这些特定细节的情况下,也可以实现本专利技术。在其它的实例中,以框图形式示出已知的结构和设备,以避免不必要地使本专利技术不清楚。功能概述下文中描述了用于提高无共享数据库系统的性能的各种技术,其中,运行无共享数据库系统的节点中的至少两个节点能够共享地存取磁盘。正如由数据库系统的无共享结构所确定的,在任何给定的时间,每个数据块仍然仅由一个节点拥有。然而,利用运行无共享数据库系统的节点中的至少一些节点能够共享的存取磁盘这一事实,以更有效地重新平衡并恢复无共享数据库系统。特别地,提供用于在不改变数据的在存储器上的位置的情况下来改变无共享数据库中的数据的所有权的技术。由于数据的持久存储位置在数据所有权的转移期间没有被改变,因此可以更加自由地转移所有权,并且具有比数据的物理重新布置将引起的更小的性能损失。还描述了用于提供所有权的快速运行时(run-time)再分配的各种技术。由于能够在运行时期间执行再分配,因此不必使无共享系统脱机以执行再分配。另外,这些技术描述了如何以相对地精细粒度(fine granularity)来执行再分配,避免仅仅为了再分配节点中的一个节点上的少数数据项的所有权而需要执行经过所有节点的大量数据的大量再分配。包括共享磁盘系统的示例性群(cluster)图1是示出可以实施本专利技术的实施例的群100的框图。群100包括五个节点102、104、106、108、和110,这些节点通过允许节点彼此通信的互连线130连接。群100包括两个磁盘150和152。节点102、104、和106能够存取磁盘150,并且节点108和110能够存取磁盘152。因此,包括节点102、104、和106以及磁盘150的子系统构成第一共享磁盘系统,而包括节点108和110以及磁盘152的子系统构成第二共享磁盘系统。群100是包括两个共享磁盘子系统并且共享磁盘子系统之间没有重叠的从属关系(membership)的相对简单系统的实例。实际系统可能比群100复本文档来自技高网...

【技术保护点】
一种用于管理数据的方法,所述方法包括以下步骤:在能够存取多个节点的持久存储器上保持多个持久数据项,所述持久数据项包括存储于所述持久存储器上的特定位置的特定数据项;将所述持久数据项中的每个的独占所有权分配给所述节点中的一个,其 中,所述多个节点的特定节点被分配有所述特定数据项的独占所有权;当任何节点想要执行涉及所述特定数据项的操作时,由于所述特定数据项存在于所述特定位置,因此期望所述操作被执行的所述节点将所述操作传送至所述特定节点,用于所述特定节点对所述特 定数据项执行所述操作;当第一节点继续操作时,在不将所述特定数据项从所述持久存储器上的所述特定位置移动的情况下,将所述特定数据项的所有权从所述特定节点再分配到另一节点;在所述再分配之后,当任何节点想要执行涉及所述特定数据项的操 作时,由于所述特定数据项存在于所述特定位置,因此期望所述操作被执行的所述节点将所述操作传送至所述其他节点,用于所述其他节点对所述特定数据项执行所述操作。

【技术特征摘要】
【国外来华专利技术】US 2003-8-1 60/492,019;US 2003-9-17 10/665,0621.一种用于管理数据的方法,所述方法包括以下步骤在能够存取多个节点的持久存储器上保持多个持久数据项,所述持久数据项包括存储于所述持久存储器上的特定位置的特定数据项;将所述持久数据项中的每个的独占所有权分配给所述节点中的一个,其中,所述多个节点的特定节点被分配有所述特定数据项的独占所有权;当任何节点想要执行涉及所述特定数据项的操作时,由所述特定数据项存在于所述特定位置,因此期望所述操作被执行的所述节点将所述操作传送至所述特定节点,用于所述特定节点对所述特定数据项执行所述操作;当第一节点继续操作时,在不将所述特定数据项从所述持久存储器上的所述特定位置移动的情况下,将所述特定数据项的所有权从所述特定节点再分配到另一节点;在所述再分配之后,当任何节点想要执行涉及所述特定数据项的操作时,由于所述特定数据项存在于所述特定位置,因此期望所述操作被执行的所述节点将所述操作传送至所述其他节点,用于所述其他节点对所述特定数据项执行所述操作。2.根据权利要求1所述的方法,其中,所述将所述特定数据项的所有权从所述特定节点再分配到另一节点的步骤包括,更新在所述多个节点中共享的所有权映射。3.根据权利要求1所述的方法,其中,所述多个节点是多节点数据库系统的节点。4.根据权利要求3所述的方法,其中,所述多节点数据库系统包括不能够存取所述持久存储器的节点。5.根据权利要求3所述的方法,其中所述持久存储器是由所述多节点数据库系统使用的多个持久存储器的第一持久存储器;以及所述方法进一步包括,将第二数据项的所有权从能够存取所述第一持久存储器的第一节点再分配到能够存取第二持久存储器但不能够存取所述第一持久存储器的第二节点;并且其中,所述再分配所述第二数据项的所有权的步骤包括,将所述第二数据项从所述第一持久存储器移动至所述第二持久存储器。6.根据权利要求3所述的方法,其中,响应于将所述其他节点添加到所述多节点数据库系统,执行所述将所述特定数据项的所有权从所述特定节点再分配到另一节点的步骤。7.根据权利要求3所述的方法,其中预期到将从所述多节点数据库系统去除所述特定节点,执行所述将所述特定数据项的所有权从所述特定节点再分配到另一节点的步骤;并且所述方法进一步包括以下步骤,预期到将从所述多节点数据库系统去除所述特定节点,将第二数据项从所述持久存储器物理地移动到另一持久存储器,其中,所述第二数据项从所述特定节点再分配到不能够存取所述持久存储器的所述多节点数据库系统的节点。8.根据权利要求3所述的方法,其中,所述将所述特定数据项的所有权从所述特定节点再分配到另一节点的步骤被执行作为所有权从所述特定节点到一个或多个其他节点的逐渐转移的一部分。9.根据权利要求8所述的方法,其中,响应于检测到相对于所述多节点数据库系统的一个或多个其他节点而言所述特定节点工作过度,开始所述逐渐转移。10.根据权利要求9所述的方法,其中,响应于检测到相对于所述多节点数据库系统的一个或多个其他节点而言所述特定节点不再工作过度,终止所述逐渐转移。11.根据权利要求3所述的方法,其中,所述将所述特定数据项的所有权从所述特定节点再分配到另一节点的步骤被执行作为所有权从一个或多个其他节点到所述其他节点的逐渐转移的一部分,其中,响应于检测到相对于所述多节点数据库系统中的一个或多个其他节点而言所述其他节点工作不足,开始所述逐渐转移。12.根据权利要求3所述的方法进一步包括以下步骤在已经从所述多节点系统去除第一节点之后,继续使一组数据项由所述第一节点拥有;以及响应于检测到对涉及所述数据项的操作的请求,将数据项的所有权从所述第一节点再分配到一个或多个其他节点。13.根据权利要求3所述的方法进一步包括以下步骤在已经从所述多节点系统去除第一节点之后,继续使一组数据项由所述第一节点所拥有;以及响应于检测到第二节点的工作负荷已经降至预定阈值以下,将数据项的所有权从所述第一节点再分配到所述第二节点。14.根据权利要求1所述的方法,其中当所述特定数据项将被再分配给所述其他节点时,所述特定节点在易失存储器中存储所述特定数据项的脏版本;以及所述将所述特定数据项的所有权从所述特定节点再分配到另一节点的步骤包括,将所述特定数据项的所述脏版本写入所述持久存储器。15.根据权利要求1所述的方法,其中当所述特定数据项将被再分配给所述其他节点时,所述特定节点在易失存储器中存储所述特定数据项的脏版本;以及所述将所述特定数据项的所有权从所述特定节点再分配到另一节点的步骤包括,将与所述脏版本相关的一个或多个重做记录强加到持久存储器,并且在不将所述特定数据项的所述脏版本写入所述持久存储器的情况下,从所述易失存储器清除所述脏版本;所述其他节点通过对存在于所述持久存储器上的所述特定数据项的版本应用所述一个或多个重做记录,来重建所述脏版本。16.根据权利要求1所述的方法,其中当所述特定数据项将被再分配给所述其他节点时,所述特定节点在易失存储器中存储所述特定数据项的脏版本;并且所述方法进一步包括以下步骤,将所述特定数据项的所述脏版本从与所述特定节点相关的易失存储器转移至与所述其他节点相关的易失存储器。17.根据权利要求16所述的方法,其中,所述转移所述脏版本的步骤由所述特定节点在不经所述其他节点请求所述脏版本的情况下主动执行。18.根据权利要求16所述的方法,其中,所述转移所述脏版本的步骤由所述特定节点响应于来自所述其他节点的对所述脏版本的请求而执行。19.根据权利要求1所述的方法,其中在不等待正修改所述数据项的事务提交的情况下,执行所述将所述特定数据项的所有权从所述特定节点再分配到另一节点的步骤;当所述特定数据项由所述特定节点所拥有时,所述事务做出第一组修改;以及当所述特定数据项由所述其他节点所拥有时,所述事务做出第二组修改。20.根据权利要求19所述的方法进一步包括,通过基于与所述其他节点相关的撤销日志中的撤销记录退回所述第二组修改,并且基于与所述特定节点相关的撤销日志中的撤销记录退回所述第一组修改,来退回由所述事务做出的改变。21.根据权利要求1所述的方法,其中,所述方法包括以下步骤所述其他节点接收到更新所述数据项的请求;确定所述特定节点是否能够以独占模式或共享模式存取所述数据项;如果所述特定节点不能够以独占模式或共享模式存取所述数据项,则所述其他节点在不等待所述特定节点将所述数据项的任何脏版本或脏版本的重做转储到持久存储器的情况下,更新所述特定数据项。22.根据权利要求1所述的方法进一步包括以下步骤响应于将所述特定数据项的所有权转移至所述其他节点,中止涉及所述特定数据项的进行中的操作;在所述特定数据项的所有权已经被转移至所述特定节点之后,重新执行所述进行中的操作。23.根据权利要求1所述的方法,其中在所述特定数据项的所有权的转移将被执行时,涉及所述特定数据项的操作在进行中;所述方法进一步包括以下步骤,基于一组一个或多个因素,确定是否等待所述进行中的操作完成;以及如果确定不等待所述进行中的操作完成,则中止所述进行中的操作。24.根据权利要求23所述的方法,其中,所述一组一个或多个因素包括所述进行中的操作已经执行了多少工作。25.一种用于管理数据的方法,所述方法包括以下步骤在能够存取多个节点的持久存储器上保持多个持久数据项;通过将每个数据项分配给多个存储段中的一个,将所述持久数据项中的每个的所有权分配给所述节点中的一个;以及将每个存储段分配给所述多个节点中的一个;其中,分配有存储段的节点被建立作为被分配给所述存储段的所有数据项的所有者。当第一节点想要执行涉及由第二节点所拥有...

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

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

1