CN113127480A - 一种数据的管理方法及装置 - Google Patents
一种数据的管理方法及装置 Download PDFInfo
- Publication number
- CN113127480A CN113127480A CN201911421779.3A CN201911421779A CN113127480A CN 113127480 A CN113127480 A CN 113127480A CN 201911421779 A CN201911421779 A CN 201911421779A CN 113127480 A CN113127480 A CN 113127480A
- Authority
- CN
- China
- Prior art keywords
- database
- data
- identification value
- storage
- database group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据的管理方法及装置,所述方法包括:在请求写入数据或读取数据时,获取所述数据的标识值;确定所述标识值对应的数据库组;其中,每个所述数据库组用于存储所述标识值在所述数据库组对应的预设范围内的数据;计算得到所述标识值除以所述数据库组对应的预设目标值的余数;从所述数据库组中确定出与所述余数存在预设对应关系的数据库;在所述数据库中响应所述数据的写操作或读操作。在基于存储范围确定相应的数据库组后,通过取模的方式保证了数据均匀落到数据库组的多个数据库中,有效地避免了热点问题。并且,在扩容时可直接扩充另一个数据库组,不影响其他数据库组的数据库和存储表的数量,保证了先前存储的数据的正常访问。
Description
技术领域
本申请涉及数据管理技术领域,特别涉及一种数据的管理方法及装置。
背景技术
随着业务数据量的增加,数据库中数据的存储量和访问量也不断的增加。现有技术通常会通过分表的方式,将数据库中的一个存储表分为多个存储表,降低单个存储表的数据量,从而减少数据查询时间,提高数据的访问效率。以及通过分库的方式,将数据库分为多个数据库,从而实现并发访问。
现有技术中,基于分表和分库的存储方式通常有两种方式。一种是基于哈希取模的方式,通过数据的标识值除以数据库或存储表的总数量的余数,与数据库或存储表的对应关系,确定数据的存储位置。但是这种方式在增加存储表或数据库进行扩容时,数据库或存储表的总数量将会增加,那么对于同一标识值,计算得到余数也就会发生变化,从而将会造成确定出的数据库或存储表并非先前存储该数据的数据库或存储表,导致无法访问到先前存储的数据。
另一种则是基于存储范围的方式,预先为每个存储表或数据库,设定相应的存储范围,以分别存储标识值在对应的存储范围内的数据。但是,在一段时间内的数据的标识值,大多属于同一存储范围内,所以会造成数据的存储或访问主要集中在某个存储表或数据库上,从而出现热点问题。
所以如何在通过分表和分库的方式存储数据时,有效地避免出现热点问题,又能解决扩容后出现的无法访问数据的情况,显得尤为重要。
发明内容
基于上述现有技术的不足,本申请提供了一种数据的管理方法及装置,以解决现有通过分表和分库进行数据存储时,存在的热点问题以及在扩容后出现的无法访问数据的情况,从而造成无法正常进行扩容的问题。
为了实现上述目的,本申请提供了以下技术方案:
本申请第一方面提供了一种数据的管理方法,包括:
在请求写入数据或读取数据时,获取所述数据的标识值;
确定所述标识值对应的数据库组;其中,每个所述数据库组用于存储所述标识值在所述数据库组对应的预设范围内的数据;
计算得到所述标识值除以所述数据库组对应的预设目标值的余数;
从所述数据库组中确定出与所述余数存在预设对应关系的数据库;
在所述数据库中响应所述数据的写操作或读操作。
可选地,在上述的方法中,所述在请求写入数据时,获取所述数据的标识值,包括:
在请求写入数据时,生成所述数据对应的唯一标识;
对所述标识进行哈希计算,得到所述数据的标识值;其中,一个数据对应一个标识值;所述标识值为有序的,并且随着数据写入的时间不断递增的数值。
可选地,在上述的方法中,所述请求读取数据时,获取所述数据的标识值,包括:
在请求读取数据时,从所述请求的目标字段中获取所述数据对应的标识;
对所述标识进行哈希计算,得到所述数据的标识值。
可选地,在上述的方法中,所述计算得到所述标识值除以所述数据库组对应的预设目标值的余数,包括:
计算得到所述标识值除以所述数据库组中的存储表的总数量的余数;其中,每个所述数据库预先划分有至少一个所述存储表;所述数据库对应的所述余数的数量等于所述数据库中的所述存储表的数量。
可选地,在上述的方法中,所述在所述数据库中响应所述数据的写操作或读操作,包括:
从确定出的所述数据库中,确定出与所述标识值对应的存储表;其中,每个所述数据库的所述存储表预先设置有对应的标识值的存储范围;每个所述数据库的所有所述存储表对应的存储范围的总和等于所述数据库组的预设存储范围;
在确定出的所述存储表中响应所述数据的写操作或读操作。
可选地,在上述的方法中,所述计算得到所述标识值除以所述数据库组对应的预设目标值的余数,包括:
计算得到所述标识值除以所述数据库组中的数据库的总数量的余数;其中,一个所述数据库对应一个所述余数。
本申请另一方面提供了一种数据的管理装置,包括:
第一获取单元,用于在请求写入数据或读取数据时,获取所述数据的标识值;
第一确定单元,用于确定所述标识值对应的数据库组;其中,每个所述数据库组用于存储所述标识值在所述数据库组对应的预设范围内的数据;
第一计算单元,用于计算得到所述标识值除以所述数据库组对应的预设目标值的余数;
第二确定单元,用于从所述数据库组中确定出与所述余数存在预设对应关系的数据库;
读写单元,用于在所述数据库中响应所述数据的写操作或读操作。
可选地,在上述的装置中,所述第一获取单元包括写请求单元和读请求单元,所述写请求单元,包括:
生成单元,用于在请求写入数据时,生成所述数据对应的唯一标识;
第二计算单元,用于对所述标识进行哈希计算,得到所述数据的标识值;其中,一个数据对应一个标识值;所述标识值为有序的,并且随着数据写入的时间不断递增的数值。
可选地,在上述的装置中,所述读请求单元,包括:
第二获取单元,用于在请求读取数据时,从所述请求的目标字段中获取所述数据对应的标识;
第三计算单元,用于对所述标识进行哈希计算,得到所述数据的标识值。
可选地,在上述的装置中,所述第一计算单元,包括:
第四计算单元,用于计算得到所述标识值除以所述数据库组中的存储表的总数量的余数;其中,每个所述数据库预先划分有至少一个所述存储表;所述数据库对应的所述余数的数量等于所述数据库中的所述存储表的数量。
可选地,在上述的装置中,所述读写单元,包括:
第三确定单元,用于从确定出的所述数据库中,确定出与所述标识值对应的存储表;其中,每个所述数据库的所述存储表预先设置有对应的标识值的存储范围;每个所述数据库的所有所述存储表对应的存储范围的总和等于所述数据库组的预设存储范围;
读写子单元,用于在确定出的所述存储表中响应所述数据的写操作或读操作。
可选地,在上述的装置中,所述第一计算单元,包括:
第五计算单元,用于计算得到所述标识值除以所述数据库组中的数据库的总数量的余数;其中,一个所述数据库对应一个所述余数。
本申请公开的一种数据的管理方法,通过预先将多个数据库组合为一个数据库,并为每个数据库组设置对应的存储范围。在请求写入数据或读取数据时,获取数据的标识值,根据数据库组的存储范围,可以确定标识值对应的数据库组,然后计算得到标识值除以预设目标值的余数,并从数据库组中确定出与所述余数存在预设对应关系的数据库,最后在所述数据库中响应所述数据的写操作或读操作。由于数据库组中存在多个数据库,并且标识值落在所述数据库组的数据,基于标识值除以预设目标值的余数进行存储,可以均匀的存储到多个数据库,从而能有效地避免数据的存储或访问都会集中在某个数据库上,出现热点问题。并且在需要扩容时,可以直接扩充另一个存储范围的数据库组,而不再原先的数据库中扩充,从而使得各个数据库组的数据库或存储表的数量不变,保证了对原先存储的数据的标识值进行取模时,得到的余数不会发生变化,从而不会导致先前存储的数据无法访问。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种存储系统的构建方法的流程示意图;
图2为本申请实施例提供的一个数据库组的组成示意图;
图3为本申请另一实施例提供的一种数据的管理方法的流程示意图;
图4为本申请另一实施例提供的另一种数据的管理方法的流程示意图;
图5为本申请另一实施例提供的另一种数据的管理方法的流程示意图;
图6为本申请另一实施例提供的另一个数据库组的组成示意图;
图7为本申请另一实施例提供的另一种数据的管理方法的流程示意图;
图8为本申请另一实施例提供的一种数据的管理装置的结构示意图;
图9为本申请另一实施例提供的一种写请求单元的结构示意图;
图10为本申请另一实施例提供的一种读请求单元的结构示意图;
图11为本申请另一实施例提供的一种读写单元的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本申请实施例提供了一种数据的管理方法,以解决现有通过分表和分库进行数据存储时,存在的热点问题以及在扩容后出现的无法访问数据的情况,从而造成无法正常进行扩容的问题。
首先需要说明的是,在存储数据前需要预先构建存储系统。可选地,本申请实施例提供了一种存储系统的构建方法,如图1所示,包括:
S101、将多个数据库定义为一个数据库组,并设置数据库组所对应的存储范围。
其中,存储范围为数据的标识值的范围,每个数据库组的存储范围不同。数据的标识值是每个数据对应的唯一数值。数据的标识值可以是在存储数据时为每个数据配置的唯一数值。也可以是将数据的属性信息中所公有的字段的信息,利用哈希算法进行计算得到的数值。但是每个数据在该字段的信息必须是不同的,以保证所得到的标识值是唯一的。还需要说明的是,数据的标识值是连续的,通常为大于零的连续整数。所以相邻的数据库组的存储范围为连续的。
具体的,可以是在服务器中设置多个数据库,然后可以将所有的数据库定义为一个数据库组,并生成该数据库组的标识。也就是说,起初可以只设置一个数据库组,由于一个数据库组中存在多个数据库,所有能够存储大量的数据。因此,可以在后续数据量增多后,在设置新的数据库组。当然,这只是其中的一种可选的方式,也可以是,在起初设置多个数据库组。
在设置数据库组后,为数据库组设置相应的存储范围。其中,若只定义了一个数据库组,则给数据库组的存储范围则为零到一个上限值。该上限值的大小取决于数据库组中的数据库的存储容量。
例如,如图2所示,将数据库0、数据库1和数据库2定义为一个数据库组,具体定义为数据库组01。根据数据库组中的数据库的容量,为数据库组01设置的存储范围为标识值0~4000万,即标识值在0~4000万范围内的数据都存储在数据库组01中。当新增一个数据库组,或者还存在另一个数据库组时,另一个数据库组的存储范围则可以设置为4000万~8000万,从而形成连续的存储范围,保证每个数据都有相应的存储位置。其中,对于存储范围共有的标识值所对应的数据,其对应数据库组为存储范围的数值较小的数据库组。所以,标识值为40000万的数据所对应的数据库组为数据库组01。
可选地,无论在初始时为数据库组设置对应的存储范围后,还是在后续在扩容时,为新增的数据库设置对应的存储范围后,都可以将数据库与存储范围的对应关系存在到一张数据库组表中,以在后续从数据库组表中查找到标识值所对应的数据库组。
例如,如下表1所示,数据库组表中存储有两个数据库组与其存储范围的对应关系。具体的,针对每个数据组,数据库组表中存储有数据库组的标识、数据库组的名称,以及数据库组对应的存储范围的标识值的最小值和最大值。
表1
S102、针对每个数据库组,根据数据库组的存储表的总数量,设置数据库中的每个数据库对应的余数。
其中,每个数据库中至少包括一个存储表。
可选地,数据库对应的余数可以是数据的标识值除以数据库组的存储表的总数量,所得到的余数。所以,余数为小于数据库组的存储表的总数量,且不小于零的任意一个整数,即当存储表的总数量为N,因为标识值不为零,所以任意一个标识值除以N,所得到的余数仅能为0~(N-1)中的一个整数。所以在确定数据库组的存储表的总数量后,就可以确定数据的标识值除以数据库组的存储表的总数量,可能得到的余数。然后,设置各个余数与数据库的对应关系。其中,一个数据库至少对应一个余数,即一个数据库可以对应多个余数。由于,余数的数量等于存储表的数量,所以具体可以根据数据库所包括的存储表确定,数据库所对应的余数的数量。由于,通常数据库的存储表越多,说明其存储容量越大,所以这种方式能使得存储容量越大的数据库存储的数据的越大。
例如,同样参见图2,数据库组中的存储表的数量为10,则任意正整数除以10,所能得到的余数仅能为0、1、2、3、4、5、6、7、8、9中的一个。由于数据库0中的存储表较多,存储容量较大,所以建立余数0、1、2、3与数据库0的对应关系,对于容量相对较小的数据库1和数据2,则分别对应余数4、5、6和余数7、8、9。
需要说明的是,这只是其中一种确定数据库与余数的对应关系的方式。数据库对应的余数也可以是数据的标识值除以数据库的总数量,所得到的余数。即余数为小于数据库的总数量,且不小于零的任意一个整数。但是采用这种方式,余数的数量与数据库的数量是相等的。所以,一个数据库只能对应一个余数,无法根据数据库容量不同,相应地配置数据库所对应的余数的数量。无法充分地利用存储容量大的数据库的容量。
同样,在针对每个数据库组,根据数据库组的存储表的总数量,设置数据库中的每个数据库对应的余数后,将数据库与余数的对应关系存储在数据库表中,以在后续根据数据库表查找到余数所对应的数据库。
例如,如下表2所示,数据库表中存储有两个数据库组中的6个数据库和余数的对应关系。具体的,对于每个数据库,数据库表中存储有数据库的标识,数据库的名称、数据库所在的数据库组的标识、以及对应的余数。
表2
S103、针对数据库组中的每个数据库,为数据库中的每个存储表设置相应的存储范围。
其中,每个存储表的存储范围在数据库组的存储范围内,不能大于数据库组范围。同一数据库中的不同存储表的存储范围不相同,并且相邻的存储表的存储范围是连续的。所以,同一数据库中的所有存储表的存储范围的总和等于对应的数据库组的存储范围,即每个数据库的存储范围等于数据库组的存储范围,以保证落在每个数据库中的每个数据,都找到对应的存储表进行存储。
例如,同样参见图2,数据库组的存储范围为标识值0~4000万。数据库0包括4个存储表,那么数据库0的存储表0的范围设置为标识值0~1000万,存储表1的范围设置为标识值1000万~2000万,存储表2的范围设置为标识值2000万~3000万,存储表3的范围设置为标识值3000万~4000万;数据库1包括3个存储表,那么数据库1的存储表0的范围设置为标识值0~1000万,存储表1的范围设置为标识值1000万~2500万,存储表2的范围设置为标识值2500万~4000万;数据库2包括3个存储表,那么数据库2的存储表0的范围设置为标识值0~1000万,存储表1的范围设置为标识值1000万~2500万,存储表2的范围设置为标识值2500万~4000万。
需要说明的是,步骤S103也可以在设定数据库组的存储范围之前执行,后续在根据存储表的存储范围设定数据库组的存储范围。又或者在步骤S102前执行。
同样,在针对数据库组中的每个数据库,为数据库中的每个存储表设置相应的存储范围后,将存储表与存储范围的对应关系存储在存储表对照表中,以在后续根据存储表对照表查找到标识值所对应的存储表。
例如,对于图2所对应的数据库组。如下表3所示,存储表对照表中存储有数据库组01的3个数据库的10个存储表和相应的存储范围的对应关系。具体的,对于每个存储表,存储表对照表中存储有存储表的标识,存储表的名称、存储表所在的数据库的标识、以及对应的存储范围的标识值的最小值和最大值。
表3
基于上述构建的存储系统,本申请另一实施例提供了一种数据的管理方法,如图3所示,具体包括:
S301、在请求写入数据或读取数据时,获取数据的标识值。
其中,标识值为每个数据都存在的唯一标识值。具体的,标识值可以是在存储数据时相应地生成的数值。也可以是数据的属性信息中本来具有的。
可选地,在本申请的另一实施例中,步骤S301为请求写入数据时,步骤S301的一种实施例方式,如图4所示,包括:
S401、在请求写入数据时,生成数据对应的唯一标识。
也就是说,在本申请实施例中,当需要请求存储数据时,将为请求存储的数据生成对应的唯一标识。其中,唯一标识可以是多个任意字符的组合。
S402、对标识进行哈希计算,得到数据的标识值。
其中,一个数据对应一个标识值。标识值为有序的,并且随着数据写入的时间不断递增的数值。
需要说明的是,不同的标识通过哈希算法计算得到的值也不同,所以能保证不同数据的标识值不相同。
还需要说明的是,标识数据的标识值也可以是直接生成的,即步骤S401生成数据对应的唯一标识为一个具体数值,则所生成的数值即可直接作为数据的标识值,也就不需要执行步骤S402,对标识进行哈希计算才得到数据的标识值。但考是虑到,存储数据时通常都会相应的生成数据的各种属性信息,这其中会存在不是数字的,并且每个数据都具有的唯一的标识。此时,就可以直接利用这个标识计算得到标识值,而不需要再额外的生成标识值。即使不存在这样的标识,对标识进行哈希计算得到标识值的方式,也使得生成的唯一的标识的样式可以为多样,不仅限于只能是数字的组合。当然,这两种方式都应属于本申请的保护范畴。
可选地,基于上述实施例中存储数据的方式,在本申请另一实施例中,步骤S301为请求读取数据时,步骤S301的一种实施例方式,如图5所示,包括:
S501、在请求读取数据时,从请求的目标字段中获取数据对应的标识。
其中,目标字段中存储有存储数据时所生成的数据的唯一标识。并且,在数据读取请求中都包括有该目标字段,以确定所要读取的数据。
S502、对标识进行哈希计算,得到数据的标识值。
S302、确定标识值对应的数据库组。
其中,每个数据库组用于存储标识值在数据库组对应的预设范围内的数据。
具体的,从预先建立的数据库组表中,查找标识值所属的存储范围对应的数据库组,确定标识值所对应的数据库组。
S303、计算得到标识值除以数据库组对应的预设目标值的余数。
其中,预设目标值可以是确定出的数据库组中的存储表的总数量,即将数据库组中的存储表的总数量,设置为数据库组对应的目标值。当然,也可以是确定出的数据库组中的数据库的总数量。具体是哪个,取决于在设置数据库与余数的对应关系时,余数指的是标识值除以数据库组中的存储表的总数量得到的余数,还是标识值数据库组中的数据库的总数量得到的余数。
所以可选地,当预设目标值为数据库组中的存储表的总数量时,步骤S103的具体实施方式为:计算得到所述标识值除以所述数据库组中的存储表的总数量的余数。
其中,每个数据库预先划分有至少一个存储表。数据库对应的余数的数量等于述数据库中的存储表的数量。
此时一个数据库可以对应多个预设,并且数据库对应的余数的数量通常可设定为数据库所包括的存储表的数量,以能使得容量相对较大的数据库,存储数据的量也相对较大。
当预设目标值为数据库组中的数据库的总数量时,步骤S103的具体实施方式为:计算得到标识值除以数据库组中的数据库的总数量的余数。
其中,一个数据库对应一个余数。
S304、从数据库组中确定出与余数存在预设对应关系的数据库。
具体的,在计算出余数后,利用预先建立的数据库表,从中查找出属于该数据库中的数据库中与计算得到的余数存在对应关系的数据库。所确定出的数据库即为数据要写入的数据库,或者所要读取的数据所存储的数据库。
可见本申请实施例提供的数据的管理方法,并不是直接以存储范围或者余数的与数据库的对应关系,确定出数据所要存储的数据库。而是将多个数据库定义数据库组,先通过数据的标识值所属的存储范围,确定相应的数据库组,然后再根据余数与数据库的对应关系确定数据所要存储的数据库。由于数据对应的数据库组,采用的基于存储范围的方式确定的,所以数据的读取和写入在一段时间内会主要集中在一个数据库组中。但是,由于数据库组中存在多个数据库,并且后续数据会基于哈希取模的方式,均匀的存储在不同的数据库中,从而不会出现在一段时间内,数据的读取和写入操作主要集中在一个数据库中的问题,有效的避免了热点问题的出现。
并且,由于是先通过存储范围确定数据库组后,再通过取模的方式,从确定出的数据库组中确定出余数对应的数据库。所以,不同的数据库组中余数与数据库的对应关系是彼此独立。所以在需要扩容时,可以直接再增加一个数据库组,即将后续增加的数据库定义为新的数据库组,从而保证原先的数据库组中的数据库的数量和存储表的数量不发生变化,因此原先的数据库组中的数据库与余数的对应关系不会发生改变,通过取模的方式还能找到先前存储的数据,从而有效的解决了在扩容后,确定出的数据库或存储表并非先前存储该数据的数据库,导致无法访问到先前存储的数据的问题。
例如,在预先构建有图2所对应的数据库组01的基础下,在需要扩容时,可以在增加一个数据库组。如图6所示,在增加一个数据库组02,该数据库组的存储范围需要与数据库组01的存储范围时联系的,所以其存储范围为标识值4000万~8000万。数据库组02中也设置有三个数据库,并且每个数据库组包括3个存储表,所以数据库对应的余数的数量是相等的。数据库0对应余数为0、1、2;数据库1对应的余数为3、4、5;数据库2对应的余数为6、7、8。
S305、在数据库中响应数据的写操作或读操作。
具体的,当请求写入数据时,则将请求中待写入的数据写入确定出的数据库中。当是请求读数据时,则根据请求读取的数据的标识值,从确定出的数据库中查找到与标识值对应的数据,将该数据返回。
可选的,本申请另一实施例中,步骤S105的一种具体实施方式,如图7所示,包括:
S701、从确定出的数据库中,确定出与标识值对应的存储表。
其中,每个所述数据库的所述存储表预先设置有对应的标识值的存储范围;每个所述数据库的所有所述存储表对应的存储范围的总和等于所述数据库组的预设存储范围。
具体的,由于数据库中包括多个存储表,所以在确定出数据库后,可以根据数据的标识值,利用预先建立的存储表对照表,查找到在该数据库中,标识值所在的存储范围对应的存储表,从而从多个存储表中,确定出进行读操作或写操作的存储表。
S702、在确定出的存储表中响应数据的写操作或读操作。
同样,当是请求写入数据时,则将请求中待写入的数据写入确定出的存储表中。当是请求读数据时,则根据请求读取的数据的标识值,从确定出的数据库中查找到与标识值对应的数据,将该数据返回。
本申请另一实施例提供了一种数据的管理装置,如图8所示,包括:
第一获取单元801,用于在请求写入数据或读取数据时,获取数据的标识值。
第一确定单元802,用于确定标识值对应的数据库组。其中,每个数据库组用于存储标识值在数据库组对应的预设范围内的数据。
第一计算单元803,用于计算得到标识值除以数据库组对应的预设目标值的余数。
第二确定单元804,用于从数据库组中确定出与余数存在预设对应关系的数据库。
读写单元805,用于在数据库中响应数据的写操作或读操作。
需要说明的是,本实施例中的上述单元的具体工作过程可相应地参考上述方法实施例中的步骤S301~步骤S305,此处不再赘述。
可选地,本申请的另一实施例中,第一获取单元801包括写请求单元和读请求单元。其中,如图9所示,写请求单元,包括:
生成单元901,用于在请求写入数据时,生成数据对应的唯一标识。
第二计算单元902,用于对标识进行哈希计算,得到数据的标识值。
其中,一个数据对应一个标识值。标识值为有序的,并且随着数据写入的时间不断递增的数值。
需要说明的是,本实施例中的上述单元的具体工作过程可相应地参考上述方法实施例中的步骤S401~步骤S402,此处不再赘述。
可选地,本申请的另一实施例中,如图10,读请求单元,包括:
第二获取单元1001,用于在请求读取数据时,从请求的目标字段中获取数据对应的标识。
第三计算单元1002,用于对标识进行哈希计算,得到数据的标识值。
需要说明的是,本实施例中的上述单元的具体工作过程可相应地参考上述方法实施例中的步骤S501~步骤S502,此处不再赘述。
可选地,本申请的另一实施例中,第一计算单元803,包括:
第四计算单元,用于计算得到标识值除以数据库组中的存储表的总数量的余数。
其中,每个数据库预先划分有至少一个存储表;数据库对应的余数的数量等于数据库中的存储表的数量。
需要说明的是,第四计算单元的具体工作过程可相应地参考上述方法实施例中的步骤S303的一种可选的具体实施方式,此处不再赘述。
可选地,本申请的另一实施例中,如图11所示,读写单元805,包括:
第三确定单元1101,用于从确定出的数据库中,确定出与标识值对应的存储表。
其中,每个数据库的存储表预先设置有对应的标识值的存储范围。每个数据库的所有存储表对应的存储范围的总和等于数据库组的预设存储范围。
读写子单元1102,用于在确定出的存储表中相应数据的写操作或读操作。
需要说明的是,本实施例中的上述单元的具体工作过程可相应地参考上述方法实施例中的步骤S701~步骤S702,此处不再赘述。
可选地,本申请的另一实施例中,第一计算单元803,包括:
第五计算单元,用于计算得到标识值除以数据库组中的数据库的总数量的余数。
其中,一个数据库对应一个余数。
需要说明的是,第五计算单元的具体工作过程可相应地参考上述方法实施例中的步骤S303的一种可选的具体实施方式,此处不再赘述。
本申请实施例提供的一种数据的管理装置,预先将多个数据库作为一个数据库,并为每个数据设置于对应的存储范围。在请求写入数据或读取数据时,第一获取单元获取数据的标识值,并由第一确定单元根据数据库组的存储范围,确定标识值对应的数据库组,然后第一计算单元计算得到标识值除以预设目标值的余数,并由第二确定单元从数据库组中确定出与余数存在预设对应关系的数据库,最后读写单元在数据库中响应数据的写操作或读操作。由于数据库组中存在多个数据库,并且标识值落在数据库组的数据,基于标识值除以预设目标值的余数,均匀的存储到多个数据库,从而能有效地避免数据的存储或访问都会集中在某个数据库上,出现热点问题。并且在需要扩容时,可以直接扩充另一个存储范围的数据库组,而不再原先的数据库中扩充,从而不影响原先的数据库组中数据库的数量,所以不会导致无法访问到先前存储的数据。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种数据的管理方法,其特征在于,包括:
在请求写入数据或读取数据时,获取所述数据的标识值;
确定所述标识值对应的数据库组;其中,每个所述数据库组用于存储所述标识值在所述数据库组对应的预设范围内的数据;
计算得到所述标识值除以所述数据库组对应的预设目标值的余数;
从所述数据库组中确定出与所述余数存在预设对应关系的数据库;
在所述数据库中响应所述数据的写操作或读操作。
2.根据权利要求1所述的方法,其特征在于,所述在请求写入数据时,获取所述数据的标识值,包括:
在请求写入数据时,生成所述数据对应的唯一标识;
对所述标识进行哈希计算,得到所述数据的标识值;其中,一个数据对应一个标识值;所述标识值为有序的,并且随着数据写入的时间不断递增的数值。
3.根据权利要求2所述的方法,其特征在于,所述在请求读取数据时,获取所述数据的标识值,包括:
在请求读取数据时,从所述请求的目标字段中获取所述数据对应的标识;
对所述标识进行哈希计算,得到所述数据的标识值。
4.根据权利要求1所述的方法,其特征在于,所述计算得到所述标识值除以所述数据库组对应的预设目标值的余数,包括:
计算得到所述标识值除以所述数据库组中的存储表的总数量的余数;其中,每个所述数据库预先划分有至少一个所述存储表;所述数据库对应的所述余数的数量等于所述数据库中的所述存储表的数量。
5.根据权利要求4所述的方法,其特征在于,所述在所述数据库中响应所述数据的写操作或读操作,包括:
从确定出的所述数据库中,确定出与所述标识值对应的存储表;其中,每个所述数据库的所述存储表预先设置有对应的标识值的存储范围;每个所述数据库的所有所述存储表对应的存储范围的总和等于所述数据库组的预设存储范围;
在确定出的所述存储表中响应所述数据的写操作或读操作。
6.根据权利要求1所述的方法,其特征在于,所述计算得到所述标识值除以所述数据库组对应的预设目标值的余数,包括:
计算得到所述标识值除以所述数据库组中的数据库的总数量的余数;其中,一个所述数据库对应一个所述余数。
7.一种数据的管理装置,其特征在于,包括:
第一获取单元,用于在请求写入数据或读取数据时,获取所述数据的标识值;
第一确定单元,用于确定所述标识值对应的数据库组;其中,每个所述数据库组用于存储所述标识值在所述数据库组对应的预设范围内的数据;
第一计算单元,用于计算得到所述标识值除以所述数据库组对应的预设目标值的余数;
第二确定单元,用于从所述数据库组中确定出与所述余数存在预设对应关系的数据库;
读写单元,用于在所述数据库中响应所述数据的写操作或读操作。
8.根据权利要求7所述的装置,其特征在于,所述第一获取单元包括写请求单元和读请求单元,所述写请求单元,包括:
生成单元,用于在请求写入数据时,生成所述数据对应的唯一标识;
第二计算单元,用于对所述标识进行哈希计算,得到所述数据的标识值;其中,一个数据对应一个标识值;所述标识值为有序的,并且随着数据写入的时间不断递增的数值。
9.根据权利要求8所述的装置,其特征在于,所述读请求单元,包括:
第二获取单元,用于在请求读取数据时,从所述请求的目标字段中获取所述数据对应的标识;
第三计算单元,用于对所述标识进行哈希计算,得到所述数据的标识值。
10.根据权利要求7所述的装置,其特征在于,所述第一计算单元,包括:
第四计算单元,用于计算得到所述标识值除以所述数据库组中的存储表的总数量的余数;其中,每个所述数据库预先划分有至少一个所述存储表;所述数据库对应的所述余数的数量等于所述数据库中的所述存储表的数量。
11.根据权利要求10所述的装置,其特征在于,所述读写单元,包括:
第三确定单元,用于从确定出的所述数据库中,确定出与所述标识值对应的存储表;其中,每个所述数据库的所述存储表预先设置有对应的标识值的存储范围;每个所述数据库的所有所述存储表对应的存储范围的总和等于所述数据库组的预设存储范围;
读写子单元,用于在确定出的所述存储表中响应所述数据的写操作或读操作。
12.根据权利要求7所述的装置,其特征在于,所述第一计算单元,包括:
第五计算单元,用于计算得到所述标识值除以所述数据库组中的数据库的总数量的余数;其中,一个所述数据库对应一个所述余数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911421779.3A CN113127480A (zh) | 2019-12-31 | 2019-12-31 | 一种数据的管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911421779.3A CN113127480A (zh) | 2019-12-31 | 2019-12-31 | 一种数据的管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113127480A true CN113127480A (zh) | 2021-07-16 |
Family
ID=76770112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911421779.3A Pending CN113127480A (zh) | 2019-12-31 | 2019-12-31 | 一种数据的管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127480A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114625738A (zh) * | 2022-03-18 | 2022-06-14 | 四川新网银行股份有限公司 | 一种数据动态分布方法、分布系统及存储介质 |
-
2019
- 2019-12-31 CN CN201911421779.3A patent/CN113127480A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114625738A (zh) * | 2022-03-18 | 2022-06-14 | 四川新网银行股份有限公司 | 一种数据动态分布方法、分布系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8799601B1 (en) | Techniques for managing deduplication based on recently written extents | |
CN111552692B (zh) | 一种加减法布谷鸟过滤器 | |
EP3251033B1 (en) | Hybrid data distribution in a massively parallel processing architecture | |
CN112287182A (zh) | 图数据存储、处理方法、装置及计算机存储介质 | |
CN102298633B (zh) | 一种分布式海量数据排重方法及系统 | |
CN111475105B (zh) | 监控数据存储方法、设备、服务器及存储介质 | |
CN103902623A (zh) | 用于在存储系统上存取文件的方法和系统 | |
CN102739622A (zh) | 一种可扩展的数据存储系统 | |
CN104115133A (zh) | 复合非易失性存储设备的数据迁移 | |
JP2013196565A (ja) | データベース処理方法、及びデータベース処理装置 | |
CN110245129B (zh) | 一种分布式全局数据去重方法和装置 | |
EP3522040A1 (en) | Method and device for file storage | |
CN111209252A (zh) | 一种文件元数据存储方法、装置及电子设备 | |
CN114721594A (zh) | 一种分布式存储方法、装置、设备及机器可读存储介质 | |
CN107301249A (zh) | 一种文件访问信息记录方法、系统及分布式集群系统 | |
CN113127480A (zh) | 一种数据的管理方法及装置 | |
CN114840487A (zh) | 分布式文件系统的元数据管理方法和装置 | |
US20150046399A1 (en) | Computer system, data allocation management method, and program | |
CN111858606A (zh) | 数据处理方法、装置和电子设备 | |
CN116450607A (zh) | 数据处理方法、设备及存储介质 | |
CN111061759A (zh) | 数据查询方法及装置 | |
CN113360551B (zh) | 一种靶场中时序数据的存储与快速统计方法及系统 | |
EP3995972A1 (en) | Metadata processing method and apparatus, and computer-readable storage medium | |
CN110413617B (zh) | 一种根据数据量的大小动态调节哈希表组的方法 | |
CN110990394B (zh) | 分布式面向列数据库表的行数统计方法、装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |