一种数据库分片方法、装置、电子设备和可读存储介质与流程

文档序号:26587694发布日期:2021-09-10 19:51阅读:81来源:国知局
一种数据库分片方法、装置、电子设备和可读存储介质与流程

1.本技术属于电子设备技术领域,具体涉及一种数据库分片方法、装置、电子设备和可读存储介质。


背景技术:

2.随着电子技术快速发展,以及对数据存储的要求越来越高,利用多节点数据库存储数据越来越广泛,且数据库中的存储容量也越来越大。为了方便管理数据库中存储的数据,往往会对数据库进行分片,即,每个节点数据库中包含多个分片,且每个分片中存储有若干数据。
3.现有技术中,对数据库的分片方法往往是,直接根据数据库中存储的所有数据进行切分,按照切分结果得到数据库中的多个分片。但是,这种切分方法较为简单,使得在读取分片上的数据时,所需时间可能不一致,从而影响在数据库上的读取效率。


技术实现要素:

4.为克服相关技术中存在的问题,本公开提供一种数据库分片方法、装置、电子设备及存储介质。
5.依据本公开的第一方面,提供了一种数据库分片方法,应用于多节点数据库,所述方法包括:
6.确定各个节点数据库上的目标数据表,以及确定第一分片配置参数和第二分片配置参数;
7.针对任一所述节点数据库,基于第一预设分片策略对所述目标数据表中的第一区间进行迭代切分,获得n个第一备选分片;所述第一预设分片策略是根据所述第一分片配置参数确定的;所述n为正整数;
8.分别对每一所述第一备选分片,根据第二预设分片策略对所述第一备选分片中的第二区间进行划分,获得m个第二备选分片;所述第二预设分片策略是根据所述第二分片配置参数确定的;所述m为正整数;
9.对n*m个第二备选分片归类,确定所述目标数据表中的目标区间,以便按照所述目标区间切分得到所述节点数据库中的目标分片。
10.可选的,所述第一分片配置参数为目标迭代次数;
11.所述基于第一预设分片策略对所述目标数据表中的第一区间进行迭代切分,获得n个第一备选分片,包括:
12.根据所述目标数据表中存储的目标标识值,确定所述目标数据表中的所述第一区间;
13.利用二分法对所述第一区间按照所述目标迭代次数进行迭代切分,获得所述n个第一备选分片。
14.可选的,所述利用二分法对所述第一区间按照所述目标迭代次数进行迭代切分,
获得所述n个第一备选分片,包括:
15.在执行二分切分操作的次数小于所述目标迭代次数的情况下,依次循环执行以下步骤:
16.根据所述第一区间中存储的数据确定第一端点对;
17.按照所述第一端点对,对所述第一区间执行所述二分切分操作,得到多个第一片段;
18.根据所述第一片段中存储的数据确定第二端点对,按照所述第二端点对对所述多个第一片段分别执行所述二分切分操作,得到多个第二片段;
19.在执行所述二分切分操作的次数达到所述目标迭代次数的情况下,停止所述循环执行步骤,且执行以下步骤:
20.将停止所述循环执行步骤之后得到的所述多个第二片段,作为所述n个第一备选分片。
21.可选的,所述根据所述第一区间中存储的数据确定第一端点对,包括:
22.遍历所述第一区间中对应存储的数据,将所述数据不为空时对应的目标标识值作为有效值;
23.选取位于所述第一区间中端点处的有效值,作为所述第一端点对,以筛除所述端点处存储数据为空的目标标识值。
24.可选的,所述第二分片配置参数为目标划分数;
25.所述根据第二预设分片策略对所述第一备选分片中的第二区间进行划分,获得m个第二备选分片,包括:
26.按照所述目标划分数对所述第二区间平均划分,得到x个第三片段;所述x为正整数;
27.对每一所述第三片段,遍历所述第三片段中对应存储的数据,选取端点处存储的数据不为空的片段,作为所述第二备选分片,从而得到所述m个第二备选分片;所述m不大于所述x。
28.可选的,所述对n*m个第二备选分片归类,确定所述目标数据表中的目标区间,包括:
29.利用预设分类算法,对所述n*m个第二备选分片按照目标分片个数p进行分类,将每一分类结果作为一个目标区间,从而得到所述目标数据表中的p个目标区间;所述p为正整数。
30.可选的,所述方法还包括:
31.接收获取数据请求;
32.响应于所述获取数据请求,允许在所述目标分片上读取数据。
33.可选的,所述确定各个节点数据库上的目标数据表,包括:
34.读取所述数据库中存储的元数据;
35.根据所述元数据,确定各个所述节点数据库中的目标数据表。
36.依据本公开的第二方面,提供了一种数据库分片装置,应用于多节点数据库,所述装置包括:
37.第一确定模块,用于确定各个节点数据库上的目标数据表,以及确定第一分片配
置参数和第二分片配置参数;
38.切分模块,用于针对任一所述节点数据库,基于第一预设分片策略对所述目标数据表中的第一区间进行迭代切分,获得n个第一备选分片;所述第一预设分片策略是根据所述第一分片配置参数确定的;所述n为正整数;
39.划分模块,用于分别对每一所述第一备选分片,根据第二预设分片策略对所述第一备选分片中的第二区间进行划分,获得m个第二备选分片;所述第二预设分片策略是根据所述第二分片配置参数确定的;所述m为正整数;
40.第二确定模块,用于对n*m个第二备选分片归类,确定所述目标数据表中的目标区间,以便按照所述目标区间切分得到所述节点数据库中的目标分片。
41.可选的,所述第一分片配置参数为目标迭代次数;
42.所述切分模块,还具体用于:
43.根据所述目标数据表中存储的目标标识值,确定所述目标数据表中的所述第一区间;
44.利用二分法对所述第一区间按照所述目标迭代次数进行迭代切分,获得所述n个第一备选分片。
45.可选的,所述切分模块,还具体用于:
46.在执行二分切分操作的次数小于所述目标迭代次数的情况下,依次循环执行以下步骤:
47.根据所述第一区间中存储的数据确定第一端点对;
48.按照所述第一端点对,对所述第一区间执行所述二分切分操作,得到多个第一片段;
49.根据所述第一片段中存储的数据确定第二端点对,按照所述第二端点对对所述多个第一片段分别执行所述二分切分操作,得到多个第二片段;
50.在执行所述二分切分操作的次数达到所述目标迭代次数的情况下,停止所述循环执行步骤,且执行以下步骤:
51.将停止所述循环执行步骤之后得到的所述多个第二片段,作为所述n个第一备选分片。
52.可选的,所述切分模块,还具体用于:
53.遍历所述第一区间中对应存储的数据,将所述数据不为空时对应的目标标识值作为有效值;
54.选取位于所述第一区间中端点处的有效值,作为所述第一端点对,以筛除所述端点处存储数据为空的目标标识值。
55.可选的,所述第二分片配置参数为目标划分数;
56.所述划分模块,还具体用于:
57.按照所述目标划分数对所述第二区间平均划分,得到x个第三片段;所述x为正整数;
58.对每一所述第三片段,遍历所述第三片段中对应存储的数据,选取端点处存储的数据不为空的片段,作为所述第二备选分片,从而得到所述m个第二备选分片;所述m不大于所述x。
59.可选的,所述第二确定模块,还具体用于:
60.利用预设分类算法,对所述n*m个第二备选分片按照目标分片个数p进行分类,将每一分类结果作为一个目标区间,从而得到所述目标数据表中的p个目标区间;所述p为正整数。
61.可选的,所述装置还包括:
62.接收模块,用于接收获取数据请求;
63.读取模块,用于响应于所述获取数据请求,允许在所述目标分片上读取数据。
64.可选的,所述第一确定模块,还具体用于:
65.读取所述数据库中存储的元数据;
66.根据所述元数据,确定各个所述节点数据库中的目标数据表。
67.依据本公开的第三方面,提供了一种电子设备,包括:
68.处理器;
69.用于存储处理器可执行指令的存储器;
70.其中,所述处理器被配置为执行所述指令,以实现如第一方面中任一项所述的数据库分片方法。
71.依据本公开的第四方面,提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够如第一方面中任一项所述的数据库分片方法。
72.依据本公开的第五方面,提供了一种计算机程序产品,该计算机程序产品包括可读性程序指令,该可读性程序指令由移动终端的处理器执行时,使得移动终端能够执行如上述任一个实施例中的数据库分片方法中的步骤。
73.本公开相比于相关技术,具有如下的优点和积极效果:
74.综上所述,本公开实施例提供的数据库分片方法,可以先确定各个节点数据库上的目标数据表,以及确定第一分片配置参数和第二分片配置参数,再针对任一节点数据库,基于第一预设分片策略对目标数据表中的第一区间进行迭代切分,获得n个第一备选分片,第一预设分片策略是根据第一分片配置参数确定的,其中n为正整数,接着,分别对每一第一备选分片,根据第二预设分片策略对第一备选分片中的第二区间进行划分,获得m个第二备选分片,第二预设分片策略是根据第二分片配置参数确定的,其中m为正整数,最后,对n*m个第二备选分片归类,确定目标数据表中的目标区间,以便按照目标区间切分得到节点数据库中的目标分片。这样,通过对数据表的迭代切分以及进一步的细粒度划分,最后得到目标分片,可以一定程度上减少每个目标分片上数据存储量的差异,进而可以避免由于个别分片上数据存储过多而出现读取数据卡机的情况,而根据每个节点数据库上的数据表进行切分,一定程度上可以减少读取数据而建立的连接数,从而可以提高在数据库上的读取效率。
附图说明
75.图1是是本公开实施例提供的一种数据库分片方法的步骤流程图;
76.图2是本公开实施例提供的一种数据库分片切分过程的示意图;
77.图3是本公开实施例提供的又一种数据库分片切分过程的示意图;
78.图4是本公开实施例提供的一种数据库分片切分流程示意图;
79.图5是现有技术提供的一种数据库分片示意图;
80.图6是本公开实施例提供的一种数据库分片示意图;
81.图7是本公开实施例提供的一种数据库分片装置的框图;
82.图8是根据一示例性实施例示出的一种用于数据库分片的装置的框图;
83.图9是根据一示例性实施例示出的一种用于数据库分片的装置的框图。
具体实施方式
84.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
85.图1是本公开实施例提供的一种数据库分片方法的步骤流程图,该方法可以应用于多节点数据库,如图1所示,该方法可以包括:
86.步骤101、确定各个节点数据库上的目标数据表,以及确定第一分片配置参数和第二分片配置参数。
87.本公开实施例中,多节点数据库可以是包含多个节点数据库的分布式数据库,该分布式数据库可以将数据分别存储在多个节点数据库上,并且,可以将节点数据库的电子设备设置在不同的地点,而位于不同地点的多个电子设备可以通过网络互相连接,从而可以组成一个逻辑上统一完整、物理分布不同的大型数据库。
88.本公开实施中,目标数据表可以是用于临时保存数据库中数据的网络虚拟表,每个节点数据库上可以记录有一个目标数据表,用于记录该节点数据库上存储的数据。确定各个节点数据库上的目标数据表,可以是读取节点数据库上存储的数据表,将该数据表作为该节点数据库上的目标数据表,从而可以得到多个节点数据库上对应的目标数据表。其中,由于每个节点数据库中存储的数据可能不同,因此,每个节点数据库上的目标数据表也可能不同。
89.本公开实施例中,第一分片配置参数和第二分片配置参数可以是用户预先根据实际情况设定的,其中,第一分片配置参数可以是用于表征对目标数据表迭代切分的参数,比如,第一分片配置参数可以是迭代次数、迭代方式、迭代范围等至少一种参数,第二分片配置参数可以是用于表征细粒度划分的参数,比如,第二分片配置参数可以是划分方式、划分次数、划分大小等至少一种参数,对此本公开不做限制。确定第一分片配置参数和第二分片配置参数,可以是读取用户针对第一分片配置参数设定的信息,将该信息作为第一分片配置参数,相应地,读取用户针对第二分片配置参数设定的信息,将该信息作为第二分片配置参数。
90.需要说明的是,第一分片配置参数和第二分片配置参数可以存储于分布式存储系统中,用以控制每个节点数据库均按照同一第一分片配置参数和第二分片配置参数进行分片操作。也可以是分别存储于各个节点数据库上,用以控制各节点数据库按照该节点数据库上的第一分片配置参数和第二分片配置参数进行分片操作,本公开实施例对此不作限制。进一步地,各节点数据库上记录的第一分片配置参数和第二分片配置参数可以不同,则
每一节点数据库可以根据该节点数据库上记录的第一分片配置参数和第二分片配置参数,对该节点数据库上进行切分,从而可以实现对各个节点数据库上的分片操作。
91.步骤102、针对任一所述节点数据库,基于第一预设分片策略对所述目标数据表中的第一区间进行迭代切分,获得n个第一备选分片;所述第一预设分片策略是根据所述第一分片配置参数确定的;所述n为正整数。
92.本公开实施例中,第一预设分片策略可以是针对目标数据表进行迭代切分的策略,具体的,迭代切分策略可以是根据第一分片配置参数确定的,比如,若第一分片配置参数为迭代次数,则第一预设分片策略可以是根据该迭代次数对目标数据表进行迭代切分,若第一分片配置参数为二分迭代方式,则第一预设分片策略可以是根据该二分迭代方式对目标数据表进行迭代切分。
93.本公开实施例中,基于第一预设分片策略对目标数据表中的第一区间进行迭代切分,获得n个第一备选分片,可以是先根据第一分片配置参数确定对应的第一预设分片策略,按照第一预设分片策略对目标数据表中的第一区间进行切分操作,将切分得到的片段作为第一备选分片,从而得到n个第一备选分片。其中,目标数据表中的第一区间可以是以端点处的存储数据不为空组成的区间,该区间可以是对目标数据表中的每行数据编号后得到的集合,比如,第一区间为[1,100],可以表示为目标数据表中第一行到第一百行之间的所有数据。通过选取端点处的存储数据不为空的区间,可以一定程度避免后续对数据库分片时,存储数据不均的问题。
[0094]
需要说明的是,本步骤中是针对任一节点数据库,确定该节点数据库上的切分策略,并执行对应的切分操作,从而在每个节点数据库上获得多个第一备选分片。其中,每一节点数据库上的分片策略可以是相同的,则每个节点数据库上得到的第一备选分片个数可能是相同的,每一节点数据库上的分片策略也可以是不同的,则每个节点数据库上得到的第一备选分片个数可能是不同的。
[0095]
步骤103、分别对每一所述第一备选分片,根据第二预设分片策略对所述第一备选分片中的第二区间进行划分,获得m个第二备选分片;所述第二预设分片策略是根据所述第二分片配置参数确定的;所述m为正整数。
[0096]
本公开实施例中,第二预设分片策略可以是针对第一备选分片进行划分的策略,具体的,划分策略可以是根据第二分片配置参数确定的,比如,若第二分片配置参数为平均划分方式,则第二预设分片策略可以是根据该平均划分方式对目标数据表进行划分,若第二分片配置参数为划分次数,则第二预设分片策略可以是根据该划分次数对目标数据表进行划分操作。
[0097]
本公开实施例中,第一备选分片中的第二区间可以是通过读取第一备选分片中存储的数据,选取端点处的存储数据不为空的区间,例如,第一备选分片为[1,10000]的数据,其中,[1,200]中存储的数据为空,[851,10000]中存储的数据为空,则可以选取[201,850]作为第一备选分片中的第二区间。根据第二预设分片策略对第一备选分片中的第二区间进行划分,获得m个第二备选分片,可以是先根据第二分片配置参数确定对应的第二预设分片策略,按照第二预设分片策略对第一备选分片中的第二区间进行划分操作,将划分得到的片段作为第二备选分片,从而得到m个第二备选分片。
[0098]
步骤104、对n*m个第二备选分片归类,确定所述目标数据表中的目标区间,以便按
照所述目标区间切分得到所述节点数据库中的目标分片。
[0099]
本公开实施例中,由于任一节点数据库上可以得到n个第一备选分片,而对每一第一备选分片进行划分后,可以得到m个第二备选分片,因此,任一节点数据库上可以得到n*m个第二备选分片。对n*m个第二备选分片归类,可以是将n*m个第二备选分片按照同一标准归为一类,比如,可以是将每10个第二备选分片归为一类,也可以是根据预设归类算法计算,按照计算结果将第二备选分片归类,本公开对此不作限制。
[0100]
本公开实施例中,可以是将同属一个类别的多个第二备选分片分别对应的多个区间合并,将合并后的区间作为目标数据表中的一个目标区间,若将第二备选分片归为二十个类别时,则相应地可以得到二十个目标区间。进一步地,在每个节点数据库中,按照目标区间进行切分,可以得到多个目标分片,若得到10个目标区间,按照目标区间进行切分后可以得到10个目标分片。
[0101]
综上所述,本公开实施例提供的数据库分片方法,可以先确定各个节点数据库上的目标数据表,以及确定第一分片配置参数和第二分片配置参数,再针对任一节点数据库,基于第一预设分片策略对目标数据表中的第一区间进行迭代切分,获得n个第一备选分片,第一预设分片策略是根据第一分片配置参数确定的,其中n为正整数,接着,分别对每一第一备选分片,根据第二预设分片策略对第一备选分片中的第二区间进行划分,获得m个第二备选分片,第二预设分片策略是根据第二分片配置参数确定的,其中m为正整数,最后,对n*m个第二备选分片归类,确定目标数据表中的目标区间,以便按照目标区间切分得到节点数据库中的目标分片。这样,通过对数据表的迭代切分以及进一步的细粒度划分,最后得到目标分片,可以一定程度上减少每个目标分片上数据存储量的差异,进而可以避免由于个别分片上数据存储过多而出现读取数据卡机的情况,而根据每个节点数据库上的数据表进行切分,一定程度上可以减少读取数据而建立的连接数,从而可以提高在数据库上的读取效率。
[0102]
可选的,本公开实施例中上述确定各个节点数据库上的目标数据表的操作,可以具体包括:
[0103]
步骤1011、读取所述数据库中存储的元数据。
[0104]
本公开实施例中,元数据可以是数据库中描述存储数据属性的信息,比如,可以是指示数据存储位置的信息,也可以是指示数据存入顺序的信息,还可以是指示数据查找的信息,本公开对此不作限制。读取数据库中存储的元数据,可以是读取数据库中指定位置处的信息,将该信息作为数据库中的元数据,比如,数据库可以为关系型数据库,可以将数据库中的第一列作为记录元数据的位置,因此,可以通过读取第一列中记录的信息,将该信息作为数据库中的元数据。
[0105]
步骤1012、根据所述元数据,确定各个所述节点数据库中的目标数据表。
[0106]
本公开实施例中,由于元数据往往是用于指示数据存储位置的信息,因此,通过元数据中指示的存储位置,可以确定每个节点数据库中存储的数据,进而可以确定每个节点数据库中的目标数据表。
[0107]
可选的,本公开实施例中第一分片配置参数可以为目标迭代次数,上述基于第一预设分片策略对所述目标数据表中的第一区间进行迭代切分,获得n个第一备选分片的操作,可以具体包括:
[0108]
步骤1021、根据所述目标数据表中存储的目标标识值,确定所述目标数据表中的所述第一区间。
[0109]
本公开实施例中,目标标识值可以是节点数据库中的主键,即,可以是目标数据表中的一列数值,该目标标识值可以表征该列存储的数据,比如,可以为目标数据表中第一行数据设置目标标识值为0001。根据目标数据表中存储的目标标识值,确定目标数据表中的第一区间,可以是先分别确定目标数据表中首行对应的目标标识值,以及最后一行对应的目标标识值,再根据首行对应的目标标识值与最后一行对应的目标标识值确定第一区间,例如,首行对应的目标标识值为0001,最后一行对应的目标标识值为1000,则可以得到目标数据表中的第一区间为[1,1000]。
[0110]
步骤1022、利用二分法对所述第一区间按照所述目标迭代次数进行迭代切分,获得所述n个第一备选分片。
[0111]
本公开实施例中,可以是对第一区间进行二分切分,并对切分得到的片段继续进行二分切分,直到二分切分操作的次数达到目标迭代次数时,将最终切分得到的n个片段作为n个第一备选分片。
[0112]
可选的,本公开实施例中上述利用二分法对所述第一区间按照所述目标迭代次数进行迭代切分,获得所述n个第一备选分片的操作,可以具体包括:
[0113]
在执行二分切分操作的次数小于所述目标迭代次数的情况下,依次循环执行以下步骤:根据所述第一区间中存储的数据确定第一端点对;按照所述第一端点对,对所述第一区间执行所述二分切分操作,得到多个第一片段;根据所述第一片段中存储的数据确定第二端点对,按照所述第二端点对对所述多个第一片段分别执行所述二分切分操作,得到多个第二片段;在执行所述二分切分操作的次数达到所述目标迭代次数的情况下,停止所述循环执行步骤,且执行以下步骤:将停止所述循环执行步骤之后得到的所述多个第二片段,作为所述n个第一备选分片。
[0114]
本公开实施例中,端点对可以是由区间或片段的首端点与末端点组成的。本步骤中,通过确定第一区间的第一端点对,并按照第一端点对执行一次二分切分操作,得到多个第一片段,接着,再针对每一第一片段,确定第一片段上的第二端点对,并按照第二端点对执行一次二分切分操作,得到多个第二片段,以此循环执行该二分切分操作,直到执行二分切分操作的次数达到目标迭代次数的情况下,停止该循环执行步骤,并且,将停止循环执行步骤之后得到的多个第二片段,作为n个第一备选分片。通过循环执行二分切分操作,可以在确保切分得到的片段中存储有数据的同时,进一步细化切分的粒度。
[0115]
可选的,本公开实施例中所述根据所述第一区间中存储的数据确定第一端点对,包括:
[0116]
步骤s21、遍历所述第一区间中对应存储的数据,将所述数据不为空时对应的目标标识值作为有效值。
[0117]
本公开实施例中,可以是基于第一区间指示的数据,一一查询存储的数据信息,当该行中存储的数据不为空数据时,可以将该行对应的目标标识值作为有效值,当该行中存储的数据为空数据时,可以将该行对应的目标标识值作为无效值。
[0118]
步骤s22、选取位于所述第一区间中端点处的有效值,作为所述第一端点对,以筛除所述端点处存储数据为空的目标标识值。
[0119]
本公开实施例中,可以是先查询第一区间中的端点对应的目标标识值是否为有效值,当是有效值时,将该端点作为第一端点对;当不是有效值时,将沿着第一区间中点方向上的点作为待测点,确定该待测点对应的目标标识值是否为有效值,直至查询到待测点对应的目标标识值为有效值,将该待测点作为第一端点对。
[0120]
本公开实施例中,通过将端点处的有效值作为第一端点对,以筛除端点处存储数据为空的目标标识值,即,可以筛除区间之间的存储数据为空的点,从而可以保证切分得到的分片中存储有数据,以便可以过滤掉分片之间的空白数据,使得每个分片中存储的数据量可以更平均。
[0121]
示例的,目标数据表为music_account,目标标识为主键id,可以确定目标分片个数为10,目标迭代次数为3,目标划分数为1000,可以通过输入以下内容,来实现查询当前目标数据表中主键对应的第一区间,并且,利用二分切分的迭代操作来过滤切分的片段之间存储数据为空的数据段:
[0122]
select max(id)max_id,min(id)min_id from music_account
[0123]
假设获得的结果为[1,1000w],即最小id为1,最大id为1000w,然后,采用二分法切分可以获得两个片段:[1,500w)、[500w,1000w],再分别对这两个片段计算主键范围:
[0124]
select max(id)max_id,min(id)min_id from music_account where id>=1and id<5000000;
[0125]
select max(id)max_id,min(id)min_id from music_account where id>=5000000and id<10000000;
[0126]
以此类推,在二分切分获得2个片段后,再次对这些片段进行二分范围查询,按照目标迭代次数执行二分切分操作三次,最后,可以获得8个第一备选分片。
[0127]
可选的,本公开实施例中第二分片配置参数可以为目标划分数,上述根据第二预设分片策略对所述第一备选分片中的第二区间进行划分,获得m个第二备选分片的操作,可以具体包括:
[0128]
步骤1031、按照所述目标划分数对所述第二区间平均划分,得到x个第三片段;所述x为正整数。
[0129]
本公开实施例中,若目标化分数为1000份,则可以根据第二区间中对应的目标标识值,对第二区间进行平均划分为1000份,将划分得到的片段作为第三片段,从而可以得到1000个第三片段。
[0130]
步骤1032、对每一所述第三片段,遍历所述第三片段中对应存储的数据,选取端点处存储的数据不为空的片段,作为所述第二备选分片,从而得到所述m个第二备选分片;所述m不大于所述x。
[0131]
本公开实施例中,可以是针对每个第三片段,确定该第三片段中对应的端点,查询每个端点对应存储的数据是否为空,当该端点存储的数据不为空时,以该端点对划分的片段作为第二备选分片;当该端点存储的数据为空数据时,将沿着第三片段中点方向上的点作为待测点,确定该待测点存储的数据是否为空数据,直至查询到待测点存储的数据不为空时,则以该待测点划分的片段作为第二备选分片。
[0132]
需要说明的是,由于可能出现第三片段中存储数据全部为空的情况,在选取端点处存储的数据不为空的片段时,会筛除该片段,因此,会出现m不大于x的情况,即,通过平均
划分得到100个第三片段,其中有4个第三片段中存储的数据全部为空,则通过选取端点处存储的数据不为空的片段,可以得到96个第二备选分片。
[0133]
示例的,图2是本公开实施例提供的一种数据库分片切分过程的示意图,如图2所示,节点数据库中的id范围为[1,1000万],首先,对[1,1000万]执行一次二分切分操作得到[1,500万]和[500万,1000万],筛除存储的空白数据后,id范围分别为[1,202万]和[800万,1000万],其次,分别对[1,202万]与[800万,1000万]再执行一次二分切分操作,其中,[1,202万]二分切分操作得到[1,101万]和[101万,202万],筛除存储的空白数据后,[1,101万]中的id范围为[1,50万],[101万,202万]中的id范围为[200万,202万];[800万,1000万]二分切分操作得到[800万,900万]和[900万,1000万],筛除存储的空白数据后,[800万,900万]中的id范围为[800万,888万],[900万,1000万]中的id范围为[990万,1000万];最后,分别对[1,50万]、[200万,202万]、[800万,888万]、[990万,1000万]进行等分1000份,其中,[1,50万]的等分1000份为[1,500]、[500、1000]

[49万,50万]。
[0134]
可选的,本公开实施例中上述对n*m个第二备选分片归类,确定所述目标数据表中的目标区间的操作,可以具体包括:
[0135]
步骤1041、利用预设分类算法,对所述n*m个第二备选分片按照目标分片个数p进行分类,将每一分类结果作为一个目标区间,从而得到所述目标数据表中的p个目标区间;所述p为正整数。
[0136]
本公开实施例中,预设分类算法可以是哈希归类中的除余法,也可以是贝叶斯(bayes)分类算法,还可以是人工神经网络(artificial neural networks,ann)算法,对此本公开不作限制。假设预设分类算法为哈希归类中的除余法,通过对n*m个第二备选分片进行标号,将该标号与目标分片个数p相除,取余数作为散列地址,将n*m个第二备选分片按照散列地址进行归类,得到p个归类结果,其中,一个分类结果作为一个目标区间,则可以得到目标数据表中的p个目标区间。
[0137]
需要说明的是,目标分片个数p可以是根据第二分片配置参数确定的,即,目标分片个数p可以根据目标划分数确定的,比如,可以是目标划分数的一百分之一,目标划分数为1000份,则目标分片个数p为10。目标分片数p也可以是与第二分片配置参数的具体数值无关的,而是由用户输入的指定数据确定的,比如,用户输入“p=5”,则可以确定目标分片个数为5个。由于第二分片配置参数是用于表征细粒度划分的参数,即,第二分片配置参数中的划分数值往往较大,而数据库中的分片个数在保证数据库处理效率的前提下,数据库的分片个数往往相较于细粒度划分的数值较小,因此,在确定了细粒度划分的参数,同时,还需要确定目标分片个数。
[0138]
示例的,图3是本公开实施例提供的又一种数据库分片切分过程的示意图,如图3所示,对节点数据库1进行迭代分片操作,可以得到备选分片1为[1,500)、备选分片2为[500,1000)、备选分片3为[1500,2000)
……
备选分片1000为[9999500,1000万],再对各个备选分片进行哈希归类操作,可以得到目标分片1、目标分片2、目标分片3、
……
目标分片10,每个目标分片中存储的数据可以对应一个处理业务,分别是处理业务1、处理业务2、处理业务3、
……
处理业务10。对分布式数据库中的其他节点数据库分别执行上述操作,在此不再赘述,以便各个节点数据库上的各个目标分片对应不同的处理业务。
[0139]
示例的,图4是本公开实施例提供的一种数据库分片切分流程示意图,如图4所示,
步骤s1、判断数据库是否为分布式数据库,即,该数据库是否存在多个物理节点,当数据库是分布式数据库时,则执行步骤s2;当数据库不是分布式数据库时,则执行步骤s3;步骤s2、按照数据库节点进行分片;步骤s3、针对每个数据库节点的数据表进行二分查找过滤存储数据为空的部分;步骤s4、针对过滤后的每个区域,进行细粒度分片;步骤s5、将得到的细粒度分片利用哈希归类,得到多个目标分片。
[0140]
可选的,本公开实施例还可以执行以下步骤:
[0141]
步骤s51、接收获取数据请求。
[0142]
本公开实施例中,数据库可以接收其他电子设备发送的获取数据请求。该获取数据请求可以待获取数据的特征,比如,可以是待获取数据的存入时间,也可以是待获取数据的属性,等等。
[0143]
步骤s52、响应于所述获取数据请求,允许在所述目标分片上读取数据。
[0144]
本公开实施例中,数据库响应于该获取数据请求,允许该电子设备根据获取数据请求在目标分片上读取数据。相较于现有技术中以数据库中存储的数据作为整体来分片,本公开实施例是基于每个节点数据库上的数据表进行分片的,则可以一定程度上可以减少同一数据存储在多个节点数据库上的情况,从而可以减少与数据库建立连接的个数,进一步地,通过二分迭代切分和平均划分得到目标分片,使得每个分片上存储数据的数量相差较小,从而在读取每个分片上数据所需的时间大致相同,进而可以提高读取数据库数据的效率。
[0145]
示例的,图5是现有技术提供的一种数据库分片示意图,如图5所示,分布式数据库包含节点数据库1、节点数据库2、节点数据库3、节点数据库4、节点数据库5,其中,节点数据库1中存储有一万条数据,数据区间为[0,1万],节点数据库2中存储有五千条数据,数据区间为[1万,2万],节点数据库3中存储有一千条数据,数据区间为[2万,3万],节点数据库4中存储有五千条数据,数据区间为[3万,4万],节点数据库5中存储有五千条数据,数据区间为[4万,5万]。电子设备1要读取分布式数据库中的数据时,需要与节点数据库1、节点数据库2、节点数据库4建立连接;电子设备2要读取分布式数据库中的数据时,需要与节点数据库1、节点数据库2、节点数据库4建立连接;电子设备3要读取分布式数据库中的数据时,需要与节点数据库1、节点数据库2、节点数据库5建立连接,即,节点数据库1中由于存储的数据最多,使得节点数据库1需要同时跟电子设备1、电子设备2、电子设备3建立连接关系,而由于节点数据库3上存储的数据最少,电子设备读取节点数据库3上的数据概率最小,大多数时间内节点数据库3无需跟电子设备建立连接关系。可见,由于现有技术中是根据分布式数据库中存储的所有数据进行分片,从而使得各个节点数据库上存储的数据量并不相同,有的节点数据库上存储的数据较多,而有的节点数据库上存储的数据较少,使得在电子设备读取分布式数据库上的数据时,往往会出现电子设备需要读取的数据存储在多个节点数据库上,使得电子设备需要同时与多个节点数据库之间建立连接关系,而与电子设备建立连接数较多的节点数据库由于需要同时处理多个读取事务,往往容易出现死机情况,相应地,也会影响电子设备在节点数据库上的读取数据所需的时间,从而影响数据库上的读取效率。进一步地,由于与节点数据库建立连接关系往往受到节点数据库与电子设备两方的通信状态,因此,当电子设备与多个节点数据库之间同时建立连接关系时,对节点数据库与电子设备的通信状态要求较高,很容易出现连接关系不通的情况,从而也会影响电子设备读
取数据的效率。
[0146]
示例的,图6是本公开实施例提供的一种数据库分片示意图,如图6所示,分布式数据库包含节点数据库1、节点数据库2、节点数据库3、节点数据库4、节点数据库5,其中,每个节点数据库中都分别划分有10个分片,电子设备1要读取分布式数据库中的数据时,只需要与节点数据库1中的各个分片建立连接即可;电子设备2要读取分布式数据库中的数据时,只需要与节点数据库2中的各个分片建立连接即可;电子设备3要读取分布式数据库中的数据时,只需要与节点数据库3中的各个分片建立连接即可。由此可见,本公开实施例中,是基于每个节点数据库上存储的数据,对该节点数据库进行切分得到的多个分片,使得每个分片上存储的数据相差不大,在电子设备读取数据时往往可以减少与不同节点数据库之间建立连接关系,而只需与一个节点数据库建立连接关系就可同时读取该节点数据库中多个分片上的数据,大大降低了由于建立多个连接关系而导致的连接不通的情况,从而可以方便电子设备在数据库上执行读取数据的操作,进而可以提高在数据库上的读取效率。
[0147]
图7是本公开实施例提供的一种数据库分片装置的框图,该装置应用于多节点数据库,如图4所示,该装置40可以包括:
[0148]
第一确定模块401,用于确定各个节点数据库上的目标数据表,以及确定第一分片配置参数和第二分片配置参数;
[0149]
切分模块402,用于针对任一所述节点数据库,基于第一预设分片策略对所述目标数据表中的第一区间进行迭代切分,获得n个第一备选分片;所述第一预设分片策略是根据所述第一分片配置参数确定的;所述n为正整数;
[0150]
划分模块403,用于分别对每一所述第一备选分片,根据第二预设分片策略对所述第一备选分片中的第二区间进行划分,获得m个第二备选分片;所述第二预设分片策略是根据所述第二分片配置参数确定的;所述m为正整数;
[0151]
第二确定模块404,用于对n*m个第二备选分片归类,确定所述目标数据表中的目标区间,以便按照所述目标区间切分得到所述节点数据库中的目标分片。
[0152]
综上所述,本公开实施例提供的数据库分片装置,可以先确定各个节点数据库上的目标数据表,以及确定第一分片配置参数和第二分片配置参数,再针对任一节点数据库,基于第一预设分片策略对目标数据表中的第一区间进行迭代切分,获得n个第一备选分片,第一预设分片策略是根据第一分片配置参数确定的,其中n为正整数,接着,分别对每一第一备选分片,根据第二预设分片策略对第一备选分片中的第二区间进行划分,获得m个第二备选分片,第二预设分片策略是根据第二分片配置参数确定的,其中m为正整数,最后,对n*m个第二备选分片归类,确定目标数据表中的目标区间,以便按照目标区间切分得到节点数据库中的目标分片。这样,通过对数据表的迭代切分以及进一步的细粒度划分,最后得到目标分片,可以一定程度上减少每个目标分片上数据存储量的差异,进而可以避免由于个别分片上数据存储过多而出现读取数据卡机的情况,而根据每个节点数据库上的数据表进行切分,一定程度上可以减少读取数据而建立的连接数,从而可以提高在数据库上的读取效率。
[0153]
可选的,所述第一分片配置参数为目标迭代次数;
[0154]
所述切分模块402,还具体用于:
[0155]
根据所述目标数据表中存储的目标标识值,确定所述目标数据表中的所述第一区
间;
[0156]
利用二分法对所述第一区间按照所述目标迭代次数进行迭代切分,获得所述n个第一备选分片。
[0157]
可选的,所述切分模块402,还具体用于:
[0158]
在执行二分切分操作的次数小于所述目标迭代次数的情况下,依次循环执行以下步骤:
[0159]
根据所述第一区间中存储的数据确定第一端点对;
[0160]
按照所述第一端点对,对所述第一区间执行所述二分切分操作,得到多个第一片段;
[0161]
根据所述第一片段中存储的数据确定第二端点对,按照所述第二端点对对所述多个第一片段分别执行所述二分切分操作,得到多个第二片段;
[0162]
在执行所述二分切分操作的次数达到所述目标迭代次数的情况下,停止所述循环执行步骤,且执行以下步骤:
[0163]
将停止所述循环执行步骤之后得到的所述多个第二片段,作为所述n个第一备选分片。
[0164]
可选的,所述切分模块402,还具体用于:
[0165]
遍历所述第一区间中对应存储的数据,将所述数据不为空时对应的目标标识值作为有效值;
[0166]
选取位于所述第一区间中端点处的有效值,作为所述第一端点对,以筛除所述端点处存储数据为空的目标标识值。
[0167]
可选的,所述第二分片配置参数为目标划分数;
[0168]
所述划分模块403,还具体用于:
[0169]
按照所述目标划分数对所述第二区间平均划分,得到x个第三片段;所述x为正整数;
[0170]
对每一所述第三片段,遍历所述第三片段中对应存储的数据,选取端点处存储的数据不为空的片段,作为所述第二备选分片,从而得到所述m个第二备选分片;所述m不大于所述x。
[0171]
可选的,所述第二确定模块404,还具体用于:
[0172]
利用预设分类算法,对所述n*m个第二备选分片按照目标分片个数p进行分类,将每一分类结果作为一个目标区间,从而得到所述目标数据表中的p个目标区间;所述p为正整数。
[0173]
可选的,所述装置40还包括:
[0174]
接收模块,用于接收获取数据请求;
[0175]
读取模块,用于响应于所述获取数据请求,允许在所述目标分片上读取数据。
[0176]
可选的,所述第一确定模块401,还具体用于:
[0177]
读取所述数据库中存储的元数据;
[0178]
根据所述元数据,确定各个所述节点数据库中的目标数据表。
[0179]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0180]
根据本公开的一个实施例,提供了一种电子设备,包括:处理器、用于存储处理器可执行指令的存储器,其中,处理器被配置为执行时实现如上述任一个实施例中的数据库分片方法中的步骤。
[0181]
根据本公开的一个实施例,还提供了一种非临时性计算机可读存储介质,当存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行如上述任一个实施例中的数据库分片方法中的步骤。
[0182]
根据本公开的一个实施例,还提供了一种计算机程序产品,该计算机程序产品包括可读性程序代码,该可读性程序代码由移动终端的处理器执行时,使得移动终端能够执行如上述任一个实施例中的数据库分片方法中的步骤。
[0183]
图8是根据一示例性实施例示出的一种用于数据库分片的装置的框图。例如,装置500可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0184]
参照图8,装置500可以包括以下一个或多个组件:处理组件502,存储器504,电源组件506,多媒体组件508,音频组件510,输入/输出(i/o)的接口512,传感器组件514,以及通信组件516。
[0185]
处理组件502通常控制装置500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件502可以包括一个或多个处理器520来执行指令,以完成上述的数据库分片方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。
[0186]
存储器504被配置为存储各种类型的数据以支持在设备500的操作。这些数据的示例包括用于在装置500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
[0187]
电源组件506为装置500的各种组件提供电力。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为装置500生成、管理和分配电力相关联的组件。
[0188]
多媒体组件508包括在所述装置500和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件508包括一个前置摄像头和/或后置摄像头。当设备500处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0189]
音频组件510被配置为输出和/或输入音频信号。例如,音频组件510包括一个麦克风(mic),当装置500处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504或经由通信组
件516发送。在一些实施例中,音频组件510还包括一个扬声器,用于输出音频信号。
[0190]
i/o接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0191]
传感器组件514包括一个或多个传感器,用于为装置500提供各个方面的状态评估。例如,传感器组件514可以检测到设备500的打开/关闭状态,组件的相对定位,例如所述组件为装置500的显示器和小键盘,传感器组件514还可以检测装置500或装置500一个组件的位置改变,用户与装置500接触的存在或不存在,装置500方位或加速/减速和装置500的温度变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件514还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0192]
通信组件516被配置为便于装置500和其他设备之间有线或无线方式的通信。装置500可以接入基于通信标准的无线网络,如wifi,运营商网络(如2g、3g、4g或5g),或它们的组合。在一个示例性实施例中,通信组件516经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件516还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
[0193]
在示例性实施例中,装置500可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述数据库分片方法。
[0194]
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器504,上述指令可由装置500的处理器520执行以完成上述数据库分片方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd

rom、磁带、软盘和光数据存储设备等。
[0195]
图9是根据一示例性实施例示出的一种用于数据库分片的装置的框图。例如,装置600可以被提供为一服务器。参照图9,装置600包括处理组件622,其进一步包括一个或多个处理器,以及由存储器632所代表的存储器资源,用于存储可由处理组件622的执行的指令,例如应用程序。存储器632中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件622被配置为执行指令,以执行上述数据库分片方法。
[0196]
装置600还可以包括一个电源组件626被配置为执行装置600的电源管理,一个有线或无线网络接口650被配置为将装置600连接到网络,和一个输入输出(i/o)接口658。装置600可以操作基于存储在存储器632的操作系统,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm或类似。
[0197]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0198]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1