数据存储方法、装置和电子设备与流程

文档序号:31848266发布日期:2022-10-19 00:25阅读:51来源:国知局
数据存储方法、装置和电子设备与流程

1.本公开涉及数据处理技术领域,尤其涉及一种数据存储方法、装置和电子设备。


背景技术:

2.互联网高度成熟的今天,每个软件系统时时刻刻都在产生大量的数据,为了更快的读写速度,更好的用户体验,将数据进行分库分表就成了很重要的一个环节。目前主流的分库分表方法存在数据存储分布不均匀的情况。
3.因此,提出一种数据存储方法以解决数据存储分布不均匀的问题是当前亟待解决的问题。


技术实现要素:

4.本公开提供一种数据存储方法、装置和电子设备,用以解决现有技术中数据存储分布不均匀的缺陷,实现均匀分布的数据存储。
5.本公开提供一种数据存储方法,包括:
6.获取业务拆分键信息;
7.根据预定义的虚拟节点和所述业务拆分键信息,确定所述业务拆分键信息与所述虚拟节点的第一映射关系,其中,所述虚拟节点与物理节点具有预定义的第二映射关系;
8.获取所述业务拆分键信息对应的数据,根据所述第一映射关系和所述第二映射关系,将所述业务拆分键信息对应的数据存储在所述物理节点中。
9.根据本公开提供的一种数据存储方法,所述第一映射关系通过以下方法确定,包括:
10.根据所述业务拆分键信息进行哈希运算,得到业务拆分键哈希值;
11.根据所述业务拆分键哈希值确定所述业务拆分键信息对应的虚拟节点。
12.根据本公开提供的一种数据存储方法,根据所述业务拆分键哈希值确定对应的虚拟节点,包括:
13.将所述业务拆分键哈希值按照所述虚拟节点的数量进行取余,得到哈希值余数;
14.根据所述哈希值余数确定所述业务拆分键信息对应的虚拟节点。
15.根据本公开提供的一种数据存储方法,所述第二映射关系通过以下方法确定,包括:
16.根据物理节点的数量确定虚拟节点的数量;
17.按照预设规则确定所述虚拟节点对应的物理节点。
18.根据本公开提供的一种数据存储方法,所述根据物理节点的数量确定虚拟节点的数量,包括:
19.获取物理节点的数量;
20.配置稀释因子;
21.根据所述物理节点的数量和所述稀释因子确定虚拟节点的数量。
22.根据本公开提供的一种数据存储方法,在所述物理节点的数量和所述虚拟节点的数量变化的情况下,所述方法还包括:
23.更新所述第一映射关系和所述第二映射关系,得到更新后的第一映射关系和更新后的第二映射关系;
24.根据更新后的第一映射关系和更新后的第二映射关系,将所述业务拆分键信息对应的数据存储在对应的所述物理节点中。
25.本公开还提供一种数据存储装置,包括:
26.获取单元,用于获取业务拆分键信息;
27.映射单元,用于根据预定义的虚拟节点和所述业务拆分键信息,确定所述业务拆分键信息与所述虚拟节点的第一映射关系,其中,所述虚拟节点与物理节点具有预定义的第二映射关系;
28.存储单元,用于获取所述业务拆分键信息对应的数据,根据所述第一映射关系和所述第二映射关系,将所述业务拆分键信息对应的数据存储在所述物理节点中。
29.本公开还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一种所述数据存储方法的步骤。
30.本公开还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述数据存储方法的步骤。
31.本公开还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述数据存储方法的步骤。
32.本公开提供的数据存储方法、装置和电子设备,通过获取业务拆分键信息,根据预定义的虚拟节点和业务拆分键信息,确定业务拆分键信息与虚拟节点的第一映射关系,其中,虚拟节点与物理节点具有预定义的第二映射关系,获取业务拆分键信息对应的数据,根据第一映射关系和第二映射关系,将业务拆分键信息对应的数据存储在物理节点中。由于实现数据存储的物理节点的数量相对较少,通过在数据和物理节点之间加入虚拟节点的方式,将数据根据相对较多的虚拟节点的数量进行数据分配进而实现数据分布均匀的效果,再根据虚拟节点和物理节点的映射关系将数据存储至物理节点,从而实现数据存储的分布均匀的效果。
附图说明
33.为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
34.图1是本公开提供的分段颗粒度示意图;
35.图2是本公开提供的数据存储方法的流程示意图之一;
36.图3是本公开提供的第二映射关系示意图;
37.图4是本公开提供的数据存储方法的流程示意图之二;
38.图5是本公开提供的第一映射关系和第二映射关系示意图之一;
39.图6是本公开提供的数据存储方法的流程示意图之三;
40.图7是本公开提供的数据存储方法的流程示意图之四;
41.图8是本公开提供的第一映射关系和第二映射关系示意图之二;
42.图9是本公开提供的数据存储装置的结构示意图;
43.图10是本公开提供的电子设备的结构示意图。
具体实施方式
44.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开实施例一部分实施例,而不是全部的实施例。基于本公开实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开实施例保护的范围。
45.一个基本的共识:有限的数据集合内,分段颗粒度越细,各个分段间的数据量差异越小。如图1所示,假设以6为步长分为上下两组,上下两组分别是6个数和3个数,个数差值是3;假设以2为步长,按纵向分为6组,那每组的数字个数由下往上分别是:2、2、2、1、1、1,差值是1。因此,在数据量有限时,无限的细化分组的粒度,那每组的分布就会尽可能趋于均匀。
46.数据存储也是同样的原理,对于存储数据分布不均匀的数据库和数据表等这些物理节点,尽可能的增加数量,最后也会趋于相对均匀,但这个方案显然是不可行的,因为硬件资源一定是有限的。本公开借助稀释的思想,数据库和数据表等物理节点数量有限,可以把有限的物理节点稀释,变成足够多的虚拟节点,再让这些虚拟节点暂时代替物理节点进行数据分配,最后通过虚拟节点找到物理节点,将数据存储至物理节点,实现尽可能达到数据分布均衡。
47.本公开提供一种数据存储方法,如图2所示,包括:
48.s21、获取业务拆分键信息。
49.s22、根据预定义的虚拟节点和所述业务拆分键信息,确定所述业务拆分键信息与所述虚拟节点的第一映射关系,其中,所述虚拟节点与物理节点具有预定义的第二映射关系。
50.s23、获取所述业务拆分键信息对应的数据,根据所述第一映射关系和所述第二映射关系,将所述业务拆分键信息对应的数据存储在所述物理节点中。
51.具体地,一个示例中,如图3所示,假设只有4个物理节点,如图3所示,即n1~n4。例如将业务拆分键信息进行哈希运算,按照哈希运算结果直接分配至这4个物理节点,或者业务拆分键信息采用名值对格式,直接根据业务拆分键信息名值对中的值将业务拆分键信息映射至这4个物理节点,将导致4个物理节点的数据量分布不均。这种情况下采用稀释的思想,设置一部分虚拟节点,设定这些虚拟节点与真实的物理节点映射关系,如图3所示,虚拟节点v1~v16分别对应于物理节点n1~n4。这样根据业务拆分键信息的哈希运算结果或名值对中的值建立与这16个虚拟节点的映射关系,使得业务拆分键信息分布得更加均匀。根据业务拆分键信息与虚拟节点的映射关系以及虚拟节点与物理节点的映射关系,当虚拟节点尽可能多时,将业务拆分键信息对应的数据存储在物理节点中,此时数据分布也就相对
的均匀,解决了分布集中的问题。
52.本公开实施例中,通过获取业务拆分键信息,根据预定义的虚拟节点和业务拆分键信息,确定业务拆分键信息与虚拟节点的第一映射关系,其中,虚拟节点与物理节点具有预定义的第二映射关系,根据第一映射关系和第二映射关系,将业务拆分键信息对应的数据存储在物理节点中。由于实现数据存储的物理节点的数量相对较少,通过在数据和物理节点之间加入虚拟节点的方式,将数据根据相对较多的虚拟节点的数量进行数据分配进而实现数据分布均匀的效果,再根据虚拟节点和物理节点的映射关系将数据存储至物理节点,从而实现数据存储的分布均匀的效果。
53.根据本公开提供的一种数据存储方法,如图4所示,所述第一映射关系通过以下方法确定,包括s41-s42:
54.s41、根据所述业务拆分键信息进行哈希运算,得到业务拆分键哈希值。
55.s42、根据所述业务拆分键哈希值确定所述业务拆分键信息对应的虚拟节点。
56.业务拆分键哈希值的数值大小不一,可以设定哈希值分段范围,设定处于分段范围内的业务拆分键信息与虚拟节点的映射关系,也可以根据业务拆分键哈希值进行取余,通过余数确定业务拆分键信息对应的虚拟节点。
57.可选的,步骤s42可以具体为:
58.s421、将所述业务拆分键哈希值按照所述虚拟节点的数量进行取余,得到哈希值余数。
59.s422、根据所述哈希值余数确定所述业务拆分键信息对应的虚拟节点。
60.具体地,一个示例中,约束数据库的物理节点和虚拟节点都是2的次幂,例如2、4、8、16等,此时就会满足公式:x%n=x&(n-1),其中x表示业务拆分键哈希值,n表示虚拟节点的数量,通过与运算实现取余的操作。如图5所示,假设有业务拆分键key1、key2、key3,哈希运算结果即哈希值分别是1、3、11,物理节点为n1~n2共2个,虚拟节点为v1~v8共8个,虚拟节点与物理节点的映射关系参考图5。
61.按照如上公式计算得到对应的哈希值余数r1~r3:
62.r1=1&(8-1)=0001&0111=0001=1,表示对于业务拆分键key1,取v1虚拟节点,对应的物理节点为n1;
63.r2=3&(8-1)=0011&0111=0011=3,表示对于业务拆分键key2,取v3虚拟节点,对应的物理节点为n1;
64.r3=11&(8-1)=1011&0111=0011=3,表示对于业务拆分键key3,取v3虚拟节点,对应的物理节点为n1。
65.本公开实施例中,通过根据业务拆分键信息进行哈希运算,得到业务拆分键哈希值,实现通过简便、占用资源较少的方式表示业务拆分键,根据业务拆分键哈希值确定业务拆分键信息对应的虚拟节点,实现方便、快捷地确定业务拆分键也虚拟节点的映射关系。
66.根据本公开提供的一种数据存储方法,如图6所示,所述第二映射关系通过以下方法确定,包括s61-s62:
67.s61、根据物理节点的数量确定虚拟节点的数量。
68.具体地,虚拟节点的数量虽然可以设置为无数多,但是过多的虚拟节点将不再具有意义,并且将会在确定虚拟节点和物理节点时耗费更多的资源,因此可以根据物理节点
的数量来设定虚拟节点的数量,以实现将物理节点充分稀释且不浪费资源。
69.可选的,步骤s61可以具体为s611-s613:
70.s611、获取物理节点的数量。
71.s612、配置稀释因子。
72.s613、根据所述物理节点的数量和所述稀释因子确定虚拟节点的数量。
73.具体地,可以根据实际需求以及资源考虑设定稀释因子,根据物理节点的数量和稀释因子计算得到虚拟节点的数量。
74.s62、按照预设规则确定所述虚拟节点对应的物理节点。
75.具体地,在确定完成虚拟节点的数量后可以按照预设规则确定虚拟节点对应的物理节点。预设规则可以根据实际需要进行设定,可选的,为实现更好的分布均匀,可以将相邻的虚拟节点穿插设置对应不同的物理节点,例如:虚拟节点v1~v4,物理节点n1~n2,设置虚拟节点v1对应的物理节点为n1,虚拟节点v2对应的物理节点为n2,虚拟节点v3对应的物理节点为n1,虚拟节点v4对应的物理节点为n2。
76.一个示例中,结合上述多个示例的一个完整的数据存储流程如图7所示,包括:
77.s71、获取数据库、数据表等物理节点的数量(p);
78.s72、获取配置的稀释因子(d);
79.s73、根据物理节点的数量(p)和稀释因子(d)计算虚拟节点的数量(v);
80.s74、计算业务拆分键哈希值(h);
81.s75、根据业务拆分键哈希值(h)计算哈希值余数(r);
82.s76、通过哈希值余数(r)找到对应的虚拟节点v(r);
83.s77、获取对应的虚拟节点v(r)对应的物理节点,将业务拆分键对应的数据存储至该物理节点。
84.上述步骤s71-s77已在前文相应的步骤中进行了叙述,具体细节可以参考前文相应的实施例,在此不再赘述。
85.本公开实施例中,通过根据物理节点的数量确定虚拟节点的数量,按照预设规则确定虚拟节点和物理节点的对应关系,实现将物理节点充分稀释且不浪费资源,并且设置了促成数据分布均匀的第二映射关系。
86.根据本公开提供的一种数据存储方法,在所述物理节点的数量和所述虚拟节点的数量变化的情况下,所述方法还包括:
87.更新所述第一映射关系和所述第二映射关系,得到更新后的第一映射关系和更新后的第二映射关系;
88.根据更新后的第一映射关系和更新后的第二映射关系,将所述业务拆分键信息对应的数据存储在对应的所述物理节点中。
89.具体地,更新第一映射关系和第二映射关系的方法可以参考步骤s41-s42以及s61-s62,在此不再赘述。
90.接图5对应的示例,如图8所示,在扩容2倍后(物理节点和虚拟节点一起扩容2倍),物理节点为n1~n4共4个,虚拟节点为v1~v16共16个,此时业务拆分键key1、key2、key3,哈希运算结果即哈希值分别是1、3、11,虚拟节点与物理节点的映射关系参考图7,计算得到对应的新的哈希值余数r1~r3:
91.r1=1&(16-1)=0001&1111=0001=1,表示对于业务拆分键key1,取v1虚拟节点,对应的物理节点为n1;
92.r2=3&(16-1)=0011&1111=0011=3,表示对于业务拆分键key2,取v3虚拟节点,对应的物理节点为n3;
93.r3=11&(16-1)=1011&1111=1011=11,表示对于业务拆分键key3,取v11虚拟节点,对应的物理节点为n3。
94.由此可见,当扩容时,就会满足当前节点的数据重新计算取余后,要么还在当前的位置,要么移动到当前位置偏移扩容数量的位置,实现简单的扩容并且扩容之后数据存储依旧分布均匀的效果。
95.本公开实施例中,通过更新第一映射关系和第二映射关系,得到更新后的第一映射关系和更新后的第二映射关系,根据更新后的第一映射关系和更新后的第二映射关系,将业务拆分键信息对应的数据存储在对应的物理节点中。实现简单的扩容并且扩容之后数据存储依旧分布均匀的效果。
96.下面对本公开实施例提供的数据存储装置进行描述,下文描述的数据存储装置与上文描述的数据存储方法可相互对应参照。
97.本公开还提供一种数据存储装置,如图9所示,包括:
98.获取单元91,用于获取业务拆分键信息。
99.映射单元92,用于根据预定义的虚拟节点和所述业务拆分键信息,确定所述业务拆分键信息与所述虚拟节点的第一映射关系,其中,所述虚拟节点与物理节点具有预定义的第二映射关系。
100.存储单元93,用于获取所述业务拆分键信息对应的数据,根据所述第一映射关系和所述第二映射关系,将所述业务拆分键信息对应的数据存储在所述物理节点中。
101.通过获取业务拆分键信息,根据预定义的虚拟节点和业务拆分键信息,确定业务拆分键信息与虚拟节点的第一映射关系,其中,虚拟节点与物理节点具有预定义的第二映射关系,获取业务拆分键信息对应的数据,根据第一映射关系和第二映射关系,将业务拆分键信息对应的数据存储在物理节点中。由于实现数据存储的物理节点的数量相对较少,通过在数据和物理节点之间加入虚拟节点的方式,将数据根据相对较多的虚拟节点的数量进行数据分配进而实现数据分布均匀的效果,再根据虚拟节点和物理节点的映射关系将数据存储至物理节点,从而实现数据存储的分布均匀的效果。
102.根据本公开提供的一种数据存储装置,所述第一映射关系通过以下方法确定,包括:
103.根据所述业务拆分键信息进行哈希运算,得到业务拆分键哈希值;
104.根据所述业务拆分键哈希值确定所述业务拆分键信息对应的虚拟节点。
105.根据本公开提供的一种数据存储装置,根据所述业务拆分键哈希值确定对应的虚拟节点,包括:
106.将所述业务拆分键哈希值按照所述虚拟节点的数量进行取余,得到哈希值余数;
107.根据所述哈希值余数确定所述业务拆分键信息对应的虚拟节点。
108.根据本公开提供的一种数据存储装置,所述第二映射关系通过以下方法确定,包括:
109.根据物理节点的数量确定虚拟节点的数量;
110.按照预设规则确定所述虚拟节点对应的物理节点。
111.根据本公开提供的一种数据存储装置,所述根据物理节点的数量确定虚拟节点的数量,包括:
112.获取物理节点的数量;
113.配置稀释因子;
114.根据所述物理节点的数量和所述稀释因子确定虚拟节点的数量。
115.根据本公开提供的一种数据存储装置,在所述物理节点的数量和所述虚拟节点的数量变化的情况下,所述方法还包括:
116.更新所述第一映射关系和所述第二映射关系,得到更新后的第一映射关系和更新后的第二映射关系;
117.根据更新后的第一映射关系和更新后的第二映射关系,将所述业务拆分键信息对应的数据存储在对应的所述物理节点中。
118.图10示例了一种电子设备的实体结构示意图,如图10所示,该电子设备可以包括:处理器(processor)1010、通信接口(communications interface)1020、存储器(memory)1030和通信总线1040,其中,处理器1010,通信接口1020,存储器1030通过通信总线1040完成相互间的通信。处理器1010可以调用存储器1030中的逻辑指令,以执行数据存储方法,该方法包括:获取业务拆分键信息;根据预定义的虚拟节点和所述业务拆分键信息,确定所述业务拆分键信息与所述虚拟节点的第一映射关系,其中,所述虚拟节点与物理节点具有预定义的第二映射关系;获取所述业务拆分键信息对应的数据,根据所述第一映射关系和所述第二映射关系,将所述业务拆分键信息对应的数据存储在所述物理节点中。
119.此外,上述的存储器1030中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
120.另一方面,本公开还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的数据存储方法,该方法包括:获取业务拆分键信息;根据预定义的虚拟节点和所述业务拆分键信息,确定所述业务拆分键信息与所述虚拟节点的第一映射关系,其中,所述虚拟节点与物理节点具有预定义的第二映射关系;获取所述业务拆分键信息对应的数据,根据所述第一映射关系和所述第二映射关系,将所述业务拆分键信息对应的数据存储在所述物理节点中。
121.又一方面,本公开还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的数据存储方法,该方法包括:获取业务拆分键信息;根据预定义的虚拟节点和所述业务拆分键信息,确定所述业务拆分键
信息与所述虚拟节点的第一映射关系,其中,所述虚拟节点与物理节点具有预定义的第二映射关系;根据所述第一映射关系和所述第二映射关系,将所述业务拆分键信息对应的数据存储在所述物理节点中。
122.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
123.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
124.最后应说明的是:以上实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1