横向扩展数据库中具有快照隔离的多语句交互式事务制造技术

技术编号:37967529 阅读:10 留言:0更新日期:2023-06-30 09:42
提供了一种无共享数据库系统,其中每个表的行被指派给“切片”,并且每个切片的多个复制品(“副本”)跨多个节点的持久性存储装置被存储。从表的特定行读取数据的请求可以由存储该行被指派到的切片的副本的任何节点处置。对于每个切片,切片的单个副本被指定为“主副本”。所有DML操作都由具有目标行被指派到的切片的主副本的节点执行。然后将改变传播到同一切片的其它副本(“辅副本”)。)。)。

【技术实现步骤摘要】
【国外来华专利技术】横向扩展数据库中具有快照隔离的多语句交互式事务
[0001]对相关申请的交叉引用、利益声明
[0002]本申请根据35U.S.C.
§
120要求作为2020年10月14日提交的申请序列No.17/070,277的部分继续的利益,该申请的全部内容通过引用并入本文,就如同在本文完全阐述一样。申请人特此撤销母申请中的权利要求范围或其审查历史中的任何免责声明,并告知美国专利商标局(USPTO)本申请中的声明可能比母申请中的任何声明更广泛。


[0003]本专利技术涉及存储系统,并且更具体而言,涉及无共享(shared

nothing)数据库系统。

技术介绍

[0004]在多处理系统上运行的数据库通常分为两类:共享持久性存储数据库和无共享数据库。共享持久性存储数据库预期计算机系统中的所有持久性存储设备对所有处理节点都是可见的。因此,共享持久性存储数据库系统中的协调器进程可以将任何工作颗粒(work granule)指派给任何节点上的进程,而不管包含将在工作颗粒的执行期间访问的数据的持久性存储装置的位置。共享持久性存储数据库可以在无共享和共享持久性存储计算机系统两者上运行。为了在无共享计算机系统上运行共享持久性存储数据库,可以向操作系统添加软件支持,或者可以提供附加的硬件以允许进程直接访问远程持久性存储设备。
[0005]无共享数据库假设只有当数据被包含在与进程属于同一节点的持久性存储装置中时,进程才能访问数据。因此,如果要在工作颗粒中处理的数据驻留在与进程相同的节点中的持久性存储装置中,则无共享数据库中的协调器进程只能将工作颗粒指派给该进程。无共享数据库可以在共享持久性存储装置和无共享多处理系统两者上运行。为了在共享持久性存储机器上运行无共享数据库,可以提供一种机制来对数据库进行逻辑分区,并将每个分区的所有权指派给特定节点。
[0006]基于前述,显然期望提供一种对于无共享数据库系统的哪个节点能够处理工作具有更少限制的无共享数据库系统。例如,当任务正在读取存储在数据库系统中的特定数据项的特定版本时,期望提供其中多个节点能够执行该任务的无共享数据库系统。能够执行同一任务的节点的数量越大,工作负载就越容易在可用节点之间平衡。此外,期望正在执行读取操作的节点能够读取截至指定快照时间的数据。为了进一步提高性能,期望在不获得锁(lock)并且即使在读取尚未提交(commit)的事务所触及的数据项时也不阻塞的情况下执行读取操作。
[0007]本节中描述的方法是可以采用的方法,但不一定是先前已经设想或采用的方法。因此,除非另有说明,否则不应仅由于将本部分中所述的任何方法包括在本部分中而认为本方法中的任何方法都有资格作为现有技术。另外,不应当假设本节中描述的任何方法仅仅因为它们被包括在本节中就已被充分理解、是例行或常规的。
附图说明
[0008]图中:
[0009]图1是根据实施例的分布式数据库系统的框图,图示了主机、数据库和表空间之间的关系;
[0010]图2是根据实施例的分布式数据库系统的框图,其中表的行被映射到切片(slice),并且为每个切片存储多个副本(duplica);
[0011]图3是图示根据实施例的切片的副本的内容的框图;
[0012]图4是图示根据实施例的两个行R1和R2的时序(chronological)条目链的框图;
[0013]图5是图示根据实施例的在条目被添加到时序条目链的尾部之后行R1的时序条目链的框图;
[0014]图6是图示根据实施例的在链中的增量日志(delta log)条目被应用于行堆(row heap)之后行R1的时序条目链的框图;
[0015]图7是图示根据实施例的增量日志的循环缓冲器性质的框图;
[0016]图8是图示根据实施例的行堆条目的内容的框图;
[0017]图9图示了根据实施例的在数据库命令的语句的执行期间发送的主机间消息;
[0018]图10图示了根据实施例的在事务提交(commit)期间发送的主机间消息;
[0019]图11是可以被用作采用本文描述的技术的分布式数据库系统中的客户端或主机的计算机系统的框图;
[0020]图12是图示根据实施例的具有在六个主机上执行的两个引擎集群和一个控制集群的分布式数据库系统的框图;
[0021]图13是更详细地图示来自图12的主机的框图;
[0022]图14是图示根据实施例的当主机发生故障时在控制集群和主机之间发送的消息的框图;
[0023]图15是图示根据实施例的当主机发生故障时重新配置主机集群所采取的步骤的流程图;以及
[0024]图16是图示根据实施例的包括控制集群的分布式数据库系统的框图,其中所有主机能够通过两个不同的网络彼此通信。
具体实施方式
[0025]在下面的描述中,出于解释的目的,阐述了许多具体细节以便提供对本专利技术的透彻理解。但是,显然,可以在没有这些具体细节的情况下实践本专利技术。在其它情况下,以框图形式示出了众所周知的结构和设备,以避免不必要地混淆本专利技术。
[0026]总体概述
[0027]提供了一种无共享数据库系统,其中通过将每个表的行指派给“切片”并跨无共享数据库系统的多个节点的持久性存储装置存储每个切片的多个复制品(“副本”)来增加并行性和工作负载平衡。当表的数据以这种方式分布在无共享系统的节点间时,从表的特定行读取数据的请求可以由存储该行被指派到的切片的副本的任何节点处置。
[0028]根据实施例,对于每个切片,切片的单个副本被指定为“主副本”。以表的特定行作为目标的所有DML操作(例如,插入、删除、更新等)都由具有该特定行被指派到的切片的主
副本的节点执行。然后将DML操作所做的改变从主副本传播到同一切片的其它副本(“辅副本”)。
[0029]切片
[0030]如上面所提到的,“切片”是表的行被指派到的实体。行到切片的指派可以以各种方式进行,并且本文描述的技术不限于任何特定的行到切片指派技术。例如,表可以具有主键,并且每个切片可以被指派到主键落在特定范围内的行。在这种实施例中,其主键是字母表的表可以将其行指派给三个切片,其中第一个切片包括其主键以A

K范围内的字母开头的行,第二个切片包括其主键以L

T范围内的字母开头的行,而第三个切片包括其主键以U

Z范围内的字母开头的行。
[0031]作为另一个示例,行到切片的指派可以使用散列函数进行。例如,可以使用产生范围1

3内的散列值的散列函数将行指派给三个切片。任何给定行被指派到的切片由在将散列函数应用于行的主键时产生的散列值确定。
[0032]对于任何给定的表,其行被指派到的切片的数量可以基于各种因素而变化。根据一个实施例,切片的数量被选择为使得没有单个片将存储超过1GB的数据。因此,作为一般规则,表中包含的数据越多,表的行被指派到的切片本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种方法,包括:将切片的多个副本存储在属于分布式数据库系统的一组主机中;其中所述多个副本至少包括:驻留在所述一组主机中的第一主机本地的持久性存储装置上的主副本;以及驻留在所述一组主机中的第二主机本地的持久性存储装置上的辅副本;执行事务,所述事务执行对所述切片中的特定数据项的更新;使用协调引擎实例来协调所述事务的执行;其中,在所述事务的执行期间,协调引擎实例使得:第一主机将所述更新存储在主副本中;以及第二主机将所述更新存储在辅副本中;使得所述事务进入准备状态,包括:协调引擎实例存储指示所述事务处于准备状态的数据;以及协调引擎实例向第二主机发送准备消息;响应于所述准备消息,第二主机存储指示所述事务处于准备状态的数据并确定对辅副本的更新的准备时间戳;当所述事务处于准备状态时,第二主机接收读取截至特定快照时间的特定数据项的读取请求;如果特定快照时间小于所述更新的准备时间戳,则第二主机允许读取请求读取在对辅副本的更新之前存在的特定数据项的更新前版本;如果特定快照时间大于准备时间戳,则:第二主机向协调引擎实例发送增加时钟消息,以使协调引擎实例使用的第一逻辑时钟被设置为与特定快照时间至少一样高的更新值;以及在发送增加时钟消息之后,第二主机允许读取请求读取特定数据项的更新前版本;以及当所述事务提交时,为所述事务指派与更新值至少一样高的提交时间。2.如权利要求1所述的方法,其中:第二主机具有本地逻辑时钟;并且确定所述更新的准备时间戳包括选择明显高于本地逻辑时钟的当前值的准备时间戳,以增加第二主机在所述事务的准备状态期间接收的任何读取操作将被指派小于准备时间戳的快照时间的可能性。3.如权利要求1所述的方法,其中,如果特定快照时间大于准备时间戳,则第二主机仅在接收到增加时钟消息已被成功处理的确认之后才允许读取请求读取特定数据项的更新前版本。4.如权利要求1所述的方法,其中使协调引擎实例使用的第一逻辑时钟被设置为与特定快照时间至少一样高的更新值包括:将所述事务的全局准备时间改变为所述更新值;以及当提交所述事务时,将协调引擎实例使用的第一逻辑时钟设置为与全局准备时间至少一样高的值。5.一种方法,包括:将第一切片的第一多个副本存储在属于分布式数据库系统的第一组主机中;
其中所述第一多个副本至少包括:驻留在第一组主机中的第一主机本地的持久性存储装置上的第一主副本;以及驻留在第一组主机中的第二主机本地的持久性存储装置上的第一辅副本;其中第二主机与第一主机不同;将第二切片的第二多个副本存储在属于分布式数据库系统的第二组主机中;其中所述第二多个副本至少包括:驻留在第二组主机中的第三主机本地的持久性存储装置上的第二主副本;以及驻留在第二组主机中的第四主机本地的持久性存储装置上的第二辅副本;其中第四主机与第三主机不同;执行事务,所述事务:执行对第一切片中的第一数据项的第一版本的第一更新;以及执行对第二切片中的第二数据项的第一版本的第二更新;其中执行所述事务包括:第一主机将第一更新存储在第一主副本中;第一主机使第二主机将第一更新存储在第二主副本中;第三主机将第二更新存储在第二主副本中;以及第三主机使第四主机将第二更新存储在第二辅副本中。6.如权利要求5所述的方法,其中:所述事务由客户端应用呈递给第一主机;该方法还包括,在将事务呈递给第一主机之前,客户端应用确定第一切片还是第二切片将成为该事务的控制切片;以及在确定第一切片将成为控制切片并且第一主机托管第一切片的第一主副本后,由客户端应用将所述事务呈递给第一主机。7.如权利要求6所述的方法,其中第一切片基于以下至少一项被确定为控制切片:所述事务在第一切片上比在第二切片上执行更多的工作;第一切片本地的数据量;所述事务最先触及第一切片;或者相对于所述事务触及的切片,第一切片有资格是最可靠的切片。8.如权利要求6所述的方法,还包括通过第一主机向第三主机发送DML片段,第一主机使第三主机将第二更新存储在第二主副本中,所述DML片段在由第三主机执行时使第三主机将第二更新存储在第二主副本中。9.如权利要求6所述的方法,还包括基于第二主机具有被选为控制切片的切片的辅副本...

【专利技术属性】
技术研发人员:V
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:

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

1