CN102968503A - 数据库系统的数据处理方法以及数据库系统 - Google Patents
数据库系统的数据处理方法以及数据库系统 Download PDFInfo
- Publication number
- CN102968503A CN102968503A CN2012105308236A CN201210530823A CN102968503A CN 102968503 A CN102968503 A CN 102968503A CN 2012105308236 A CN2012105308236 A CN 2012105308236A CN 201210530823 A CN201210530823 A CN 201210530823A CN 102968503 A CN102968503 A CN 102968503A
- Authority
- CN
- China
- Prior art keywords
- data
- virtual partition
- data virtual
- database node
- database
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库系统的数据处理方法,所述数据处理方法包括:将数据表中的每一数据记录根据数据记录与数据虚分区的映射关系映射到相应的数据虚分区;基于数据虚分区与数据库节点的映射关系将每一数据虚分区映射到相应的数据库节点;以及,将数据表中的各数据记录存储到相应的数据库节点的相应的数据虚分区中。相应地,本发明还公开了一种数据库系统。采用本发明,可以快速地进行数据的重新划分和分布,从而提高了数据库集群的性能。
Description
技术领域
本发明涉及数据库技术领域,更具体地,涉及一种数据库系统的数据处理方法以及数据库系统。
背景技术
在采用无共享结构的数据库集群系统(如IBM公司的产品DB2UDB,产品MySQL Cluster,以及EMC公司的产品Green Plum)中,由于数据量巨大,必须采用一种划分策略将数据分布到多个数据库节点上,Hash划分则是其中最常见的一种数据划分方法。Hash划分通过对关系表中的某一列进行Hash计算,可以快速地定位相关记录所在的数据库节点,Hash划分对数据加载和查询处理具有较好的性能提升。特别地,Hash分区对于大表统计和大表关联查询的性能提升非常明显。
在集群数据库系统中,Hash划分主要是为了解决数据的分布和计算的划分,实现了数据记录到数据库节点的映射关系,其计算方式如下:
Hash(column_value)=nodeid
其中,column_value表示的数据表的划分列的值,nodeid表示数据划分后的分布节点,通过该Hash算法,可以轻易的计算出某个数据列属于哪个数据库节点。nodeid的取值必须和数据库系统中的节点数相对应,随着数据量的增加,系统不可避免的需要面临升级扩容的需求。此时nodeid的取值范围就发生了变化,原设定的Hash划分函数难以适应数据库节点数的动态扩容,必须进行重新计算。而在大规模数据库系统中,数据的重新划分计算会带来巨大的计算开销和迁移开销。
发明内容
为解决现有技术存在的问题,本发明提供了一种采用新的数据划分和分布对数据库系统进行数据处理的方法和一种新的数据库系统,
根据本发明的一方面,提供了一种数据库系统的数据处理方法,包括:
步骤A,将数据表中的每一数据记录根据数据记录与数据虚分区的映射关系映射到相应的数据虚分区;
步骤B,基于数据虚分区与数据库节点的映射关系将每一数据虚分区映射到相应的数据库节点;
步骤C,将数据表中的各数据记录存储到相应的数据库节点的相应的数据虚分区中。
在可选实施例中,所述数据处理方法还包括:在步骤A之前建立所述数据表的数据虚分区信息记录,所述数据虚分区信息记录包括以下字段:数据表名、数据表的列名、数据虚分区规则,数据虚分区的总数和数据库节点的总数,其中,所述数据虚分区规则包括轮询分区规则、哈希Hash分区规则、范围Range分区规则或者列表List分区规则。
在可选实施例中,所述数据处理方法执行B步骤包括:建立将每一数据虚分区映射到对应的数据库节点的数据虚分区映射表,所述数据虚分区映射表包括以下字段:数据虚分区号和数据库节点号。
在可选实施例中,步骤A可以包括:根据所述数据虚分区规则确定对所述数据表采用的数据记录与数据虚分区的映射关系;以及,
根据所述数据表的列值、数据虚分区的总数以及所采用的数据记录与数据虚分区的映射关系将所述数据表中的数据记录映射到相应的数据虚分区。
在可选实施例中,所述数据处理方法还包括:在数据库系统扩容时,将每个原数据库节点中的部分数据虚分区根据负载均衡策略迁移到新增的数据库节点,其中每个原数据库节点包括多个数据虚分区。
在可选实施例中,所述数据处理方法还包括:在数据库系统减容时,将要被减的数据库节点中的多个数据虚分区根据负载均衡策略迁移到其他数据库节点。
在可选实施例中,将每个原数据库节点中的部分数据虚分区根据负载均衡策略迁移到新增的数据库节点,包括:
获取扩容前每个数据库节点中配置的数据虚分区数,为第一数据虚分区值;
将数据虚分区的总数除以扩容后数据库节点的总数,得到每个数据库节点中应配置的数据虚分区数,为第二数据虚分区值;
将每个数据库节点的所述第一数据虚分区值减去所述第二数据虚分区值得到多余的数据虚分区;以及,
将每个数据库节点中的多余的数据虚分区迁移到新增的数据库节点。
在可选实施例中,所述数据处理方法在步骤C之后,还包括:
当进行数据查询时,根据数据表中的要查询的数据记录所在的列的取值信息以及数据记录与数据虚分区的映射关系确定所述要查询的数据记录所在的数据虚分区;
根据所确定的数据虚分区以及所述数据虚分区与数据库节点的映射关系确定对应的数据库节点;以及,
从所确定的数据库节点中的所确定的数据虚分区获取要查询的数据记录。
根据本发明的另一方面,还提供可一种数据库系统,包括:
第一映射单元,用于将数据表中的每一数据记录根据数据记录与数据虚分区的映射关系映射到相应的数据虚分区;
第二映射单元,用于基于数据虚分区与数据库节点的映射关系将每一数据虚分区映射到相应的数据库节点;
数据分发单元,用于将数据表中的各数据记录存储到相应的数据库节点的相应的数据虚分区中。
在可选实施例中,所述数据库系统还包括:第一元数据建立单元,用于建立所述数据表的数据虚分区信息记录,所述数据虚分区信息记录包括以下字段:数据表名、数据表的列名、数据虚分区规则,数据虚分区的总数和数据库节点的总数,其中,所述数据虚分区规则包括轮询分区规则、哈希Hash分区规则、范围Range分区规则或者列表List分区规则。
在可选实施例中,所述数据库系统还包括:第二元数据建立单元,用于建立反映数据虚分区和数据库节点之间映射关系的数据虚分区映射表,所述数据虚分区映射表包括以下字段:数据虚分区号和数据库节点号。
在可选实施例中,所述第一映射单元包括:映射关系确定单元,用于根据数据虚分区规则确定对所述数据表采用的数据记录与数据虚分区的映射关系;数据映射单元,用于根据数据表的列值、数据虚分区的总数以及所采用的数据记录与数据虚分区的映射关系将数据表中的数据记录映射到相应的数据虚分区。
在可选实施例中,所述数据库系统还包括系统扩容单元,用于在数据库系统扩容时,将每个原数据库节点中的部分数据虚分区根据负载均衡策略迁移到新增的数据库节点,其中每个原数据库节点中包括多个数据虚分区。
在可选实施例中,所述数据库系统还包括系统减容单元,用于在数据库系统减容时,将要被减的数据库节点中的多个数据虚分区根据负载均衡策略迁移到其他数据库节点。
在可选实施例中,所述系统扩容单元,包括:计算单元,用于获取扩容前每个数据库节点中配置的数据虚分区数,并记为第一数据虚分区值;将数据虚分区的总数除以扩容后数据库节点的总数,得到每个数据库节点中应配置的数据虚分区数,并记为第二数据虚分区值;和将每个数据库节点的所述第一数据虚分区值减去所述第二数据虚分区值得到多余的数据虚分区;以及,数据迁移单元,用于将每个数据库节点中的多余的数据虚分区迁移到新增的数据库节点。
在可选实施例中,所述数据库系统还包括数据查询单元,用于执行以下功能:根据数据表中的要查询的数据记录所在列的取值信息以及所述数据记录与数据虚分区的映射关系确定所述要查询的数据记录所在的数据虚分区;根据所确定的数据虚分区和所述数据虚分区与数据库节点的映射关系确定对应的数据库节点;以及,从所确定的数据库节点中的所确定的数据虚分区获取相应的数据记录。
本发明通过在数据划分和分布时,在数据记录映射到数据库节点的过程中增加一层映射关系,即采用数据虚分区,使得可以快速地进行数据的重新划分和分布,并且可以减少数据迁移量,从而提高了数据库系统的性能。
附图说明
图1是根据本发明实施例的一种数据库系统的数据处理方法的流程示意图。
图2是根据本发明实施例的数据表存储的结构示意图。
图3是根据本发明实施例的数据库扩容和数据迁移的一个例子。
图4是根据本发明实施例的一种数据库系统的结构示意框图。
具体实施方式
下面结合附图对本发明进行进一步地详细说明。
本发明实施例提出了一种可在数据库系统,尤其是大规模集群数据库系统中,能够实现系统规模动态伸缩的数据分布方法。在数据库系统的数据库节点发生变化时,无需对所有数据重新进行划分和迁移,即可完成数据库中的所有数据与数据库系统节点之间的映射关系的建立。
图1是根据本发明实施例的一种数据库系统的数据处理方法的流程示意图,如图1所示,该数据处理方法包括:
步骤S101,将数据表中的数据记录根据数据记录与数据虚分区的映射关系映射到相应的数据虚分区;
步骤S102,基于数据虚分区与数据库节点的映射关系将每一数据虚分区映射到相应的数据库节点;
步骤103,将数据表中的各数据记录存储到相应的数据库节点的相应的数据虚分区中。
在本发明实施例中,为数据表中的每条数据记录确定出相应的数据虚分区和相应的数据库节点后将数据表中的各数据记录存储到相应的数据库节点的相应的虚数据分区中。在本发明实施例中,数据虚分区可以以多种方式进行划分,例如轮询分区、哈希Hash分区、范围Range分区或者列表List分区。在本发明实施例中,数据记录与数据虚分区的映射关系,以及数据虚分区和数据库节点的映射关系基于分区规则不同而不同。
在本发明可选实施例中,数据记录与数据虚分区的映射可以是一种按照数据记录行进行数据分组的方式,每一个数据虚分区中具有满足数据记录与数据虚分区的映射关系(也可称为划分条件)的数据记录行。例如,对于商品交易信息表,可采用交易记录的时间范围Range进行划分,每个月一个数据虚分区,每个虚分区含有某月内所有的交易信息记录行。
在本发明实施例中,为实现上述数据处理方法,将集群数据库系统的存储划分为4个级别:数据表记录、数据虚分区、数据库节点,数据库节点组;其中,一个数据表中包括多条数据记录。
图2是根据本发明实施例的数据表存储的结构示意图。如图2所示,一个数据表分布在一个节点组上,节点组包括多个数据库节点,每个数据库节点又包含多个数据分区,每个数据分区中包含数据表的多条数据记录。数据分区是一个逻辑概率,每个数据分区必须属于一个物理节点,因而在本申请中称为数据虚分区。
每条数据记录可以通过预设定的映射关系唯一映射到一个数据分区内,在优选实施例中,可采用Hash划分法(或者Hash函数)将每条数据记录映射到相应的数据虚分区。相比于现有Hash划分中数据记录到数据库节点的直接映射关系,本发明的Hash划分和分布增加了一层映射关系,即采用数据虚分区对数据进行划分和分布。
数据记录和数据库节点之间的映射关系可通过以下两步实现:
(1)通过哈希函数计算得到与数据表中的数据记录相对应的数据虚分区:
Hash(column_value,part_num)=part_id
其中,Hash函数的输入参数是数据表的列值column_value,part_num为数据虚分区总数,part_id为数据虚分区号。
该Hash函数的输出结果是1~part_num之间的整数,一种常见的Hash函数就是取模运算,即虚分区号part_id等于列值column_value除以分区总数part_num得到的余数。然后,将属于该列值的数据记录划分到计算得到的数据虚分区中。
在本发明实施例中,数据划分信息可以采用元数据表来记录,例如数据表分区信息表pdb_table_deploy,其结构如表1所示。
表1数据表分区信息表
注:dist_id采用序列号自动生成,每个分布表对应一个分布策略ID值。
表1示出的数据表分区信息表可以包括多个数据表的虚分区信息记录。对于每一个数据表,在数据表分区信息表pdb_table_deploy中都有一条相应的记录,记录该数据表的数据分区的总数和数据库节点数。
(2)基于数据虚分区与数据库节点的映射关系将每一数据虚分区映射到相应的数据库节点
在本发明实施例中,可以建立反映数据虚分区与数据库节点的映射关系的数据虚分区映射表pdb_part_map,如图2所示。即对于每一个数据虚分区,在数据虚分区映射表中,都有一条相应的记录,该记录通过数据虚分区号和数据库节点号记录数据虚分区以及与数据虚分区对应的数据库节点。
表2数据虚分区映射表
本发明实施例可以通过上述两个元数据表来共同记录数据划分信息,这两个元数据表可以存储在数据库系统的元数据库中。需要说明的是,上述表1和表2不旨在限制为采用哈希分区时使用,也可以用于其他分区规则。
根据本发明实施例的数据处理方法,还可以根据设计需求对数据库进行扩容或减容。根据一可选实施例,在数据库系统扩容时,可以将每个原数据库节点中的部分数据虚分区根据负载均衡策略迁移到新增的数据库节点,其中每个原数据库节点包括多个数据虚分区
在进一步的可选实施例中,将每个原数据库节点中的部分数据虚分区根据负载均衡策略迁移到新增的数据库节点,可以包括以下步骤:
获取扩容前每个数据库节点中配置的数据虚分区数,为第一数据虚分区值;
将数据虚分区的总数除以扩容后数据库节点的总数,得到每个数据库节点中应配置的数据虚分区数,为第二数据虚分区值;
将每个数据库节点的所述第一数据虚分区值减去所述第二数据虚分区值得到多余的数据虚分区;
将每个数据库节点中的多余的数据虚分区迁移到新增的数据库节点。
根据另一可选实施例,在数据库系统减容时,可以将要被减的数据库节点中的多个数据虚分区根据负载均衡策略迁移到其他数据库节点。
根据本发明实施例的数据虚分区技术,在数据库系统规模扩展或缩小时,可以无需进行重新计算数据分区值,只需将数据虚分区与数据库节点进行重新映射即可。
例如,通过负载均衡策略进行数据迁移,然后修改Hash分区映射表pdb_hashpart_map中的部分字段即可。
在本发明一可选实施例中,重新映射可以采用最小迁移原则,即数据迁移只发生在原有数据库节点和新增的数据库节点之间,而原有数据库节点之间并不发生数据迁移。
现假设数据库节点数从N增加到M,则每个数据库节点的数据分区数从part_num/N减小到part_num/M,扩容后的数据分区重新映射的流程可通过以下算法来实现:
1)初始化节点分区计数器
设置原先的数据库节点分区数为part_num/N,新增数据库节点的数据分区数为0;
If(i<=N)partn[i]=part_num/N;
Else partn[i]=0;
2)设置当前空闲数据库节点编号freeid=N+1;
3)对于映射表part2node中的每一项iterator{
4)如果iterator的节点编号是i,且partn[i]>part_num/M{
5)如果当前空闲数据库节点的数据分区数小于part_num/M {
6)修改该数据分区对应的数据库节点编号:iterator->second=freeid;
7)空闲数据库节点的数据分区数增加1:partn[freeid]+=1;
}
8)否则空闲数据库节点编号加1:freeid+=1;
9)修改原先数据库节点上的分区数减小1:partn[i]-=1;
}
}
上述算法的基本思想是顺序扫描当前的分区映射表,如果相应数据库节点上的某数据分区的数据分区号大于part_num/M,则将该数据分区映射到新增数据库节点。数据重新划分完成后,则需要将所有的数据分区,按照新的映射关系,进行迁移。从上述算法的描述可以看出,分区的重新映射,只将原有数据库节点上超过平均数的数据分区迁移到新增数据库节点,因此数据迁移只是将原有数据库节点的部分数据迁移到新增数据库节点。通过这种方式,也保证了重新划分带来的数据迁移保持在最小量。
图3是根据本发明实施例的数据库扩容和数据迁移的一个例子。如图3所示,节点组包括3个数据库节点,如节点1、节点2和节点3,现系统扩容增加一个数据库节点4,这样,节点组的数据库节点数从3个增加到4个。进行数据重新划分,则将部分数据分区从节点1、节点2和节点3迁移到新增的节点4,使得数据重新达到均衡。
在优选实施例中,为了保证数据迁移前后各数据库节点的数据虚分区数的均衡,因此数据虚分区的数量最好要远大于节点数,即part_num>>node_num。由于扩容前后,不同数据库节点之间的数据虚分区数基本相等(相差最大不超过1个分区),因此能够较好的保证数据库节点间的数据量均衡。在优选实施例中,推荐每个节点的数据虚分区数设置为节点的CPU核心数量的2倍。例如,数据库节点采用4路16核的配置,则单个节点的数据虚分区数可以设定为32,整个系统的数据分区数就是节点数n*32。
需要说明的是,上述每个数据库节点上的数据虚分区数量相同的布置仅是本发明的一个实施例,不旨在限制本发明的保护范围。根据本发明的实施例,还可以是根据数据库节点的处理能力不同,确定从原数据库节点上要迁移出的数据虚分区,然后将所确定的数据虚分区迁移到新增的一个或多个数据库节点中。
在本发明实施例中,在数据划分和分布完成后,可以对数据进行查询。当进行数据查询时,可以根据数据表中的要查询的数据列的取值信息以及数据记录与数据虚分区的映射关系确定所述要查询的数据记录所在的数据虚分区;然后,根据所确定的数据虚分区以及存储的数据虚分区表确定对应的数据库节点。最后,从所确定的数据库节点中的所确定的数据虚分区获取要查询的数据记录。
在本发明实施例中,根据数据列的取值信息以及数据记录与数据虚分区的映射关系确定所述要查询的数据记录所在的数据虚分区,同样使用以下哈希函数Hash(column_value,part_num)=part_id来实现。例如数据虚分区总数part_num是100,当要查询的数据记录对应的列column_value取值是1065时(通常作为查询条件),可通过取模运算得到要查询的数据记录(例如某一数据行)在分区编号为65的虚分区上,即1065除以100得到的余数。然后,根据数据虚分区号part_id查找Hash数据虚分区映射表得到相应的数据库节点。在该数据节点上执行用户的查询语句,即可得到所需的数据行信息。
在本发明可选实施中,可以将数据虚分区与数据库节点的划分信息读取到内存中,可以采用STL map的结构保存,以提高元数据的查找性能,Map结构如下:
Map<part_id,node_id>part2node,其中,part_id为数据虚分区号,node_id为数据库节点号,part2node为数据虚分区编号到数据库节点编号的一个映射。
STL map可以采用红黑树实现,通常查找时间复杂度是logN,从而能够快速的定位数据记录所在的数据库节点。
图4是根据本发明一实施例的数据库系统的结构示意图。如图4所示,该数据库系统包括:第一映射单元40,用于将数据表中的每一数据记录根据数据记录与数据虚分区的映射关系映射到相应的数据虚分区;以及,第二映射单元42,用于基于数据虚分区与数据库节点的映射关系将每一数据虚分区映射到相应的数据库节点;以及,数据分发单元44,用于将数据表中的各数据记录存储到相应的数据库节点的相应的数据虚分区中。
在可选实施例中,所述数据库系统还可以包括:第一元数据建立单元30,用于建立所述数据表的数据虚分区信息记录,所述数据虚分区信息记录包括以下字段:数据表名、数据表的列名、数据虚分区规则,数据虚分区的总数和数据库节点的总数,其中,所述数据虚分区规则包括轮询分区规则、哈希Hash分区规则、Range分区规则或者List分区规则。
在进一步的可选实施例中,数据库系统还可以包括第二元数据建立单元32,用于建立反映数据虚分区和数据库节点之间映射关系的数据虚分区映射表。所述数据虚分区映射表包括以下字段:数据虚分区号和数据库节点号。
在本发明的一可选实施例中,第一映射单元40可包括:映射关系确定单元,用于根据数据虚分区规则确定对所述数据表采用的数据记录与数据虚分区的映射关系;以及,数据映射单元,用于根据数据表的列值、数据虚分区的总数以及所采用的数据记录与数据虚分区的映射关系将数据表中的数据记录映射到相应的数据虚分区。
根据本发明可选实施例,所述数据库系统还可以包括:系统扩容单元,用于在数据库系统扩容时,将每个原数据库节点中的部分数据虚分区根据负载均衡策略迁移到新增的数据库节点,其中每个原数据库节点中包括多个数据虚分区。
根据进一步的可选实施例,系统扩容单元可以包括计算单元和数据迁移单元。计算单元,用于获取扩容前每个数据库节点中配置的数据虚分区数,并记为第一数据虚分区值;将数据虚分区的总数除以扩容后数据库节点的总数,得到每个数据库节点中应配置的数据虚分区数,并记为第二数据虚分区值;和将每个数据库节点的所述第一数据虚分区值减去所述第二数据虚分区值得到多余的数据虚分区。数据迁移单元,用于将每个数据库节点中的多余的数据虚分区迁移到新增的数据库节点。
根据本发明可选实施例,数据库系统还可以包括:系统减容单元,用于在数据库系统减容时,将要被减的数据库节点中的多个数据虚分区根据负载均衡策略迁移到其他数据库节点。
根据本发明可选实施例,所述数据库系统还包括数据查询单元,用于执行以下功能:根据数据表中的要查询的数据记录所在列的取值信息以及数据记录与数据虚分区的映射关系确定所述要查询的数据记录所在的数据虚分区;根据所确定的数据虚分区和所述数据虚分区与数据库节点的映射关系确定对应的数据库节点;以及,从所确定的数据库节点中的所确定的数据虚分区获取要查询的数据记录。
关于本发明各实施例的数据库系统的详细描述可参见本申请中数据库系统的数据处理方法的部分的描述,在此不再赘述。
本发明实施例通过利用数据虚分区的方法可以进一步提高数据库系统的性能。例如,可以适应系统规模的动态伸缩,在数据库系统的节点数变化时,无需对数据记录重新执行数据划分,而且可以将系统的数据迁移量控制在最小值。此外,通过数据虚分区和Hash划分相结合的数据划分方法,能够较容易地达到多个数据库节点之间的数据量均衡,还可以保证数据库集群中各数据库节点数据量的均衡。
由于单个数据虚分区的记录数可以达到上亿或者更多,与现有的重新Hash划分的计算量相比,本发明的数据重新划分的计算量可以忽略不计(大约为几十亿分之一到几万分之一之间,视具体的数据量而定)。因此,在数据库集群系统中,将虚分区和数据划分相结合,提供了快速的进行数据的重新划分和分布的功能。
此外,虽然目前采用分布式Hash技术在超大规模的分布式系统中,也实现了数据的划分,但是在节点扩展时,分布式Hash技术采用的是将某个大的数据节点的数据拆分成两个,因此前提是数据本身发生了倾斜,否则系统扩展后各节点的数据量将发生倾斜。本发明实施例同样解决了节点扩展的问题,然而不同之处在于多个节点上的数据往新增节点迁移,实现了数据迁移前后的数据量均衡,因此具有更好的扩展性能。
在此提供的算法和实现不限于任何特定的计算机、虚拟系统或者其它设备。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或部件,以及此外可以把它们分成多个子模块或子单元或子部件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本申请的说明书中虽然描述了本发明实施例的大量具体细节,然而,能够理解,本发明实施例并不是必须在所有的具体细节情况下才能实施。在一些实例中,并未详细示出公知的方法、结构和技术,以便于清楚地理解本发明的发明主旨。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种数据库系统的数据处理方法,包括:
步骤A,将数据表中的每一数据记录根据数据记录与数据虚分区的映射关系映射到相应的数据虚分区;
步骤B,基于数据虚分区与数据库节点的映射关系将每一数据虚分区映射到相应的数据库节点;
步骤C,将数据表中的各数据记录存储到相应的数据库节点的相应的数据虚分区中。
2.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法还包括:
在步骤A之前建立所述数据表的数据虚分区信息记录,所述数据虚分区信息记录包括以下字段:数据表名、数据表的列名、数据虚分区规则,数据虚分区的总数和数据库节点的总数,其中,所述数据虚分区规则包括轮询分区规则、哈希Hash分区规则、范围Range分区规则或者列表List分区规则;和/或,
执行步骤B包括建立将每一数据虚分区映射到对应的数据库节点的数据虚分区映射表,所述数据虚分区映射表包括以下字段:数据虚分区号和数据库节点号。
3.根据权利要求2所述的数据处理方法,其特征在于,步骤A包括:
根据所述数据虚分区规则确定对所述数据表采用的数据记录与数据虚分区的映射关系;
根据所述数据表的列值、数据虚分区的总数以及所采用的数据记录与数据虚分区的映射关系将所述数据表中的数据记录映射到相应的数据虚分区。
4.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法还包括:
在数据库系统扩容时,将每个原数据库节点中的部分数据虚分区根据负载均衡策略迁移到新增的数据库节点,其中每个原数据库节点包括多个数据虚分区;或者,
在数据库系统减容时,将要被减的数据库节点中的多个数据虚分区根据负载均衡策略迁移到其他数据库节点。
5.根据权利要求4所述的数据处理方法,其特征在于,将每个原数据库节点中的部分数据虚分区根据负载均衡策略迁移到新增的数据库节点,包括:
获取扩容前每个数据库节点中配置的数据虚分区数,为第一数据虚分区值;
将数据虚分区的总数除以扩容后数据库节点的总数,得到每个数据库节点中应配置的数据虚分区数,为第二数据虚分区值;
将每个数据库节点的所述第一数据虚分区值减去所述第二数据虚分区值得到多余的数据虚分区;
将每个数据库节点中的多余的数据虚分区迁移到新增的数据库节点。
6.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法在步骤C之后,还包括:
当进行数据查询时,根据数据表中的要查询的数据记录所在列的取值信息以及所述数据记录与数据虚分区的映射关系确定所述要查询的数据记录所在的数据虚分区;
根据所确定的数据虚分区以及所述数据虚分区与数据库节点的映射关系确定对应的数据库节点;以及,
从所确定的数据库节点中的所确定的数据虚分区获取要查询的数据记录。
7.一种数据库系统,包括:
第一映射单元,用于将数据表中的每一数据记录根据数据记录与数据虚分区的映射关系映射到相应的数据虚分区;
第二映射单元,用于基于数据虚分区与数据库节点的映射关系将每一数据虚分区映射到相应的数据库节点;
数据分发单元,用于将数据表中的各数据记录存储到相应的数据库节点的相应的数据虚分区中。
8.根据权利要求7所述的数据库系统,其特征在于,所述数据库系统还包括:
第一元数据建立单元,用于建立所述数据表的数据虚分区信息记录,所述数据虚分区信息记录包括以下字段:数据表名、数据表的列名、数据虚分区规则,数据虚分区的总数和数据库节点的总数,其中,所述数据虚分区规则包括轮询分区规则、哈希Hash分区规则、范围Range分区规则或者列表List分区规则;和/或,
第二元数据建立单元,用于建立反映数据虚分区和数据库节点之间映射关系的数据虚分区映射表,所述数据虚分区映射表包括以下字段:数据虚分区号和数据库节点号。
9.根据权利要求7所述的数据库系统,其特征在于,所述第一映射单元包括:
映射关系确定单元,用于根据数据虚分区规则确定对所述数据表采用的数据记录与数据虚分区的映射关系;
数据映射单元,用于根据数据表的列值、数据虚分区的总数以及所采用的数据记录与数据虚分区的映射关系将数据表中的数据记录映射到相应的数据虚分区。
10.根据权利要求6所述的数据库系统,其特征在于,所述数据库系统还包括:
系统扩容单元,用于在数据库系统扩容时,将每个原数据库节点中的部分数据虚分区根据负载均衡策略迁移到新增的数据库节点,其中每个原数据库节点中包括多个数据虚分区;和/或,
系统减容单元,用于在数据库系统减容时,将要被减的数据库节点中的多个数据虚分区根据负载均衡策略迁移到其他数据库节点。
11.根据权利要求10所述的数据库系统,其特征在于,所述系统扩容单元,包括:
计算单元,用于获取扩容前每个数据库节点中配置的数据虚分区数,并记为第一数据虚分区值;将数据虚分区的总数除以扩容后数据库节点的总数,得到每个数据库节点中应配置的数据虚分区数,并记为第二数据虚分区值;和将每个数据库节点的所述第一数据虚分区值减去所述第二数据虚分区值得到多余的数据虚分区;
数据迁移单元,用于将每个数据库节点中的多余的数据虚分区迁移到新增的数据库节点。
12.根据权利要求6所述的数据库系统,其特征在于,所述数据库系统还包括数据查询单元,用于执行以下功能:
根据数据表中的要查询的数据记录所在列的取值信息以及所述数据记录与数据虚分区的映射关系确定所述要查询的数据记录所在的数据虚分区;
根据所确定的数据虚分区和所述数据虚分区与数据库节点的映射关系确定对应的数据库节点;以及,
从所确定的数据库节点中的所确定的数据虚分区获取要查询的数据记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210530823.6A CN102968503B (zh) | 2012-12-10 | 2012-12-10 | 数据库系统的数据处理方法以及数据库系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210530823.6A CN102968503B (zh) | 2012-12-10 | 2012-12-10 | 数据库系统的数据处理方法以及数据库系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102968503A true CN102968503A (zh) | 2013-03-13 |
CN102968503B CN102968503B (zh) | 2015-10-07 |
Family
ID=47798641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210530823.6A Active CN102968503B (zh) | 2012-12-10 | 2012-12-10 | 数据库系统的数据处理方法以及数据库系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102968503B (zh) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111924A (zh) * | 2013-04-16 | 2014-10-22 | 中国移动通信集团广东有限公司 | 一种数据库系统 |
CN104615657A (zh) * | 2014-12-31 | 2015-05-13 | 天津南大通用数据技术股份有限公司 | 一种节点支持多数据分片的分布式集群的扩容和缩容方法 |
CN104951528A (zh) * | 2015-06-15 | 2015-09-30 | 深圳市创梦天地科技有限公司 | 一种数据迁移的方法及终端 |
CN105095417A (zh) * | 2015-07-13 | 2015-11-25 | 小米科技有限责任公司 | 存储业务数据的方法、装置及数据库节点 |
CN105447112A (zh) * | 2015-11-12 | 2016-03-30 | 国云科技股份有限公司 | 一种实现关系数据库Hash分区高效扩展的方法 |
WO2016054818A1 (zh) * | 2014-10-11 | 2016-04-14 | 华为技术有限公司 | 数据处理方法和装置 |
CN105517644A (zh) * | 2014-03-05 | 2016-04-20 | 华为技术有限公司 | 一种数据分区方法和设备 |
CN105912601A (zh) * | 2016-04-05 | 2016-08-31 | 国电南瑞科技股份有限公司 | 能量管理系统分布式实时内存数据库的分区存储方法 |
CN103593436B (zh) * | 2013-11-12 | 2017-02-08 | 华为技术有限公司 | 文件合并方法和装置 |
CN106407308A (zh) * | 2016-08-31 | 2017-02-15 | 天津南大通用数据技术股份有限公司 | 一种分布式数据库的扩容方法及装置 |
CN106897344A (zh) * | 2016-07-21 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 分布式数据库的数据操作请求处理方法及装置 |
CN106997361A (zh) * | 2016-01-25 | 2017-08-01 | 中国移动通信集团湖南有限公司 | 一种数据分布方法及装置 |
CN107229648A (zh) * | 2016-03-25 | 2017-10-03 | 华为技术有限公司 | 一种资源处理方法及装置 |
CN107301249A (zh) * | 2017-07-25 | 2017-10-27 | 郑州云海信息技术有限公司 | 一种文件访问信息记录方法、系统及分布式集群系统 |
CN107395721A (zh) * | 2017-07-20 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种元数据集群扩容的方法和系统 |
CN107870954A (zh) * | 2016-09-28 | 2018-04-03 | 中国移动通信集团广东有限公司 | 一种分布式数据库的扩展方法及装置 |
CN108241539A (zh) * | 2018-01-03 | 2018-07-03 | 百度在线网络技术(北京)有限公司 | 基于分布式系统的交互式大数据查询方法、装置、存储介质和终端设备 |
CN108319623A (zh) * | 2017-01-18 | 2018-07-24 | 华为技术有限公司 | 一种数据重分布方法、装置及数据库集群 |
CN108932256A (zh) * | 2017-05-25 | 2018-12-04 | 中兴通讯股份有限公司 | 分布式数据重分布控制方法、装置及数据管理服务器 |
CN109117423A (zh) * | 2017-06-23 | 2019-01-01 | 阿里巴巴集团控股有限公司 | 数据库系统的表格分区配置方法、装置和系统 |
CN109656684A (zh) * | 2018-12-11 | 2019-04-19 | 杭州涂鸦信息技术有限公司 | 一种Kafka的分区方法、分区系统及相关装置 |
CN109828960A (zh) * | 2018-12-14 | 2019-05-31 | 平安科技(深圳)有限公司 | 日志库扩容方法、系统、计算机装置及可读存储介质 |
CN109918021A (zh) * | 2014-11-05 | 2019-06-21 | 华为技术有限公司 | 数据处理方法和装置 |
CN110019014A (zh) * | 2017-12-19 | 2019-07-16 | 华为技术有限公司 | 向文件系统写入数据记录的方法和装置 |
CN111522811A (zh) * | 2020-03-18 | 2020-08-11 | 大箴(杭州)科技有限公司 | 数据库的处理方法及装置、存储介质、终端 |
CN112395366A (zh) * | 2019-08-19 | 2021-02-23 | 阿里巴巴集团控股有限公司 | 分布式数据库的数据处理及创建方法、装置及电子设备 |
CN114491197A (zh) * | 2022-04-18 | 2022-05-13 | 孔智科技(徐州)有限公司 | 一种基于大数据的数据库扩展方法和装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1829962A (zh) * | 2003-08-01 | 2006-09-06 | 甲骨文国际公司 | 数据所有权的动态再分配 |
US20070271211A1 (en) * | 2006-05-18 | 2007-11-22 | Butcher David L | Database partitioning by virtual partitions |
CN102033889A (zh) * | 2009-09-29 | 2011-04-27 | 熊凡凡 | 分布式数据库并行处理系统 |
CN102033938A (zh) * | 2010-12-10 | 2011-04-27 | 天津神舟通用数据技术有限公司 | 基于二级映射的集群动态扩展方法 |
CN102207937A (zh) * | 2010-03-29 | 2011-10-05 | 华为技术有限公司 | 一种数据库访问方法和系统 |
CN102402616A (zh) * | 2011-12-22 | 2012-04-04 | 北京新媒传信科技有限公司 | 一种数据库集群的实现方法和系统 |
US20120143823A1 (en) * | 2010-12-07 | 2012-06-07 | Ibm Corporation | Database Redistribution Utilizing Virtual Partitions |
CN102521297A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 无共享数据库集群中实现系统动态扩展的方法 |
-
2012
- 2012-12-10 CN CN201210530823.6A patent/CN102968503B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1829962A (zh) * | 2003-08-01 | 2006-09-06 | 甲骨文国际公司 | 数据所有权的动态再分配 |
US20070271211A1 (en) * | 2006-05-18 | 2007-11-22 | Butcher David L | Database partitioning by virtual partitions |
CN102033889A (zh) * | 2009-09-29 | 2011-04-27 | 熊凡凡 | 分布式数据库并行处理系统 |
CN102207937A (zh) * | 2010-03-29 | 2011-10-05 | 华为技术有限公司 | 一种数据库访问方法和系统 |
US20120143823A1 (en) * | 2010-12-07 | 2012-06-07 | Ibm Corporation | Database Redistribution Utilizing Virtual Partitions |
CN102033938A (zh) * | 2010-12-10 | 2011-04-27 | 天津神舟通用数据技术有限公司 | 基于二级映射的集群动态扩展方法 |
CN102521297A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 无共享数据库集群中实现系统动态扩展的方法 |
CN102402616A (zh) * | 2011-12-22 | 2012-04-04 | 北京新媒传信科技有限公司 | 一种数据库集群的实现方法和系统 |
Non-Patent Citations (2)
Title |
---|
何立群: "数据库集群系统负载均衡技术的应用", 《煤炭技术》, vol. 30, no. 8, 31 August 2011 (2011-08-31) * |
殷佳欣等: "集群数据库系统多指标动态负载均衡方法的设计与实现", 《中国科学院研究生院学报》, vol. 29, no. 1, 31 January 2012 (2012-01-31) * |
Cited By (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111924A (zh) * | 2013-04-16 | 2014-10-22 | 中国移动通信集团广东有限公司 | 一种数据库系统 |
CN104111924B (zh) * | 2013-04-16 | 2018-05-11 | 中国移动通信集团广东有限公司 | 一种数据库系统 |
CN103593436B (zh) * | 2013-11-12 | 2017-02-08 | 华为技术有限公司 | 文件合并方法和装置 |
CN105517644A (zh) * | 2014-03-05 | 2016-04-20 | 华为技术有限公司 | 一种数据分区方法和设备 |
CN105517644B (zh) * | 2014-03-05 | 2020-04-21 | 华为技术有限公司 | 一种数据分区方法和设备 |
US11003719B2 (en) | 2014-10-11 | 2021-05-11 | Huawei Technologies Co., Ltd. | Method and apparatus for accessing a storage disk |
WO2016054818A1 (zh) * | 2014-10-11 | 2016-04-14 | 华为技术有限公司 | 数据处理方法和装置 |
CN109918021A (zh) * | 2014-11-05 | 2019-06-21 | 华为技术有限公司 | 数据处理方法和装置 |
CN104615657A (zh) * | 2014-12-31 | 2015-05-13 | 天津南大通用数据技术股份有限公司 | 一种节点支持多数据分片的分布式集群的扩容和缩容方法 |
CN104951528A (zh) * | 2015-06-15 | 2015-09-30 | 深圳市创梦天地科技有限公司 | 一种数据迁移的方法及终端 |
CN104951528B (zh) * | 2015-06-15 | 2019-08-23 | 深圳市创梦天地科技有限公司 | 一种数据迁移的方法及终端 |
CN105095417A (zh) * | 2015-07-13 | 2015-11-25 | 小米科技有限责任公司 | 存储业务数据的方法、装置及数据库节点 |
CN105447112A (zh) * | 2015-11-12 | 2016-03-30 | 国云科技股份有限公司 | 一种实现关系数据库Hash分区高效扩展的方法 |
CN105447112B (zh) * | 2015-11-12 | 2019-02-01 | 国云科技股份有限公司 | 一种实现关系数据库Hash分区高效扩展的方法 |
CN106997361B (zh) * | 2016-01-25 | 2020-05-12 | 中国移动通信集团湖南有限公司 | 一种数据分布方法及装置 |
CN106997361A (zh) * | 2016-01-25 | 2017-08-01 | 中国移动通信集团湖南有限公司 | 一种数据分布方法及装置 |
CN107229648A (zh) * | 2016-03-25 | 2017-10-03 | 华为技术有限公司 | 一种资源处理方法及装置 |
CN105912601A (zh) * | 2016-04-05 | 2016-08-31 | 国电南瑞科技股份有限公司 | 能量管理系统分布式实时内存数据库的分区存储方法 |
CN106897344A (zh) * | 2016-07-21 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 分布式数据库的数据操作请求处理方法及装置 |
CN106407308A (zh) * | 2016-08-31 | 2017-02-15 | 天津南大通用数据技术股份有限公司 | 一种分布式数据库的扩容方法及装置 |
CN107870954A (zh) * | 2016-09-28 | 2018-04-03 | 中国移动通信集团广东有限公司 | 一种分布式数据库的扩展方法及装置 |
CN107870954B (zh) * | 2016-09-28 | 2021-09-21 | 中国移动通信集团广东有限公司 | 一种分布式数据库的扩展方法及装置 |
US11726984B2 (en) | 2017-01-18 | 2023-08-15 | Huawei Technologies Co., Ltd. | Data redistribution method and apparatus, and database cluster |
CN108319623B (zh) * | 2017-01-18 | 2021-10-22 | 华为技术有限公司 | 一种数据重分布方法、装置及数据库集群 |
CN108319623A (zh) * | 2017-01-18 | 2018-07-24 | 华为技术有限公司 | 一种数据重分布方法、装置及数据库集群 |
CN108932256A (zh) * | 2017-05-25 | 2018-12-04 | 中兴通讯股份有限公司 | 分布式数据重分布控制方法、装置及数据管理服务器 |
CN109117423A (zh) * | 2017-06-23 | 2019-01-01 | 阿里巴巴集团控股有限公司 | 数据库系统的表格分区配置方法、装置和系统 |
CN107395721A (zh) * | 2017-07-20 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种元数据集群扩容的方法和系统 |
CN107301249A (zh) * | 2017-07-25 | 2017-10-27 | 郑州云海信息技术有限公司 | 一种文件访问信息记录方法、系统及分布式集群系统 |
CN110019014A (zh) * | 2017-12-19 | 2019-07-16 | 华为技术有限公司 | 向文件系统写入数据记录的方法和装置 |
CN108241539A (zh) * | 2018-01-03 | 2018-07-03 | 百度在线网络技术(北京)有限公司 | 基于分布式系统的交互式大数据查询方法、装置、存储介质和终端设备 |
CN108241539B (zh) * | 2018-01-03 | 2021-05-07 | 百度在线网络技术(北京)有限公司 | 基于分布式系统的交互式大数据查询方法、装置、存储介质和终端设备 |
CN109656684A (zh) * | 2018-12-11 | 2019-04-19 | 杭州涂鸦信息技术有限公司 | 一种Kafka的分区方法、分区系统及相关装置 |
CN109828960A (zh) * | 2018-12-14 | 2019-05-31 | 平安科技(深圳)有限公司 | 日志库扩容方法、系统、计算机装置及可读存储介质 |
CN109828960B (zh) * | 2018-12-14 | 2024-05-28 | 平安科技(深圳)有限公司 | 日志库扩容方法、系统、计算机装置及可读存储介质 |
CN112395366A (zh) * | 2019-08-19 | 2021-02-23 | 阿里巴巴集团控股有限公司 | 分布式数据库的数据处理及创建方法、装置及电子设备 |
CN111522811A (zh) * | 2020-03-18 | 2020-08-11 | 大箴(杭州)科技有限公司 | 数据库的处理方法及装置、存储介质、终端 |
CN111522811B (zh) * | 2020-03-18 | 2023-04-07 | 大箴(杭州)科技有限公司 | 数据库的处理方法及装置、存储介质、终端 |
CN114491197A (zh) * | 2022-04-18 | 2022-05-13 | 孔智科技(徐州)有限公司 | 一种基于大数据的数据库扩展方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102968503B (zh) | 2015-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102968503A (zh) | 数据库系统的数据处理方法以及数据库系统 | |
CN101604337B (zh) | 一种哈希表项存储、查找装置及方法 | |
US8099440B2 (en) | Method for laying out fields in a database in a hybrid of row-wise and column-wise ordering | |
US20150310047A1 (en) | System and Method for Composing a Multidimensional Index Key in Data Blocks | |
WO2007137133A2 (en) | Database partitioning by virtual partitions | |
CN102402602A (zh) | 一种实时数据库的b+树索引方法及装置 | |
JP2011510379A5 (zh) | ||
CN105426396A (zh) | 一种基于路由算法的数据库分片方法、系统和中间件系统 | |
CN103294702A (zh) | 一种数据处理方法、装置及系统 | |
CN103745008A (zh) | 一种大数据索引的排序方法 | |
CN103473314A (zh) | 一种基于共享内存的键值对存储方法及装置 | |
WO2014067449A1 (en) | System and method for flexible distributed massively parallel processing (mpp) database | |
CN102662869A (zh) | 虚拟机中的内存访问方法和装置及查找器 | |
Liroz-Gistau et al. | Dynamic workload-based partitioning for large-scale databases | |
CN105677915A (zh) | 一种基于引擎的分布式业务数据存取方法 | |
CN102117305B (zh) | 查询数据的系统、方法和数据管理系统 | |
CN104462080B (zh) | 针对检索结果进行分组统计的索引结构创建方法和系统 | |
CN104426774A (zh) | 一种同时支持IPv4和IPv6的高速路由查找方法及装置 | |
CN103036796B (zh) | 路由信息更新方法及装置 | |
CN103902743A (zh) | 通过业务名词操控数据的自助查询方法 | |
JP5464017B2 (ja) | 分散メモリデータベースシステム、データベースサーバ、データ処理方法およびそのプログラム | |
CN116910061A (zh) | 一种数据库的分库分表方法、装置、设备及可读存储介质 | |
Liroz-Gistau et al. | Dynamic workload-based partitioning algorithms for continuously growing databases | |
CN104112025A (zh) | 处理节点计算能力感知的虚拟资产数据划分方法 | |
US10942864B2 (en) | Shared memory for distributed data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170214 Address after: 211106 Jiangning economic and Technological Development Zone, Jiangsu, general Avenue, No. 37, No. Patentee after: JIANGSU DAWN INFORMATION TECHNOLOGY CO., LTD. Address before: 100193 Beijing, Haidian District, northeast Wang West Road, building 8, No. 36 Patentee before: Dawning Information Industry (Beijing) Co., Ltd. |