一种应用于数据库的数据处理方法及系统的制作方法

文档序号:10534921阅读:730来源:国知局
一种应用于数据库的数据处理方法及系统的制作方法
【专利摘要】本发明公开了一种应用于数据库的数据处理方法及系统,其中,所述方法包括:根据预设的映射策略确定主键、数据表编号、数据库编号三者之间的映射关系;根据主键、数据表编号和数据库编号三者的映射关系将主键所对应的数据存储至相应数据库的数据表中。采用本发明,能够将数据均匀分布在数据库中,并且能支持快速的数据迁移处理。
【专利说明】
一种应用于数据库的数据处理方法及系统
技术领域
[0001]本发明涉及数据处理领域,更为具体而言,涉及一种应用于数据库的数据处理方法及系统。
【背景技术】
[0002]为了支持高并发、大数据量的访问场景,现有技术通常都会采用数据库的分库策略从而提高应用的并发处理能力。然而,对应用数据进行分库,就会涉及到数据如何分布和数据迀移的问题。目前,并没有好的方法能既保证数据均匀分布,同时还可以支持数据(例如,热点数据)的快速迀移。
[0003]例如,现有的数据库分库方式,都是通过一致性哈希算法计算出记录/数据应当分布在哪个数据库中,然后存储在该数据库中。这种方式存在如下缺点:仅是计算出数据存储的数据库,该数据库在访问过于集中时容易导致数据库性能下降;在需要迀移部分数据到其他数据库中时,只能单条记录导出,然后再导入到其他的数据库中,该方式效率低下,导致联机交易时间长并且影响了涉及到数据库的所有数据访问,影响范围大。

【发明内容】

[0004]鉴于现有技术的上述缺陷,本发明实施方式提供了一种应用于数据库的数据处理方法及系统,能够将数据均匀分布在数据库中,并且能支持快速的数据迀移处理。
[0005]具体地,本发明实施方式提供了一种应用于数据库的数据处理方法,其包括:
[0006]根据预设的映射策略确定主键、数据表编号、数据库编号三者之间的映射关系;
[0007]根据主键、数据表编号和数据库编号三者的映射关系将主键所对应的数据存储至相应数据库的数据表中。
[0008]相应地,本发明实施方式还提供了一种应用于数据库的数据处理装置,其包括:
[0009]关系确认模块,用于根据预设的映射策略确定主键、数据表编号、数据库编号三者之间的映射关系;
[0010]数据存储模块,用于根据主键、数据表编号和数据库编号三者的映射关系将主键所对应的数据存储至相应数据库的数据表中。
[0011]采用本发明实施方式,具有以下有益效果:
[0012]根据预设策略确定主键、数据表编号、数据库编号三者之间的映射关系,从而能将数据均匀分布在数据库的数据表中,尽量减少热点数据的集中分布。
[0013]通过将待迀移数据完整分布在整张表中,便于进行整张数据表迀移,可以使用命令快速迀移,同时对应用的影响仅限于该表中数据,对其他数据无任何影响,从而将对应用的影响降至最低。
【附图说明】
[0014]图1是根据本发明实施例的一种应用于数据库的数据处理方法的流程示意图;
[0015]图2是根据本发明实施例的一种根据第一映射策略确定主键、数据表编号二者的映射关系的流程不意图;
[0016]图3是根据本发明实施例的一种根据第二映射策略确定数据表编号、数据库编号一■者的映射关系的流程不意图;
[0017]图4是根据本发明实施例的一种应用于数据库的数据处理装置的框图的一例;
[0018]图5是根据本发明实施例的一种应用于数据库的数据处理装置的框图的另一例。
【具体实施方式】
[0019]为了便于理解本发明技术方案的各个方面、特征以及优点,下面结合附图对本发明进行具体描述。应当理解,下述的各种实施方式只用于举例说明,而非用于限制本发明的保护范围。
[0020]图1是根据本发明实施例的一种应用于数据库的数据处理方法的流程示意图。参照图1,所述方法包括:
[0021]10:根据预设的映射策略确定主键、数据表编号、数据库编号三者之间的映射关系。换言之,也就是确定主键、数据表、数据库三者之间的映射关系。
[0022]12:根据主键、数据表编号和数据库编号三者的映射关系将主键所对应的数据存储至相应数据库的数据表中。
[0023]在本发明中,通过数据表编号(业界又称作篮子号)和数据库编号来区分不同的数据表(业界又称作篮子)和数据库。主键则优选区分度高的主键,在本实施例中可以利用主键的键值计算其存储所在的数据库编号和数据表编号。
[0024]举例而言,针对电子商务系统,采用本发明实施例提供的方法,可以将客户号作为主键来计算其对应的数据库编号和数据表编号,并将相应数据存储到对应数据库的数据表中。
[0025]采用本发明实施例提供的方法,根据预设策略确定主键、数据表编号、数据库编号三者之间的映射关系,从而能将数据均匀分布在数据库的数据表中,尽量减少热点数据分布。而通过将待迀移数据完整分布在整张表中,便于进行整张数据表迀移,并且可以使用命令快速迀移。此外,数据迀移对应用的影响仅限于迀移数据的数据表中的数据,对其他数据无任何影响,将对应用的影响降至最低。
[0026]可选地,在本实施例的一种实现方式中,处理10可以通过先确定主键、数据表编号二者的映射关系,再确定数据表编号、数据库编号二者的映射关系的方式实现。当然,在其它实现方式中,也可以根据本实现方式提供的方法直接确定三者的对应关系。
[0027]具体而言,在本实现方式中,如图2所示,可采用以下方式从而根据第一映射策略确定主键、数据表编号二者的映射关系(输入参数为主键、输出参数为数据表编号)。
[0028]1.计算主键的哈希值H。例如,根据MurMurHash哈希算法计算。
[0029]2.根据H进行判断。如果H为O,则主键对应的数据表编号为最小编号;如果H为232,则主键对应的数据表编号为最大编号;如果He (O,232),则主键对应的数据表编号为[(H-L)](即,对H + L的值取整),L表示每个数据表对应的哈希区间长度。其中,L = 232 + N,N表示数据表总数。数据表总数是指分布在所有数据库上的所有数据表的个数,例如:篮子总数是1024,那么客户表可分成1024张表,每张表类似于cust 1、cust2、cust3、cust4...cust 1024,即编号从小到大依次是从I到1024。
[0030]3.返回数据表编号。
[0031]另一方面,在本实现方式中,可以采用以下方式从而根据第二映射策略确定数据表编号、数据库编号二者的映射关系。
[0032]将每个数据库编号及每个数据库编号对应的虚拟节点的哈希值存储于采用预设结构的哈希环中;根据哈希值从小到大的顺序遍历所述哈希环,对于每个数据表编号,将遍历得到的第一个比其哈希值大的哈希值所对应的数据库编号作为与其对应的数据库编号。
[0033]具体而言,如图3所示,首先,初始化一致性哈希环nodes,其存储哈希值和数据库编号的映射关系。包括:①初始化nodes为java.uti 1.TreeMap结构。②由于每个数据库编号对应多个虚拟节点,因此,计算每个虚拟节点(每个虚拟节点用字符串:“"SHARD"+数据库编号+"NODE"+虚拟节点编号”表示,其中,SHARD和NODE均为字符串,用于表示所有虚拟节点所对应的字符串中的相同部分,原则上可以取任意值)的哈希值,从而将每个数据库编号和与其对应的虚拟节点的哈希值建立一个对应关系,并将计算得出的每个虚拟节点的哈希值和对应的数据库编号存储于哈希环中。在哈希环中,按照哈希值从小到大的顺序排列,哈希环中的节点个数为:数据库数目X每个数据库编号对应的虚拟节点数目。然后,计算各数据表编号的哈希值。之后,遍历哈希环,针对每一个数据表编号,找出哈希环中第一个大于数据表编号的哈希值的哈希值所对应的数据库编号。最后,返回数据表编号和数据库编号的映射关系。
[0034]采用本实现方式提供的方法,支持快速迀移数据。例如,在数据迀移时,将待迀移数据表中的数据直接通过imp/exp命令迀移到另一数据库中,同时修改数据表编号和数据库编号的映射关系。
[0035]可选地,在本实施例的一种实现方式中,如图1中虚线框所示,所述方法还可以包括:
[0036]14:为每个数据表编号设置用于表示该数据表编号是否可用的可用状态字段。换言之,所述可用状态字段用于配置表示数据表编号所对应的数据表是否可用的信息。例如,当可用状态字段为I时,表示数据表编号可用,此时允许正常访问数据库表;当可用状态字段为O时,表示数据表编号不可用,此时可抛出异常以及禁止应用访问该数据表中的数据。
[0037]采用本实现方式,可以在数据迀移时修改数据库中对应记录的可用状态字段为不可用,之后再执行数据迀移处理(例如,迀移整张数据表至目标数据库)并在数据迀移处理之后修改数据库编号与数据表编号的映射关系。这样,只会影响这个数据表的客户访问而不会影响其他客户,从而降低数据迀移的影响范围。
[0038]图4是根据本发明实施例的一种应用于数据库的数据处理装置的框图的一例。参照图4,数据处理装置包括关系确认模块40和数据存储模块42。其中,关系确认模块40用于根据预设的映射策略确定主键、数据表编号、数据库编号三者之间的映射关系;数据存储模块42用于根据主键、数据表编号和数据库编号三者的映射关系将主键所对应的数据存储至相应数据库的数据表中。
[0039]采用本实施例提供的数据处理装置,能将数据均匀分布在数据库的数据表中,尽量减少热点数据分布。而通过将待迀移数据完整分布在整张表中,便于进行整张数据表迀移,并且可以使用命令快速迀移。此外,数据迀移对应用的影响仅限于迀移数据的数据表中的数据,对其他数据无任何影响,将对应用的影响降至最低。
[OO4O]可选地,在本实施例的一种实现方式中,关系确认模块40包括第一确认模块401,其用于采用以下方式从而根据第一映射策略确定主键、数据表编号二者的映射关系:根据H进行判断;如果H为O,则主键对应的数据表编号为最小编号;如果H为232,则主键对应的数据表编号为最大编号;如果He (O,232),则主键对应的数据表编号为[(H+L)];其中,H表示主键的哈希值,L表示每个数据表对应的哈希区间长度。
[0041 ]可选地,在本实施例的一种实现方式中,关系确认模块40包括第二确认模块402,其用于采用以下方式从而根据第二映射策略确定数据表编号、数据库编号二者的映射关系:将每个数据库编号及每个数据库编号对应的虚拟节点的哈希值存储于采用预设结构的哈希环中;根据哈希值从小到大的顺序遍历所述哈希环,对于每个数据表编号,将遍历得到的第一个比其哈希值大的哈希值所对应的数据库编号作为与其对应的数据库编号。
[0042]图5是根据本发明实施例的一种应用于数据库的数据处理装置的框图的另一例。参照图5虚线框所示,所述数据处理装置除了包括关系确认模块40和数据存储模块42之外,还可以包括数据迀移模块50,其用于在执行数据迀移处理时,将待迀移数据所在的待迀移数据表迀移至目标数据库,例如,通过imp/exp命令实现数据迀移。
[0043]可选地,在本实施例的一种实现方式中,如图5中虚线框所示,数据处理装置还可以包括字段设置模块44,其用于为每个数据表编号设置用于表示该数据表编号是否可用的可用状态字段。进一步可选地,如图5中的虚线框所示,数据处理装置还可以包括:状态设置模块46,用于在数据迀移处理之前,例如,在数据迀移模块50执行数据迀移处理之前,将待进行数据迀移的数据表所对应的数据表编号的可用状态字段设置为不可用,从而禁止该数据表被访问;映射关系模块48,其用于数据迀移处理之后,例如,在数据迀移模块50执行数据迀移处理之后,修改数据表编号、数据库编号二者的映射关系。
[0044]本领域技术人员应当理解,本发明提供的装置实施例可以实现本发明提供的方法实施例,而本发明提供的方法实施例又可以理解为本发明提供的装置实施例的处理逻辑,二者是相互关联的。因此,在装置实施例中,关于相关名称、术语、范围的解释,关于各个模块所执行处理或可执行处理的说明,以及关于各个实施例和实现方式的有益效果的描述,请参见方法实施例中的相应说明,此处不再赘述。
[0045]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对【背景技术】做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0046]本领技术人员应当理解,以上所公开的仅为本发明的实施方式而已,当然不能以此来限定本发明之权利范围,依本发明实施方式所作的等同变化,仍属本发明权利要求所涵盖的范围。
【主权项】
1.一种应用于数据库的数据处理方法,其特征在于,所述方法包括: 根据预设的映射策略确定主键、数据表编号、数据库编号三者之间的映射关系; 根据主键、数据表编号和数据库编号三者的映射关系将主键所对应的数据存储至相应数据库的数据表中。2.如权利要求1所述的方法,其特征在于,根据预设的映射策略确定主键、数据表编号、数据库编号三者之间的映射关系包括: 采用以下方式从而根据第一映射策略确定主键、数据表编号二者的映射关系: 根据H进行判断; 如果H为O,则主键对应的数据表编号为最小编号; 如果H为232,则主键对应的数据表编号为最大编号; 如果HG(0,232),则主键对应的数据表编号为[(H+L)]; 其中,H表示主键的哈希值,L表示各数据表对应的哈希区间长度。3.如权利要求1或2所述的方法,其特征在于,根据预设的映射策略确定主键、数据表编号、数据库编号三者之间的映射关系包括: 采用以下方式从而根据第二映射策略确定数据表编号、数据库编号二者的映射关系:将每个数据库编号及每个数据库编号对应的虚拟节点的哈希值存储于采用预设结构的哈希环中; 根据哈希值从小到大的顺序遍历所述哈希环,对于每个数据表编号,将遍历得到的第一个比其哈希值大的哈希值所对应的数据库编号作为与其对应的数据库编号。4.如权利要求1所述的方法,其特征在于,所述方法还包括: 在执行数据迀移处理时,将待迀移数据所在的待迀移数据表迀移至目标数据库。5.如权利要求1或4所述的方法,其特征在于,所述方法还包括: 为每个数据表编号设置用以表示该数据表编号是否可用的可用状态字段。6.如权利要求5所述的方法,其特征在于,所述方法还包括: 在数据迀移处理之前,将待迀移数据所在的待迀移数据表所对应的数据表编号的可用状态字段设置为不可用,从而禁止该数据表被访问; 在数据迀移处理之后,修改数据表编号、数据库编号二者的映射关系。7.一种应用于数据库的数据处理装置,其特征在于,所述装置包括: 关系确认模块,用于根据预设的映射策略确定主键、数据表编号、数据库编号三者之间的映射关系; 数据存储模块,用于根据主键、数据表编号和数据库编号三者的映射关系将主键所对应的数据存储至相应数据库的数据表中。8.如权利要求7所述的装置,其特征在于,所述关系确认模块包括: 第一确认模块,用于采用以下方式从而根据第一映射策略确定主键、数据表编号二者的映射关系: 根据H进行判断; 如果H为O,则主键对应的数据表编号为最小编号; 如果H为232,则主键对应的数据表编号为最大编号; 如果HG(0,232),则主键对应的数据表编号为[(H+L)]; 其中,H表示主键的哈希值,L表示各数据表对应的哈希区间长度。9.如权利要求7或8所述的装置,其特征在于,所述关系确认模块包括: 第二确认模块,用于采用以下方式从而根据第二映射策略确定数据表编号、数据库编号一.者的映射关系: 将每个数据库编号及每个数据库编号对应的虚拟节点的哈希值存储于采用预设结构的哈希环中; 根据哈希值从小到大的顺序遍历所述哈希环,对于每个数据表编号,将遍历得到的第一个比其哈希值大的哈希值所对应的数据库编号作为与其对应的数据库编号。10.如权利要求7所述的装置,其特征在于,所述装置还包括: 数据迀移模块,用于在执行数据迀移处理时,将待迀移数据所在的待迀移数据表迀移至目标数据库。11.如权利要求7或10所述的装置,其特征在于,所述装置还包括: 字段设置模块,用于为每个数据表编号设置用以表示该数据表编号是否可用的可用状态字段。12.如权利要求11所述的装置,其特征在于,所述装置还包括: 状态设置模块,用于在数据迀移处理之前,将待迀移数据所在的待迀移数据表所对应的数据表编号的可用状态字段设置为不可用,从而禁止该数据表被访问; 映射关系模块,用于在数据迀移处理之后,修改数据表编号、数据库编号二者的映射关系O
【文档编号】G06F17/30GK105893466SQ201610183303
【公开日】2016年8月24日
【申请日】2016年3月28日
【发明人】邢磊, 舒展, 聂砂, 贾国琛, 杨宇鹏
【申请人】中国建设银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1