用于分区数据库的路由指令的制作方法

文档序号:33745697发布日期:2023-04-06 11:29阅读:64来源:国知局
用于分区数据库的路由指令的制作方法


背景技术:

1、随着在各行各业存储的数据(诸如公司数据、购物数据、个人数据等)的量不断增加,在云或服务器网络上运行的分区和分布式数据库管理系统(pdbms)变得越来越受欢迎。在pdbms中,数据表被水平分区成多个部分,这些部分通常称为数据分片(shard)。每个数据分片是行的集合,并且被独立托管和复制。分片能够被移动、分割或合并,以提高性能和灵活性。

2、涉及在单个节点(即,数据库服务器)上托管的数据的事务被称为本地事务。这些事务在本质上与传统的整体式数据库管理系统中的事务没有不同。另一方面,当执行提交操作时,涉及多个节点上的数据的事务(即,全局事务)需要经历被称为两阶段提交(2pc)的复杂过程。因此,全局事务比本地事务要慢得多。

3、为了达到更好的性能,数据库管理员(dba)通常指定数据分区和定位策略,这样使得能够在本地执行大多数事务。例如,电子商务应用的数据库可以包括仓库表和客户表等。如果提交给电子商务应用的大多数订单能够由本地仓库来完成,则数据库管理员可以选择基于地理位置对表进行分区,使得表示在相同位置处的仓库和客户的行处于它们各自的表的相同分片中。数据库管理员还可以指定要在同一节点上托管的相同位置的客户表的数据分片和仓库表的数据分片。以这种方式,能够通过执行本地事务来服务大多数订单,以达到更好的性能。

4、如果pdbms能够对数据进行计算,即,直接在托管或存储数据的节点上执行事务,则数据库分区的这种努力能够达到最佳性能。然而,结果发现由于以下原因而难以做到这一点:1)事务最好由单个节点执行,并且在另一节点上中止和重新开始事务是可行的,但通常代价很高;2)在开始事务之前,尤其是当大多数事务涉及多个查询时,难以预测相关数据所处的节点。因此,执行事务的节点通常不托管与事务相关的数据,并且必须将查询请求转发给实际的托管节点,从而导致高的通信成本。更糟糕的是,由于事务已经被指配给节点,该节点将需要充当控制节点来协调其他节点对在事务中所包括的多个查询的执行或处理,向这些其他节点发送提交(commit)指令以完成两阶段提交,并且从其他节点收集与多个查询的执行或处理相关联的查询结果,并将查询结果发送到数据库管理员的客户端设备以用于呈现或查看,从而由于在控制节点与其他节点之间传输查询结果和指令,而进一步产生通信成本和时间。


技术实现思路

1、本
技术实现要素:
介绍了用于分区数据库的路由指令的简化构思,这将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的必要特征,也不旨在用于限制所要求保护的主题的范围。

2、本公开描述了用于分区数据库的路由指令的示例实现方式。在实现方式中,当前节点可以接收分布式数据库事务中包括的至少一个查询,并且从该查询中提取数据表的名称以及分区键。在实现方式中,当前节点然后可以获得包含数据表的与分区键相对应的数据分片的特定节点的地址,并且确定当前节点是否是特定节点并确定是否已经在一个或多个节点中本地处理了包括查询的分布式数据库事务。在实现方式中,基于确定结果,当前节点可以随后向提交查询的客户端设备返回异常以将查询重定向到特定节点,开始在当前节点中本地处理与查询相关联的事务,或者向特定节点发送查询。



技术特征:

1.一种由当前节点实现的方法,所述方法包括:

2.根据权利要求1所述的方法,其中,响应于确定所述当前节点不是所述特定节点并且确定尚未在所述一个或多个节点中本地处理包括所述查询的所述分布式数据库事务,执行向提交所述查询的所述客户端返回所述异常以将所述查询重定向到所述特定节点。

3.根据权利要求2所述的方法,其中,所述异常包括所述特定节点的虚拟地址或标识符。

4.根据权利要求1所述的方法,其中,响应于确定所述当前节点是所述特定节点并且确定尚未在所述一个或多个节点中本地处理包括所述查询的所述分布式数据库事务,执行开始在所述当前节点中本地处理与所述查询相关联的事务。

5.根据权利要求4所述的方法,其中,所述分布式数据库事务包括多个查询,所述多个查询中的至少一些查询涉及存储在不同节点中的数据。

6.根据权利要求5所述的方法,还包括:与处理所述多个查询中的其他查询的其他节点协调来在本地提交与所述查询相关联的事务。

7.根据权利要求1所述的方法,其中,向所述特定节点发送所述查询,包括:响应于确定已经在所述一个或多个节点中本地处理了包括所述查询的事务,向所述特定节点发送所述查询。

8.根据权利要求1所述的方法,其中,获得包含所述数据表的、与所述分区键相对应的所述数据分片的所述特定节点的地址,包括:

9.根据权利要求1所述的方法,其中,所述分区键包括所述数据表的一个或多个列的键值。

10.一种或更多种计算机可读介质,所述一种或更多种计算机可读介质存储有可执行指令,当所述可执行指令由计算设备的一个或多个处理器执行时,所述可执行指令使所述一个或多个处理器执行动作,所述动作包括:

11.根据权利要求10所述的一种或更多种计算机可读介质,其中,确定包含所述数据表的、与所述分区键相对应的所述数据分片的所述计算节点,包括:至少部分地基于分区键与分别存储所述数据表的与所述分区键相对应的数据分片的计算节点之间的映射关系,来确定包含所述数据表的与所述分区键相对应的所述数据分片的所述计算节点。

12.根据权利要求11所述的一种或更多种计算机可读介质,其中,所述动作还包括:存储所述分区键与分别存储所述数据表的与所述分区键相对应的所述数据分片的所述计算节点之间的所述映射关系。

13.根据权利要求10所述的一种或更多种计算机可读介质,其中,确定包含所述数据表的、与所述分区键相对应的所述数据分片的所述计算节点,包括:

14.根据权利要求10所述的一种或更多种计算机可读介质,其中,所述动作还包括:向所述计算节点发送所述分布式数据库事务,以使得所述计算节点能够在一个或多个计算节点中充当协调节点来管理所述多个查询的本地事务。

15.根据权利要求10所述的一种或更多种计算机可读介质,其中,所述指定语句包括向所述计算设备指示所述指定语句的性质的保留项。

16.根据权利要求10所述的一种或更多种计算机可读介质,其中,所述多个查询中的至少一些查询涉及存储在不同计算节点中的数据。

17.一种当前节点,包括:

18.根据权利要求17所述的当前节点,其中,响应于确定所述当前节点不是所述特定节点并且确定尚未在所述一个或多个节点中本地处理包括所述查询的所述分布式数据库事务,执行向提交所述查询的所述客户端返回所述异常以将所述查询重定向到所述特定节点,所述异常包括所述特定节点的虚拟地址或标识符。

19.根据权利要求17所述的当前节点,其中,响应于确定所述当前节点是所述特定节点并且确定尚未在所述一个或多个节点中本地处理包括所述查询的所述分布式数据库事务,执行开始在所述当前节点中本地处理与所述查询相关联的事务,所述分布式数据库事务包括多个查询,所述多个查询中的至少一些查询涉及存储在不同节点中的数据。

20.根据权利要求17所述的当前节点,其中,获得包含所述数据表的、与所述分区键相对应的所述数据分片的所述特定节点的地址,包括:


技术总结
当前节点可以接收分布式数据库事务中包括的至少一个查询,并且从该查询中提取数据表的名称以及分区键。当前节点然后可以获得包含数据表的与分区键相对应的数据分片的特定节点的地址,并且确定当前节点是否是该特定节点并确定是否已经在一个或多个节点中本地处理了包括查询的分布式数据库事务。基于确定结果,当前节点可以随后向提交查询的客户端设备返回异常以将查询重定向到特定节点,开始在当前节点中本地处理与查询相关联的事务,或者向特定节点发送查询。

技术研发人员:傅忱,蔡乐,李飞飞
受保护的技术使用者:阿里巴巴集团控股有限公司
技术研发日:
技术公布日:2024/1/12
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1