应用于分布式数据库系统中的方法及分布式数据库系统与流程

文档序号:13590455阅读:152来源:国知局

本发明涉及分布式数据库技术领域,尤其涉及应用于分布式数据库系统中的方法及分布式数据库系统。



背景技术:

随着互联网信息的爆炸式增长,主流的数据库系统由传统的集中式数据库系统转变成为分布式数据库系统。分布式数据库由多台物理独立的数据库服务器组成,每一个数据库服务器即为一个数据库节点,旨在解决集中式数据库系统中单个数据库节点的性能瓶颈。

在分布式数据库系统中,涉及到数据的路由插入和路由查询。路由插入是存储数据的过程,通过路由方法计算得到用于存储待插入数据的数据库节点,然后将待插入数据插入到该数据库节点;路由查询则是根据同样的路由方法得到待查询数据所在的数据库节点,并从该数据库节点得到数据。

现有技术中采用的路由方法包括两种:

第一种,根据主键id值,将连续的主键id划分到同一个数据库节点;例如取10000为一个区间时,则根据主键id值划分出0-10000,10001-20000,……等区间,并将每个区间内的主键id划分到同一个数据库节点;

第二种,采用数据库节点的个数作为散列基数对主键id值进行散列,将散列值相同的主键id划分到同一个数据库节点;如有5个分布式数据库节点,则采用数字5为散列算法的散列基数进行散列,如散列算法为取模算法时,则用各主键id值对5进行取模运算获得散列值,并将散列值相同主键id划分到同一个数据库节点。

然而,现有技术中的路由方法至少存在以下问题:

1、上述的第一种路由方法中,由于连续的主键id划分到同一个数据库节点,会导致对连续的主键id进行操作时,数据插入和数据查询集中在某一数据库节点,造成性能瓶颈;

2、通常各数据库节点的性能可能不相同,上述的第一种路由方法和第二种路由方法中都是将主键id进行均分,导致无法发挥出各数据库节点的最佳性能,容易造成性能瓶颈;并且,在第二种路由方法中,当需要增加或删除数据库节点时,需要对整个分布式数据库的数据进行迁移,不仅浪费系统资源、耗时长,而且容易导致数据丢失,影响分布式数据库的正常运行。



技术实现要素:

本发明实施例提供应用于分布式数据库系统中的方法及分布式数据库系统,用以解决现有技术中的分布式数据系统容易发生性能瓶颈,并且对分布式数据系统进行改造不便的技术问题。

第一方面,提供一种分布式数据库系统的分区管理方法,所述分布式数据库系统包括管理子系统,所述方法包括:

所述管理子系统确定至少一个第一性能状态系数,并确定所述至少一个第一性能状态系数之和为所述分布式数据库系统当前的第一散列基数;其中,所述至少一个第一性能状态系数用于表示所述分布式数据库系统内当前所有数据库节点中各数据库节点的当前性能状态;

所述管理子系统确定是否对所述分布式数据库内当前所有可分配的主键id进行分区;

在为是时,所述管理子系统确定所述第一散列基数、所述至少一个第一性能状态系数为用于确定新分配的主键id所对应的数据库节点时采用的散列基数、性能状态系数;其中,所述新分配的主键id为下一次分区前所述分布式数据库系统内新分配的主键id。

在一种可能的实现方式中,所述管理子系统确定是否对所述分布式数据库内当前所有可分配的主键id进行分区,包括:

所述管理子系统确定是否满足至少一个预设条件中的任一条件;其中,所述至少一个预设条件包括以下条件中的任意一个或多个:

(1)所述分布式数据库系统当前包括的数据库节点的数量不同于前一次分区时所述分布式数据库系统包括的数据库节点的数量;

(2)所述第一散列基数与前一次分区时确定的散列基数的差值的绝对值大于第一预设阈值;

(3)所述当前所有数据库节点中任一数据库节点当前的第一性能状态系数与前一次分区时确定的性能状态系数的差值的绝对值大于第二预设阈值;

(4)当前次与前一次分区之间的时间差为预设时间差;

(5)获得用于指示进行分区的分区指令。

在一种可能的实现方式中,所述管理子系统确定所述第一散列基数、所述至少一个第一性能状态系数为用于确定新分配的主键id所对应的数据库节点时采用的散列基数、性能状态系数,包括:

所述管理子系统确定由所述当前所有可分配的主键id组成的区间为第一主键id区间,并获得所述第一主键id区间与所述第一散列基数、所述至少一个第一性能状态系数间的第一对应关系;

所述管理子系统记录所述第一对应关系、所述第一主键id区间、所述第一散列基数、所述至少一个第一性能状态系数。

在一种可能的实现方式中,在所述管理子系统确定对所述分布式数据库内当前所有可分配的主键id进行分区时,所述方法还包括:

所述管理子系统确定由前一次分区后至此次分区前所述分布式数据库系统内分配的主键id组成的区间为第二主键id区间,并获得所述第二主键id区间与第二散列基数、至少一个第二性能状态系数间的第二对应关系;

所述管理子系统记录所述第二对应关系、所述第二主键id区间、所述第二散列基数、所述至少一个第二性能状态系数;

其中,所述第二散列基数为前一次分区时确定的散列基数;所述至少一个第二性能状态系数为所述分布式数据库系统在前一次分区时包括的所有数据库节点中各数据库节点的性能状态系数。

在一种可能的实现方式中,所述分布式数据库系统还包括路由子系统,用于在所述管理子系统与所述分布式数据库系统包括的数据库节点间路由数据,在所述管理子系统获得所述第一对应关系之后,所述方法还包括:

所述管理子系统将所述第一对应关系、所述第一主键id区间、所述第一散列基数、所述至少一个第一性能状态系数发送至所述路由子系统;所述路由子系统记录所述第一对应关系、所述第一主键id区间、所述第一散列基数、所述至少一个第一性能状态系数;

在所述管理子系统获得所述第二对应关系之后,所述方法还包括:

所述管理子系统将所述第二对应关系、所述第二主键id区间、所述第二散列基数、所述至少一个第二性能状态系数发送至所述路由子系统;所述路由子系统记录所述第二对应关系、所述第二主键id区间、所述第二散列基数、所述至少一个第二性能状态系数。

在一种可能的实现方式中,在所述路由子系统记录所述第一对应关系、所述第一主键id区间、所述第一散列基数、所述至少一个第一性能状态系数之后,所述方法还包括:

所述路由子系统从前端获得数据存储请求,所述数据存储请求用于指示所述分布式数据库系统存储待存储数据;

所述路由子系统为所述待存储数据分配一可分配的主键id,并以预设散列算法和所述第一散列基数对所述待存储数据分配的主键id进行散列计算,以获得一散列值;

所述路由子系统根据所述散列值和所述至少一个第一性能状态系数确定所述待存储数据分配的主键id所对应的数据库节点;

所述路由子系统将所述数据存储请求发送至所述对应的数据库节点;

所述对应的数据库节点根据所述数据存储请求,存储所述待存储数据。

第二方面,提供一种分布式数据库系统中的数据迁移方法,所述分布式数据库系统包括管理子系统,所述方法包括:

所述管理子系统分别确定用于表示至少一个迁入数据库节点中各数据库节点当前性能状态的至少一个第三性能状态系数,并确定所述至少一个第三性能状态系数之和为第三散列基数;

当所述管理子系统针对迁出数据库节点中任一待迁移数据执行操作时,获得所述待迁移数据的主键id;

以预设散列算法和所述第三散列基数得到所述待迁移数据的主键id的散列值;

根据所述散列值和所述至少一个第三性能状态系数,确定所述至少一个迁入数据库中所述待迁移数据的主键id所对应的待迁入数据库节点;

将所述待迁移数据迁移至所述待迁入数据库节点;其中,所述至少一个迁入数据库节点和所述迁出数据库节点为所述分布式数据库系统包括的数据库节点。

在一种可能的实现方式中,所述分布式数据库系统还包括路由子系统,用于在所述管理子系统与所述分布式数据库系统包括的数据库节点间路由数据,所述将所述待迁移数据迁移至所述待迁入数据库节点,包括:

所述管理子系统确定存储有所述待迁移数据的获得数据库节点;

所述管理子系统生成并向所述路由子系统发送迁移指令,所述迁移指令用于指示所述路由子系统将所述待迁移数据从所述获得数据库节点迁移至所述待迁入数据库节点;

所述路由子系统根据所述迁移指令,从所述获得数据库节点获得所述待迁移数据,并将所述待迁移数据存储至所述待迁入数据库节点。

在一种可能的实现方式中,在所述确定所述至少一个第三性能状态系数之和为第三散列基数之后,所述方法还包括:

所述管理子系统获得迁出数据库节点信息、所述第三散列基数、所述至少一个第三性能状态系数之间的第三对应关系,其中,所述迁出数据库节点信息用于确定所述迁出数据库节点;

所述管理子系统将所述第三对应关系、所述迁出数据库节点信息、所述第三散列基数、所述至少一个第三性能状态系数发送至所述分布式数据库系统包括的路由子系统;

所述路由子系统记录所述第三对应关系、所述迁出数据库节点信息、所述第三散列基数、所述至少一个第三性能状态系数。

在一种可能的实现方式中,在所述管理子系统针对所述迁出数据库节点中任一待迁移数据执行所述操作之后,所述方法还包括:

所述管理子系统生成用于指示对所述分布式数据库内当前所有可分配的主键id进行分区的分区指令。

第三方面,提供一种分布式数据库系统中的数据查询方法,所述分布式数据库系统包括管理子系统、路由子系统和多个数据库节点,所述方法包括:

所述路由子系统从前端获得用于查询待查询数据的数据查询请求,所述数据查询请求包括所述待查询数据的主键id;

所述路由子系统确定包括所述待查询数据的主键id的第四主键id区间,并根据主键id区间与散列基数、性能状态系数之间的对应关系,确定与所述第四主键id区间对应的第四散列基数和至少一个第四性能状态系数;其中,所述对应关系、所述第四散列基数、所述至少一个第四性能状态系数是由所述管理子系统预先确定并发送给所述路由子系统的;

所述路由子系统以预设散列算法和所述第四散列基数对所述第四主键id进行散列计算,以获得所述待查询数据的主键id的第四散列值;

所述路由子系统根据所述第四散列值和所述至少一个第四性能状态系数,确定与所述待查询数据的主键id对应的第四数据库节点;

所述路由子系统根据所述第四数据库节点,获得所述待查询数据;

所述路由子系统向前端返回所述待查询数据。

在一种可能的实现方式中,所述路由子系统根据所述第四数据库节点,获得所述待查询数据,包括:

所述路由子系统将所述数据查询请求发送至所述第四数据库节点;所述第四数据库节点根据所述数据查询请求,确定所述待查询数据,并将所述待查询数据发送至所述路由子系统。

在一种可能的实现方式中,所述路由子系统根据所述第四数据库节点,获得所述待查询数据,包括:

所述路由子系统确定所述第四数据库节点是否是已被迁移数据的迁出数据库系统;

在为否时,所述路由子系统将所述数据查询请求发送至所述第四数据库节点;所述第四数据库节点根据所述数据查询请求,确定所述待查询数据,并将所述待查询数据发送至所述路由子系统;

在为是时,

所述路由子系统根据迁出数据库节点与散列基数、性能状态系数之间的对应关系,确定与所述第四数据库节点对应的第五散列基数、至少一个第五性能状态系数;

所述路由子系统以所述预设散列算法和所述第五散列基数对所述待查询数据的主键id进行散列计算,以获得所述待查询数据的主键id的第五散列值;

所述路由子系统根据所述第五散列值和所述至少一个第五性能状态系数,确定与所述待查询数据的主键id对应的第五数据库节点;

所述路由子系统将所述数据查询请求发送至所述第五数据库节点;

所述第五数据库节点根据所述数据查询请求,确定所述待查询数据,并将所述待查询数据发送至所述路由子系统。

第四方面,提供一种分布式数据库系统,所述分布式系统包括管理子系统、路由子系统和多个数据库节点,所述分布式数据库系统用于执行如第一方面、第二方面、第三方面中任一方面所述的方法。

在一种可能的实现方式中,所述路由子系统包括负载均衡单元和多个数据路由节点,其中:

所述负载均衡单元,用于周期性地执行:从所述多个数据路由节点获得所述多个数据路由节点中各数据路由节点的负载状态信息;根据预设负载均衡算法对所述各数据路由节点的负载状态信息进行计算,以确定所述多个数据路由节点中的可用数据路由节点;将用于确定所述可用数据路由节点的可用数据路由节点信息发送至所述管理子系统;以及

所述负载均衡单元,还用于将获得的数据存储请求、数据查询请求或迁移指令发送至所述可用数据路由节点;

所述多个数据路由节点中的任一数据路由节点,用于获得并记录所述管理子系统发送的由所述路由子系统记录的数据,以及用于处理获得的由所述路由子系统处理的数据存储请求、数据查询请求、迁移指令。

第五方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令被加载并运行时,执行如第一方面、第二方面、第三方面中任一方面所述的方法。

本发明实施例中,根据各数据库节点的性能状态确定性能状态系数和散列基数,并将其用于确定主键id所对应的数据库节点,因而划分至各个数据库节点的主键id数量符合各个数据库节点性能状态,避免发生性能瓶颈。

进一步,管理子系统在确定需要进行分区时,对分布式数据库内当前所有可分配的主键id进行分区,使得分布式数据库系统可以根据需要随时调整确定新分配的主键id对应的数据库节点的方式,能够自动适应分布式数据库的变化,降低了改造分布式数据库系统的难度。

进一步地,在确定是否需要进行分区时,可以参考各数据库节点最新的性能状态,通过分区可以适应各数据库节点的性能变化,以使得分布式数据库内各数据库节点的负载达到最优的均衡状态,避免发生性能瓶颈。

进一步地,当前确定的散列基数、性能状态系数作为下一次分区前分布式数据库系统内新分配的主键id对应的数据库节点,也就是说,已经被分配了的主键id所对应的散列基数、性能状态系数不会发生变化,因而可以维持分布式数据库系统的稳定性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例中一种分布式数据库系统的结构框图;

图2为本发明实施例中一种分布式数据库系统的分区管理方法的流程图;

图3为本发明实施例中一种分布式数据库系统中的数据查询方法的流程图;

图4为本发明实施例中一种分布式数据库系统的连接关系示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。

本发明实施例中,提供一种分布式数据库系统的管理方法,该方法可以应用于如图1所示的分布式数据库系统中。该方法包括有分区管理部分、数据迁移部分、数据查询部分;其中,分区管理部分即为实施例一中所述的分布式数据库系统的分区管理方法,数据迁移部分即为实施例二中所述的分布式数据库系统中的数据迁移方法,数据查询部分即为实施例三中所述的分布式数据库系统中的数据查询方法。也就是说,实施例一、实施例二和实施例三中所述的方法可以为一个整体,用于共同管理分布式数据库系统。

实施例一

本发明实施例提供一种分布式数据库系统的分区管理方法,该方法可以应用于分布式数据库系统中。

请参见图1,本发明实施例中,分布式数据库系统可以包括管理子系统、路由子系统和多个数据库节点,图1中n为正整数。当然,某些情况下,如部分数据库节点发生故障,本发明实施例中的分布式数据库系统也可以仅包括一个数据库节点。

在具体的实施过程中,管理子系统和路由子系统可以是通过不同的硬件设备进行区分,也可以是通过软件模块或功能模块进行区分。也就是说,本发明实施例中,管理子系统和路由子系统可以是不同的硬件设备,也可以是同一硬件设备上不同的软件模块。为了便于理解,在图1及后续的描述中,以管理子系统和路由子系统分别位于不同的硬件设备进行举例说明。

并且,关于分布式数据库系统及分布式数据库系统中管理子系统、路由子系统和多个数据库节点的说明可以参考实施例四的描述。

请参见图2,图2所示为本发明实施例中分布式数据库系统的分区管理方法的一种流程图。应当说明的是,图2中所示的步骤201和步骤202的执行顺序可以根据实际需要进行调整,也就是说,在具体的实施过程中,可以是先执行步骤201再执行步骤202,也可以是先执行步骤202再执行步骤201,还可以是步骤201和步骤202同时执行。本发明实施例对此不做限制。

步骤201:管理子系统确定至少一个第一性能状态系数,并确定所述至少一个第一性能状态系数之和为分布式数据库系统当前的第一散列基数;其中,所述至少一个第一性能状态系数用于表示分布式数据库系统内当前所有数据库节点中各数据库节点的当前性能状态。

本发明实施例中,管理子系统根据分布式数据库系统内各数据库节点的性能状态来确定用于划分主键id的散列基数和性能状态系数。

在具体的实施过程中,管理子系统中可以预设有用于评价数据库节点性能的预设性能指标,并且,预设性能指标可以有多个,每个预设性能指标用于评价数据库节点在一个维度的性能。在评价数据库节点的性能状态时,会根据数据库节点在各预设性能指标的指标参数,对数据库节点进行评分。

并且,管理子系统中还可以预设有各个预设性能指标在性能状态系数中所占的权值。也就是说,本发明实施例中,可以通过设置预设性能参数调整各个预设性能指标的评分在性能状态系数中的权重。

本发明实施例中,对于预设性能指标和各个预设性能指标的权值不做限制,并且,在具体的实施过程中,可以根据实际需要对预设性能指标和各预设性能指标的权值进行调整。

其中,对于预设性能指标可以分为积极性能指标和消极性能指标,其中积极性能指标的值越大表示数据库节点的性能越好,消极性能指标的值越大表示数据库节点的性能越差。在一种可能的实施方式中,根据已确定的各预设性能指标的值加权求和时,可以取积极性能指标的值为正,即加分项,取消极性能指标的值为负,即减分项。

例如,请参见表1,表1中对部分可以采用的预设性能指标进行了举例。其中,cpu、内存、硬盘可以为积极性能指标,连接数、存储数据量可以为消极性能指标。

表1

以表1中包括的预设性能指标和各预设性能指标的权值进行举例,确定数据库节点的性能状态系数p可以采用如下的公式(1)进行计算:

p=α*s1+β*s2+γ*s3-δ*s4-ε*s5…………(1)

为便于理解,以分布式数据库系统包括n1、n2、n3、n4共4个数据库节点进行举例,通过上述的公式(1),可以确定n1、n2、n3、n4的性能状态系数分别为p1、p2、p3、p4:

p1=α*s1(n1)+β*s2(n1)+γ*s3(n1)-δ*s4(n1)-ε*s5(n1);

p2=α*s1(n2)+β*s2(n2)+γ*s3(n2)-δ*s4(n2)-ε*s5(n2);

p3=α*s1(n3)+β*s2(n3)+γ*s3(n3)-δ*s4(n3)-ε*s5(n3);

p4=α*s1(n4)+β*s2(n4)+γ*s3(n4)-δ*s4(n4)-ε*s5(n4)。

进而,根据各数据库节点的性能状态系数,可以确定分布式数据库系统的散列基数m=p1+p2+p3+p4。

本发明实施例中,各数据库系统的优先级系数均为正整数。在具体的实施过程中,可以通过调整计算预设性能指标值的方法,调整各预设性能指标的权值等方式,使得各数据库系统确定出的优先级系数始终为正数;通过对计算获得的值进行取整可以保证确定出的优先级系数始终为整数。

本发明实施例中,管理子系统可以周期性地获得各数据库节点发送的各个预设性能指标参数,管理子系统也可以周期性地从各数据库节点获取各个预设性能指标参数;进而,管理子系统通过各数据库节点的各个预设性能指标参数,可以确定各数据库节点的在各个预设性能指标的评分,即预设性能指标值;进而,管理子系统根据各预设性能指标值的权值,可以分别确定出各数据库节点的性能状态系数;进而,管理子系统可以对各数据库节点的性能状态系数进行求和,获得分布式数据库系统的散列基数。

在具体的实施过程中,由于分布式系统包括的数据库节点的数量可能会变化(如增加数据库节点拓容),各数据库节点的性能状态也可能会发生变化(如可用存储空间变小),因而,分布式数据库系统在不同时刻确定的各数据库节点的至少一个性能状态系数、散列基数可能是不同的。

在步骤201中,管理子系统确定分布式数据库系统内当前包括的所有数据库节点中各数据库节点当前性能状态的性能状态系数,获得至少一个第一性能状态系数;并确定这至少一个性能状态系数的和为第一散列基数。

在具体的实施过程中,步骤201可以是周期性自动执行的,也可以是步骤202确定需要进行分区后,再执行步骤201,等等。

步骤202:管理子系统确定是否对分布式数据库内当前所有可分配的主键id进行分区。

本发明实施例中,分布式数据库系统中通过主键id来标识存储的数据,每个数据具有唯一对应的主键id,也就是说,本发明实施例中的主键id是分布式数据库系统全局的id,主键id被统一进行分配。在具体的实施过程中,分布式数据库系统内每新插入一条数据记录,就会为该数据分配一个主键id,通过该主键id可以查询到对应的数据记录存储在哪个分布式数据库节点系统内查询到该数据。

在具体的实施过程中,可以设定主键id不被重复使用,也就是说,即使某条数据从分布式数据库中删除了,该被删除的数据的主键id也不会被重新分配给其它的数据。可分配的主键id即可以是分布式数据库系统内未被分配过的主键id。

本发明实施例中,在不同的时期,主键id的总量是可以发生变化的,比如分布式数据库系统新增加一个数据库节点后,分布式数据库系统的存储容量增大,分布式数据库系统内主键id的总量会增加。

本发明实施例中,主键id可以是字母、数字、符号等能起到标识作用的信息,也可以是这些能够起到标识作用的信息的组合。为便于理解,在本发明实施例的后续描述中,以主键id采用数字的形式进行举例说明。

在具体的实施过程中,主键id采用数字形式时,分布式数据库系统中可以是以主键id递增的方式分配主键id,也可以是递减的方式分配主键id,以可以是以其它的预设分配方式分配主键id;其中,为方便实现和运算,采用递增是一种较佳的方式。为便于理解,在本发明实施例的后续描述中,以递增分配主键id这一种情况进行举例说明。

举例来说,当前分布式数据库系统中主键id的取值范围为0~50000,若当前已经被分配了的主键id中值最大的主键id为22000,则分布式数据库内当前所有可分配的主键id为22001~50000。

在步骤202中,管理子系统确定是否对分布式数据库内当前所有可分配的主键id进行分区,可以理解为将当前所有可分配的主键id从其原来属于的分区中划分出来。

举例来说,分布式数据库系统在初始分区时,即分布式数据库系统首次使用时,可以默认将初始分区时所有可分配的主键id划分为一个区间,即0~50000,并且确定初始分区时确定的散列基数和性能状态系数为用于确定初始分区后至第二次分区前新分配的主键id对应的数据库节点采用的散列基数和性能状态系数;

分布式数据库系统在第二次分区时,假设第二次分区时最大的主键id为12000,则第二次分区时所有可分配的主键id为12001~50000,进而在第二次分区时可以将12001~50000划分为一个区间,则第二次分区后分布式数据库系统包括有两个主键id区间,分别为0~12000,12001~50000;

分布式数据库系统在第三次分区时,假设第三次分区时最大的主键id为31000,则第三次分区时所有可分配的主键id为31001~50000,进而在第三次分区时可以将31001~50000划分为一个区间,则第三次分区后分布式数据库系统包括有三个主键id区间,分别为0~12000,12001~31000,31001~50000;

依此类推。

本发明实施例中,管理子系统确定是否对分布式数据库内当前所有可分配的主键id进行分区的方式有多种,本发明实施例中对此不做限制。

在一种可能的实施方式中,步骤202中管理子系统确定是否对分布式数据库内当前所有可分配的主键id进行分区,包括:

管理子系统确定是否满足至少一个预设条件中的任一条件;其中,至少一个预设条件包括以下条件中的任意一个或多个:

(1)分布式数据库系统当前包括的数据库节点的数量不同于前一次分区时分布式数据库系统包括的数据库节点的数量。

例如,当前分布式数据库系统共包括有4个数据库节点,前一次分区时分布式数据库系统共包括有3个数据库节点,则两者数量不同,需要进行分区。

(2)第一散列基数与前一次分区时确定的散列基数的差值的绝对值大于第一预设阈值。

例如,当前确定的第一散列基数为50,而前一次分区时确定的散列基数为36,第一预设阈值为10,则两者间差值的绝对值14大于10,则表明分布式数据库节点的整体性能变化较大,需要进行分区。

(3)当前所有数据库节点中任一数据库节点当前的第一性能状态系数与前一次分区时确定的性能状态系数的差值的绝对值大于第二预设阈值。

例如,分布式数据库系统当前包括有4个数据库节点,各数据库节点当前的第一性能状态系数分别为6,12,15,14,而前一次分区时确定的这4个数据库节点的性能状态系数分别为11,12,14,15,对应的差值的绝对值分别为5,0,1,1,第二预设阈值为4,则可以确定差值为4过数据库节点性能状态变化过大,需要进行分区。

(4)当前与前一次分区之间的时间差为预设时间差。

例如,前一次分区为2017年8月1的0:00,当前时间为2017年8月4日的0:00,两者间的时间差为72h,预设时间差为72h,两者时间相等,需要进行分区。

也就是说,通过条件(4)可以设定分布式数据库系统周期性地进行分区。

(5)获得用于指示进行分区的分区指令。即,管理子系统获得分区指令,则管理子系统进行分区。

其中,分区指令可以是人为控制生成的,也可以是分布式数据库系统根据预设程序控制生成的。

在具体的实施过程中,通过各判断条件间的组合,可以实现较为丰富、智能的控制效果。举例来说,可以组合条件(4)和条件(1)~(3),实现周期性地判断是否满足条件(1)~(3)中的任一条件,如果在一个周期进行判断时满足条件(1)~(3)中的任一条件,就进行分区。

步骤203:在为是时,管理子系统确定第一散列基数、所述至少一个第一性能状态系数为用于确定新分配的主键id所对应的数据库节点时采用的散列基数、性能状态系数;其中,新分配的主键id为下一次分区前分布式数据库系统内新分配的主键id。

本发明实施例中,在确定进行分区时,管理子系统确定分布式数据库系统当前的第一散列基数、分布式数据库系统当前各数据库节点的第一性能状态系统(即,所述至少一个第一性能状态系数)为,用于确定下一次分区前分布式数据库系统内新分配的主键id对应的数据库节点时采用的散列基数、性能状态系数。

举例来说,如当前分布式数据库系统内已分配的最大主键id为17000,则当前所有可分配的主键id为17001~50000。若在下一次分区前新分配了主键id17001~21000,则在确定17001~21000对应的数据库节点时,采用的散列基数、性能状态系数为第一散列基数和所述至少一个第一性能状态系数。即,存储17001~21000中的主键id对应的数据时,查询17001~21000中的主键id对应的数据等情况下均采用第一散列基数和所述至少一个第一性能状态系数。

本发明实施例中,管理子系统执行步骤203时,可以是进行分区并对分区结果进行记录。

在一种可能的实施方式中,管理子系统确定所述第一散列基数、所述至少一个第一性能状态系数为用于确定新分配的主键id所对应的数据库节点时采用的散列基数、性能状态系数,可以包括有如下步骤:

管理子系统确定由当前所有可分配的主键id组成的区间为第一主键id区间,并获得第一主键id区间与第一散列基数、所述至少一个第一性能状态系数间的第一对应关系;并且,管理子系统记录第一对应关系、第一主键id区间、第一散列基数、所述至少一个第一性能状态系数。

在具体的实施过程中,管理子系统记录第一对应关系、第一主键id区间、第一散列基数、所述至少一个第一性能状态系数的方式,可以是将这四者单独进行记录,也可以是以第一对应关系将第一主键id区间、第一散列基数、所述至少一个第一性能状态系数存储起来。

并且,具体的记录过程可以是对管理子系统中原有记录的主键id区间、散列基数、性能状态系数,及三者间的对应关系进行更新。例如,可以是对数据记录进行更新,也可以是对记录这些数据的表格进行更新,还可以是对用于表征这些数据的各参数的值进行更新,等等。

通过记录第一对应关系、第一主键id区间、第一散列基数、所述至少一个第一性能状态系数,在存储和查询第一主键id区间中的主键id对应的数据时,就可以根据第一对应关系,确定与待查询的主键id对应的散列基数为第一散列基数,对应的性能状态系数为所述至少一个性能状态系数。

在一种可能的实施方式中,在管理子系统确定对分布式数据库内当前所有可分配的主键id进行分区时,管理子系统还可以确定由前一次分区后至此次分区前分布式数据库系统内分配的主键id组成的区间为第二主键id区间,并获得第二主键id区间与第二散列基数、至少一个第二性能状态系数间的第二对应关系;进而,管理子系统记录第二对应关系、所述第二主键id区间、第二散列基数、所述至少一个第二性能状态系数。

其中,第二散列基数为前一次分区时确定的散列基数;所述至少一个第二性能状态系数为分布式数据库系统在前一次分区时包括的所有数据库节点中各数据库节点的性能状态系数。

举例来说,管理子系统在前一次分区时分布式数据库内已分配的最大主键id为8000,当前次分区前分布式数据库系统内已分配的最大主键id为17000,则表明在前一次分区后至此次分区前分布式数据库系统内所有分配的主键id为8001~17000,管理子系统可以确定8001~17000为第二主键id区间。

在具体的实施过程中,管理子系统记录第二对应关系、第二主键id区间、第二散列基数、所述至少一个第二性能状态系数的方式,可以是将这四者单独进行记录,也可以是以第二对应关系将第二主键id区间、第二散列基数、所述至少一个第二性能状态系数存储起来。

并且,具体的记录过程可以是对管理子系统中原有记录的主键id区间、散列基数、性能状态系数,及三者间的对应关系进行更新。例如,可以是对数据记录进行更新,也可以是对记录这些数据的表格进行更新,还可以是对用于表征这些数据的各参数的值进行更新,等等。

在一种可能的实施方式中,分布式数据库系统包括有路由子系统,用于在管理子系统与分布式数据库系统包括的数据库节点间路由数据。

在管理子系统获得第一对应关系之后,管理子系统还可以将第一对应关系、第一主键id区间、第一散列基数和所述至少一个第一性能状态系数发送至路由子系统;路由子系统在获得这些数据后,可以记录第一对应关系、第一主键id区间、第一散列基数和所述至少一个第一性能状态系数。

在具体的实施过程中,管理子系统记录第一对应关系、第一主键id区间、第一散列基数和所述至少一个第一性能状态系数的方式,可以是将这四者单独进行记录,也可以是以第一对应关系将第一主键id区间、第一散列基数和所述至少一个第一性能状态系数存储起来。

并且,具体的记录过程可以是对路由子系统中原有记录的主键id区间、散列基数、性能状态系数,及三者间的对应关系进行更新。例如,可以是对数据记录进行更新,也可以是对记录这些数据的表格进行更新,还可以是对用于表征这些数据的各参数的值进行更新,等等。

在管理子系统获得第二对应关系之后,管理子系统还可以将第二对应关系、第二主键id区间、第二散列基数和所述至少一个第二性能状态系数发送至路由子系统;路由子系统在获得这些数据后,可以记录第二对应关系、第二主键id区间、第二散列基数和至少一个第二性能状态系数。

在具体的实施过程中,管理子系统记录第二对应关系、第二主键id区间、第二散列基数和所述至少一个第二性能状态系数的方式,可以是将这四者单独进行记录,也可以是以第二对应关系将第二主键id区间、第二散列基数和所述至少一个第二性能状态系数存储起来。

并且,具体的记录过程可以是对路由子系统中原有记录的主键id区间、散列基数、性能状态系数,及三者间的对应关系进行更新。例如,可以是对数据记录进行更新,也可以是对记录这些数据的表格进行更新,还可以是对用于表征这些数据的各参数的值进行更新,等等。

本发明实施例中,管理子系统和路由子系统中记录、发送、确定主键id区间的方式可以是记录、发送、确定主键id区间包括的端点,端点即主键id区间中的最大主键id/最小主键id。

本发明实施例中,管理子系统向路由子系统发送内容(1)——第一对应关系、第一主键id区间、第一散列基数和所述至少一个第一性能状态系数,以及管理子系统向路由子系统发送内容(2)——第二对应关系、第二主键id区间、第二散列基数和所述至少一个第二性能状态系数的过程中,发送内容(1)和发送内容(2)这两个操作可以是同步进行的,也可以是不同步进行的。并且,在具体的实施过程中,管理子系统可以将内容(1)和内容(2)作为一个整体向路由子系统发送。本发明实施例中,对于管理子系统如何向路由子系统发送内容(1)和内容(2)不做限制。

在一种可能的实施方式中,在路由子系统记录第一对应关系、第一主键id区间、第一散列基数和所述至少一个第一性能状态系数之后,分布式数据库系统中存储数据可以通过如下的步骤实现:

(1)路由子系统获得数据存储请求,该数据存储请求用于指示分布式数据库系统存储待存储数据;

(2)路由子系统为待存储数据分配一可分配的主键id,并以预设散列算法和第一散列基数对分配给待存储数据的主键id进行散列计算,以获得一散列值;

(3)路由子系统根据散列值和所述至少一个第一性能状态系数确定分配给待存储数据的主键id所对应的数据库节点;

(4)路由子系统将数据存储请求发送至分配给待存储数据的主键id所对应的数据库节点;

(5)分配给待存储数据的主键id所对应的数据库节点根据数据存储请求,存储待存储数据。

本发明实施例中,路由子系统获得数据存储请求可以是从前端获得的。举例来说,可以是分布式数据库的数据接口被调用时,由数据接口获得的;并且,调用数据接口的可以是使用分布式数据库系统的手机、电脑、其它服务器等电子设备,也可以是运行分布式数据库系统的电子设备自身。

并且,在具体的实施过程中,路由子系统可以是直接从前端获得数据存储请求,也可以经由管理子系统的中转从前端获得数据存储请求。

本发明实施例中,管理子系统根据散列基数和至少一个性能状态系数确定主键id所对应的数据库节点的思路如下。

由于散列基数是这至少一个性能状态相加求和得到的,因而,根据至少一个性能状态系数刚好可以将散列基数划分成至少一个区段,每个区段包括的范围和性能状态系数的大小对应相同。

举例来说,分布式数据库系统中共包括有n1、n2、n3、n4这四个数据库节点,这四个数据库节点的性能状态系数分别为p1、p2、p3、p4,则可以求和计算出分布式数据库的散列基数m,m=p1+p2+p3+p4。

因而,可以将m分为与p1、p2、p3、p4的值对应相等的4个区间,并且记录区间与数据库节点的对应关系。在具体的实施过程中,在确定区间时数据库节点的排列顺序可以依照需要进行设定,本发明实施例对此不做限制,在此例中,以p1、p2、p3、p4顺序进行举例,即确定出区间[0,p1-1],[p1,p1+p2-1],[p1+p2,p1+p2+p3-1],[p1+p2+p3,m-1]。

进而,可以采用预设散列算法,以m为散列基数,对主键id进行散列计算以获得一散列值,确定出该散列值对应的区间,该对应的区间所对应的数据库节点即为主键id对应的数据库节点。

具体以数字举例来说,假设p1、p2、p3、p4分别为5、8、6、6,此时散列基数m为25,则可以确定出区间[0,4],[5,12],[13,17],[18,24]。假设需要确定对应的数据库节点的主键id为35043,假设预设散列算法为取模运算,则以25为散列基数对35043进行取模计算,即35043%25,得到散列值18,散列值18属于区间[18,24],区间[18,24]对应的数据库节点为p4,则可以确定35043这一主键id所对应的数据库节点为p4。

本发明实施例中,根据各数据库节点的性能状态确定性能状态系数和散列基数,并将其用于确定主键id所对应的数据库节点,因而划分至各个数据库节点的主键id数量符合各个数据库节点性能状态,避免发生性能瓶颈。

进一步,管理子系统在确定需要进行分区时,对分布式数据库内当前所有可分配的主键id进行分区,使得分布式数据库系统可以根据需要随时调整确定新分配的主键id对应的数据库节点的方式,能够自动适应分布式数据库的变化,可以降低扩展分布式数据库系统的难度。

进一步地,在确定是否需要进行分区时,可以参考各数据库节点最新的性能状态,通过分区可以适应各数据库节点的性能变化,以使得分布式数据库内各数据库节点的负载达到最优的均衡状态,避免发生性能瓶颈。

进一步地,当前确定的散列基数、性能状态系数作为下一次分区前分布式数据库系统内新分配的主键id对应的数据库节点,也就是说,已经被分配了的主键id所对应的散列基数、性能状态系数不会发生变化,因而可以维持分布式数据库系统的稳定性。

由于实施例一与实施例二、实施例三是基于同一发明构思的方法,因而,在理解、解释实施例一时,可以参看实施例二、实施例三中的描述。

实施例二

本发明实施例提供一种分布式数据库系统中的数据迁移方法,该方法可以应用于分布式数据库系统中,例如,图1所示的分布式数据库系统。

并且,关于分布式数据库系统及分布式数据库系统中管理子系统、路由子系统和多个数据库节点的说明可以参考实施例四的描述。

当某个数据库节点损坏,或者需要将某个数据库节点的数据迁移到其它数据库节点时,就可以采用本发明实施例中的数据迁移方法进行数据迁移。

本发明实施例中,迁移数据时,管理子系统分别确定用于表示至少一个迁入数据库节点中各数据库节点当前性能状态的至少一个第三性能状态系数,并确定所述至少一个第三性能状态系数之和为第三散列基数。

其中,迁入数据库节点为分布式数据库系统中的数据库节点,用于存储待迁移的数据。举例来说,分布式数据库系统包括的n1、n2、n3、n4共4个数据库节点中,当需要将n1中的数据迁移时,为了保证迁移之后各数据库节点的数据量保持相对平衡,可以将n2、n3、n4作为迁入数据库节点,当然,在具体的实施过程中,只选择n2、n3、n4中的部分也是可行的,若只有一个迁入数据库节点,则可以直接将待迁移数据迁移至迁入数据库节点。并且,迁出数据库节点也可以为分布式数据库系统包括的一个或多个数据库节点。

为便于理解,在后续的描述中,以迁出数据库节点为n1这一个,迁入数据库节点为n2、n3、n4共三个进行举例说明。

本发明实施例中,管理子系统分别确定用于表示至少一个迁入数据库节点中各数据库节点当前性能状态的至少一个第三性能状态系数。也就是说,一个迁入数据库系统对应一个第三性能状态系数。在确定出所述至少一个性能状态系数之后,管理子系统就可以确定所述至少一个第三性能状态系数之和为第三散列基数。

在具体的实施过程中,管理子系统确定性能状态系数、散列基数的具体实施方式可以参看实施例一中的描述,在此不再赘述。

本发明实施例中,当管理子系统针对迁出数据库节点中任一待迁移数据执行操作时,可以包括有如下的步骤:

步骤一:获得待迁移数据的主键id。

本发明实施例中,管理子系统可以通过查询记录,计算迁出数据库节点对应的主键id等方式确定出迁出数据库节点中包括有哪些待迁移数据,即确定每个待迁移数据的主键id。例如,对迁出数据库节点进行整体迁移时,迁出数据库节点包括的存储的所有数据库数据都是待迁移数据。

步骤二:以预设散列算法和第三散列基数得到待迁移数据的主键id的散列值。

本发明实施例中,管理子系统可以采用第三散列基数作为预设散列算法的散列基数,对待迁移数据的主键id进行散列计算,以获得待迁移数据的主键id的散列值。

在具体的实施过程中,以散列基数、预设散列算法确定主键id散列值的方式可以参考实施例一中的描述,并且,实施例一、二、三中的预算散列算法可以是同一个散列算法。

步骤三:根据待迁移数据的主键id的散列值和所述至少一个第三性能状态系数,确定至少一个迁入数据库中待迁移数据的主键id所对应的待迁入数据库节点。

本发明实施例中,在确定了待迁移数据的主键id的散列值后,管理子系统就可以根据该散列值和各迁入数据库节点的共至少一个第三性能状态系数确定出该主键id对应的待迁入数据库节点,即确定出用于存储这个待迁移数据的迁入数据库节点。

在具体的实施过程中,根据主键id的散列值和数据库节点的性能状态系数确定主键id对应的数据库节点的方式,可以参看实施例一中的描述,在此不再赘述。

步骤四:将待迁移数据迁移至待迁入数据库节点。

本发明实施中,确定了待迁移数据对应的待迁入数据库节点后,管理子系统就可以控制将待迁移数据迁移至待迁入数据库节点。

在一种可能的实施方式中,分布式数据库系统包括有路由子系统,用于在管理子系统与分布式数据库系统包括的数据库节点间路由数据。在前述的步骤四中,将待迁移数据迁移至待迁入数据库节点,可以通过如下的方式实现。

首先,管理子系统确定出存储有待迁移数据的获得数据库节点。在具体的实施过程中,获得数据库节点可能是迁出数据库节点自身,也可以是迁出数据库节点之外的其它数据库节点。

例如,当还可以从迁出数据库节点中读取数据,迁出数据库节点中还存储有待迁移数据时,就可以从迁出数据库节点中直接获得待迁移数据;而当不能从迁出数据库节点中读取到待迁移数据时,例如迁出数据库损坏时,可以从其它的数据库节点获得待迁移数据,例如,可以是迁出数据库节点的备份数据库节点,也可以是其它存储有待迁移数据的存储设备,等等。本发明实施例中,对于管理子系统如何确定出获得数据库节点不做限制。

进而,管理子系统生成并向路由子系统发送迁移指令,该迁移指令用于指示路由子系统将待迁移数据从获得数据库节点迁移至待迁入数据库节点。

在具体的实施过程中,迁移指令中可以包括有待迁移数据的主键id,用于确定获得数据库节点的获得数据库节点信息,待迁入数据库节点的待迁入数据库节点信息,等等。

最后,路由子系统根据迁移指令,从获得数据库节点获得待迁移数据,并将待迁移数据存储至待迁入数据库节点。

在具体的实施过程中,路由子系统在迁移待迁移数据的过程中,可以是进行数据、指令的路由。

在一种可能的实施方式中,在确定所述至少一个第三性能状态系数之和为第三散列基数之后,管理子系统还可以获得迁出数据库节点信息、第三散列基数、所述至少一个第三性能状态系数之间的第三对应关系。其中,迁出数据库节点信息用于确定迁出数据库节点。

进而,管理子系统可以将第三对应关系、迁出数据库节点信息、第三散列基数、所述至少一个第三性能状态系数发送至分布式数据库系统包括的路由子系统,路由子系统在获得这些数据后,可以记录第三对应关系、迁出数据库节点信息、第三散列基数、所述至少一个第三性能状态系数。

在具体的实施过程中,路由子系统记录第三对应关系、迁出数据库节点信息、第三散列基数、所述至少一个第三性能状态系数的方式,可以是将这四者单独进行记录,也可以是以第三对应关系将迁出数据库节点信息、第三散列基数、所述至少一个第三性能状态系数存储起来。

并且,具体的记录过程可以是对路由子系统中原有记录的主键id区间、散列基数、性能状态系数,及三者间的对应关系进行更新。例如,可以是对数据记录进行更新,也可以是对记录这些数据的表格进行更新,还可以是对用于表征这些数据的各参数的值进行更新,等等。

在一种可能的实施方式中,在管理子系统针对迁出数据库节点中任一待迁移数据执行前述的操作,即所有待迁移数据都被迁移至对应的待迁入数据库节点之后,管理子系统还可以生成用于指示对分布式数据库内当前所有可分配的主键id进行分区的分区指令。

也就是说,本发明实施例中,数据迁移时,分布式数据库节点发生了变化,因此需要进行分区。在具体的实施过程中,分布式数据库系统中根据分区指令进行分区的方式可以参考实施例一中的描述,在此不再赘述。

本发明实施例中的数据迁移方法,可以在不改变待迁移数据之外其它正常存储的数据的存储位置的情况下,就实现对待迁移数据的迁移。并且,本发明实施例中的数据迁移方法通常可以应用于对整个数据库节点的数据迁移,迁移过程高效,且不会改变待迁移数据的主键id,也不会影响迁移完成后针对待迁移数据的操作。

由于实施例二与实施例一、实施例三是基于同一发明构思的方法,因而,在理解、解释实施例二时,可以参看实施例一、实施例三中的描述。

实施例三

本发明实施例提供一种分布式数据库系统中的数据查询方法,该方法可以应用于分布式数据库系统中,例如,图1所示的分布式数据库系统。

分布式数据库系统包括管理子系统、路由子系统和多个数据库节点,并且,关于分布式数据库系统及分布式数据库系统中管理子系统、路由子系统和多个数据库节点的说明可以参考实施例四的描述。

请参见图3,在实现数据查询的过程中,可以通过如下的步骤实现。

步骤301:路由子系统从前端获得用于查询待查询数据的数据查询请求,并且,该数据查询请求中可以包括有待查询数据的主键id。

步骤302:路由子系统获得数据查询请求后,进行处理,确定出包括待查询数据的主键id的第四主键id区间。

举例来说,假设分布式数据库系统中当前可用包括有主键id区间[0,12003]、[12004,16025]、[16026,50000],若待查询数据的主键id为15000,则可以确定待查询数据所述的主键id区间为区间[12004,16025]。

进而,路由子系统可以根据记录有的主键id区间与散列基数、性能状态系数之间的对应关系,通过如查询的方式确定与第四主键id区间对应的第四散列基数和至少一个第四性能状态系数。其中,记录有的主键id区间与散列基数、性能状态系数之间的对应关系,以及记录有的第四散列基数、至少一个第四性能状态系数是由管理子系统预先确定并发送给路由子系统的;并且,管理子系统确定对应关系、散列基数、至少一个性能状态系数的方式,以及管理子系统发送这些数据给路由子系统的方式可以参看实施例一、实施例二中的描述,在此不再赘述。

步骤303:路由子系统以预设散列算法和第四散列基数对第四主键id进行散列计算,以获得待查询数据的主键id的第四散列值。

在具体的实施过程中,以散列基数根据预设散列算法对主键id进行散列计算,以获得散列值的方法,可以参看实施例一中的描述,在此不再赘述。并且,本发明实施例中的预设散列算法可以与实施例一、实施例二中采用的预设散列算法相同。

步骤304:路由子系统根据第四散列值和所述至少一个第四性能状态系数,确定与待查询数据的主键id对应的第四数据库节点。

在具体的实施过程中,根据主键id的散列值、性能状态系数确定主键id对应的数据库节点的方式,可以参看实施例一中的描述,在此不再赘述。

步骤305:路由子系统根据第四数据库节点,获得待查询数据。

步骤306:路由子系统向前端返回待查询数据。

也就是说,路由子系统可以获得并向前端返回待查询数据。当然,在具体的实施过程中,路由子系统也可以直接发送待查询数据给数据查询请求指定的目标地址,等等。

在具体的实施过程中,路由子系统可以是直接从前端获得数据查询请求,也可以是经由管理子系统的中转从前端获得数据查询请求。路由子系统可以是直接向前端返回待查询数据,也可以是经由管理子系统的中转向前端返回待查询数据。

在一种可能的实施方式中,路由子系统根据第四数据库节点,获得待查询数据,可以通过如下的方式实现。

路由子系统直接将数据查询请求发送至第四数据库节点,进而,第四数据库节点根据数据查询请求,确定待查询数据,并将待查询数据发送至路由子系统。

也就是说,路由子系统可以不做进一步的判断以确定待查询数据是否被迁移,而是直接将数据查询请求发送至第四数据库节点。

在具体的实施过程中,如果第四数据库节点存储有待查询数据,则路由子系统可以获得待查询数据;如果第四数据库节点当前已经没有存储有待查询数据,或第四数据库节点已经不存在了,则(1)路由子系统可以反馈查询错误,或者(2)路由子系统再判断第四数据库节点是否是已被迁移数据的迁出数据库节点,如果否,则反馈查询错误,如果是,则从迁入了待查询数据的迁入数据库节点获得待查询数据。

在一种可能的实施方式中,路由子系统根据第四数据库节点,获得待查询数据,可以通过如下的方式实现。

首先,路由子系统确定第四数据库节点是否是已被迁移数据的迁出数据库系统。

在为否时,路由子系统将数据查询请求发送至第四数据库节点,第四数据库节点根据数据查询请求,确定待查询数据,并将待查询数据发送至路由子系统。

在为是时,路由子系统根据记录有的迁出数据库节点与散列基数、性能状态系数之间的对应关系,确定与第四数据库节点对应的第五散列基数、至少一个第五性能状态系数;

进而,路由子系统以预设散列算法和第五散列基数对待查询数据的主键id进行散列计算,以获得待查询数据的主键id的第五散列值;在具体的实施过程中,以预设散列算法和散列技术对主键id进行散列以获得散列值的方法可以参考实施例一中的描述,在此不再赘述;

进而,路由子系统根据第五散列值和所述至少一个第五性能状态系数,确定与待查询数据的主键id对应的第五数据库节点;在具体的实施过程中,根据主键id的散列值、性能状态系数确定主键id对应的数据库节点的方式,可以参看实施例一中的描述,在此不再赘述;

进而,路由子系统将数据查询请求发送至第五数据库节点;

进而,第五数据库节点根据数据查询请求,确定待查询数据,并将待查询数据发送至路由子系统,以使得路由子系统获得待查询数据。

通过前述的数据查询方法,可以实现在分布式数据库系统中查询数据。

由于实施例三与实施例一、实施例二是基于同一发明构思的方法,因而,在理解、解释实施例三时,可以参看实施例一、实施例二中的描述。

本发明实施例中,查询分布式数据库中某个数据的过程,可以用于在分布式数据库中删除或更新某个数据时,定位需要删除或更新的数据。

实施例四

请参见图1,基于同一发明构思,本发明实施例提供一种分布式数据库系统,该分布式数据库系统包括管理子系统、路由子系统和多个数据库节点。其中,管理子系统、路由子系统和多个数据库节点间可以进行通信,并且,数据库节点与管理子系统之间的数据传输可以经由路由子系统路由。

本发明实施例中,分布式数据库系统可以用于执行如实施例一、实施例二、实施例三中任一实施例所述的方法。并且,具体的执行过程可以实施例一、实施二、实施例三中的描述,在此不再赘述。

在一种可能的实施方式中,路由子系统包括有负载均衡单元和多个数据路由节点,也就是说,负载均衡单元可以对各数据路由节点的负载进行均衡调节,以避免分布式数据库系统中发生性能瓶颈。

本发明实施例中,负载均衡单元可以周期性地从多个数据路由节点获得该多个数据路由节点中各数据路由节点的负载状态信息,并且,根据预设负载均衡算法对各数据路由节点的负载状态信息进行计算,以确定多个数据路由节点中的可用数据路由节点,进而,将用于确定可用数据路由节点的可用数据路由节点信息发送至管理子系统。

也就是说,负载均衡单元会周期性地对各数据路由节点的运行状态进行检测,确定出其中可以继续获得命令以执行操作的数据路由节点,并且将确定结果发送至管理子系统,由管理子系统周期性地将主键id区间、散列基数和各数据库节点的性能状态参数同步到可用的数据路由节点。

本发明实施例中,负载均衡单元还可以将获得的数据存储请求、数据查询请求或迁移指令发送至对应的可用数据路由节点。

本发明实施例中,该多个数据路由节点中的任一数据路由节点用于获得并记录管理子系统发送的由路由子系统记录的数据。也就是说,多个数据路由节点中的每个数据路由节点都会记录。具体来说,需要记录的数据可以是实施例一、实施例二、实施例三种所述的对应关系、主键id区间、迁出数据库节点信息、第三散列基数、性能状态系数,等等。

并且,多个数据路由节点中的任一数据路由节点还用于处理获得的由路由子系统处理的数据存储请求、数据查询请求、迁移指令。也就是说,多个数据路由节点中的各数据路由节点会处理负载均衡节点给各自分配的任务。

本发明实施例中,管理子系统同样可以包括有多个管理节点,例如管理子系统可以包括有一个主管理节点和一个备用管理节点,管理子系统中主要由主管理节点处理任务,备用管理节点用于对主管理节点进行热备份,当主管理节点出现故障时,可以即时将主管理节点的任务切换至备用管理节点。

本发明实施例中,多个数据库节点中的各数据库节点同样可以备份各自的数据库节点,比如使用1+1流复制热备份。

本发明实施例中,负载均衡单元同样可以包括多个负载均衡节点,例如负载均衡单元可以包括有一个主负载均衡节点和一个备用负载均衡节点。

通过对分布式数据库系统中各设备、模块进行负载均衡和备份,提高了分布式数据库系统的稳定性和处理任务的效率,并且,提升了分布式数据库系统的容灾能力。

请参见图4,在具体的实施过程中,分布式数据库系统中的各个部分可以通过网络连接,n为正整数。

实施例五

基于同一发明构思,本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序指令,当计算机程序指令被加载并运行时,可以执行如实施例一、实施例二、实施例三中任一实施例所述的方法。并且,具体的执行过程可以实施例一、实施二、实施例三中的描述,在此不再赘述。

在具体的实施过程中,计算机可读存储介质包括:通用串行总线闪存盘(universalserialbusflashdrive,usb)、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的存储介质。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1