一种数据库管理装置和方法
【专利摘要】本发明实施例公开了一种数据库管理装置和方法。本实施例提供的装置包括:标识码生成模块,用于生成待存储数据对应的标识码;获取模块,用于在预先确定的数据范围内获取待存储数据对应的散列值;编号生成模块,用于根据标识码生成模块生成的标识码和获取模块获取的散列值,生成用于处理待存储数据的编号信息,其中,编号信息为均匀散列的编码字符。本发明实施例解决了现有技术中的数据库在使用过程中,由于生成的与待处理数据对应的编号可能是连续的或者散列不够均衡,使得数据库中各数据块上的数据的均衡性较差,而导致数据库中资源利用率较低,以及系统性能较差的问题。
【专利说明】
一种数据库管理装置和方法
技术领域
[0001]本申请涉及但不限于计算机和数据库技术领域,尤指一种数据库管理装置和方法。
【背景技术】
[0002]随着互联网和计算机技术的发展,以及海量数据应用的普及,为了满足用户对海量数据的存储和应用,面向海量数据存储的技术应用也随之越来越广泛,例如,HBase存储技术。
[0003]海量数据存储的技术应用的合理使用,可以提高资源利用率和系统性能,然而,如果使用不当,则会对资源的利用和系统性能的提高造成不利的影响。举例来说,由于HBase的工作原理是根据行主键(RowKey)来决定由哪块数据块(Reg1n)来处理数据,该RowKey通常为与指定数据对应的编号(Identificat1n,简称为:ID)。如图1所示,为现有技术中的一种HBase的工作原理示意图,在生成某块Reg1n时就决定了该Reg1n用于处理哪个数据范围内的RowKey对应的数据,例如Reg1nl (O?A)用于处理数据范围在[00000,9zzzzz]之间的RowKey对应的数据,具体地,每份数据在存入HBase之前,需要生成一个与该数据对应的RowKey,该RowKey映射到的Reg1n即为处理该数据的Reg1n。在实际应用中,存在这样一种情况:如果生成的RowKey是连续的或者散列不够均衡,就会导致HBase中各个Reg1n上的数据不够均衡;以最极端的情况为例进行说明,即生成的RowKey是连续的,此时某个特定范围内的所有数据都存储到同一个Reg1n上,例如在[00000,9zzzzz]范围内的RowKey对应的数据都存储到Reg1nl (O?A)中,而Reg1n2?Reg1n4中可能并没有存储数据,这样会造成加载Reg1nl(0?A)的服务器的负载过大,而系统中的其他服务器又过于空闲,产生资源利用不合理的现象。
[0004]综上所述,现有技术中的数据库在使用过程中,由于生成的与待处理数据对应的编号可能是连续的或者散列不够均衡,使得数据库中各数据块上的数据的均衡性较差,而导致数据库中资源利用率较低,以及系统性能较差的问题。
【发明内容】
[0005]为了解决上述技术问题,本发明实施例提供了一种数据库管理方法和装置,以解决现有技术中的数据库在使用过程中,由于生成的与待处理数据对应的编号可能是连续的或者散列不够均衡,使得数据库中各数据块上的数据的均衡性较差,而导致数据库中资源利用率较低,以及系统性能较差的问题。
[0006]本发明实施例提供一种数据库管理装置,包括:
[0007]标识码生成模块,用于生成待存储数据对应的标识码;
[0008]获取模块,用于在预先确定的数据范围内获取所述待存储数据对应的散列值;
[0009]编号生成模块,用于根据所述标识码生成模块生成的所述标识码和所述获取模块获取的所述散列值,生成用于处理所述待存储数据的编号信息,其中,所述编号信息为均匀散列的编码字符。
[0010]可选地,如上所述的数据库管理装置中,所述获取模块包括:
[0011]转换单元,用于将预置散列范围转换为第二进制下的数据范围,其中,所述预置散列范围为第一进制下的数据范围,所述第二进制的进位数小于所述第一进制的进位数;
[0012]选取单元,用于在所述转换单元得到的所述第二进制下的数据范围内选取随机值;
[0013]所述转换单元,还用于将所述选取单元选取的所述随机值转换为所述第一进制下的数据符号;
[0014]获取单元,用于根据所述转换单元得到的所述第一进制下的数据符号获取所述散列值。
[0015]可选地,如上所述的数据库管理装置中,所述获取模块还包括:确定单元,用于在所述转换单元将所述预置散列范围转换为所述第二进制下的数据范围之前,确定所述预置散列范围和所述散列值的预置长度;
[0016]所述获取单元用于根据所述转换单元得到的所述第一进制下的数据符号获取所述散列值,包括:
[0017]当所述数据符号的长度等于所述预置长度时,将所述数据符号确定为所述散列值;
[0018]当所述数据符号的长度小于所述预置长度时,在所述数据符号的高位侧补充起始散列值的最高位字符,将补充后的数据符号确定为所述散列值,其中,所补充字符的长度与所述数据符号的长度之和等于所述预置长度。
[0019]可选地,如上所述的数据库管理装置中,所述第一进制为62进制;和/或,所述第二进制为1进制。
[0020]可选地,如上所述的数据库管理装置中,所述数据库管理装置还包括:
[0021]存储模块,用于在所述编号生成模块生成用于处理所述待存储数据的编号信息之后,将所述待存储数据存入与所述编号信息对应的数据块中;和/或,
[0022]处理模块,用于在接收到处理指定数据的指令时,根据所述指定数据的编号信息指示所述编号信息对应的数据块对所述指定数据进行处理。
[0023]本发明实施例还提供一种数据库管理方法,包括:
[0024]生成待存储数据对应的标识码;
[0025]在预先确定的数据范围内获取所述待存储数据对应的散列值;
[0026]根据所述标识码和所述散列值,生成用于处理所述待存储数据的编号信息,其中,所述编号信息为均匀散列的编码字符。
[0027]可选地,如上所述的数据库管理方法中,所述获取所述待存储数据对应的散列值,包括:
[0028]将预置散列范围转换为第二进制下的数据范围,其中,所述预置散列范围为第一进制下的数据范围,所述第二进制的进位数小于所述第一进制的进位数;
[0029]在所述第二进制下的数据范围内选取随机值;
[0030]将所述随机值转换为所述第一进制下的数据符号;
[0031 ]根据所述第一进制下的数据符号获取所述散列值。
[0032]可选地,如上所述的数据库管理方法中,所述方法还包括:所述将预置散列范围转换为第二进制下的数据范围之前,确定所述预置散列范围和所述散列值的预置长度;
[0033]所述根据所述第一进制下的数据符号获取所述散列值,包括:
[0034]当所述数据符号的长度等于所述预置长度时,将所述数据符号确定为所述散列值;
[0035]当所述数据符号的长度小于所述预置长度时,在所述数据符号的高位侧补充起始散列值的最高位字符,将补充后的数据符号确定为所述散列值,其中,所补充字符的长度与所述数据符号的长度之和等于所述预置长度。
[0036]可选地,如上所述的数据库管理方法中,所述第一进制为62进制;和/或,所述第二进制为1进制。
[0037]可选地,如上所述的数据库管理方法中,所述方法还包括:
[0038]在生成用于处理所述待存储数据的编号信息之后,将所述待存储数据存入与所述编号信息对应的数据块中;和/或,
[0039]在接收到处理指定数据的指令时,根据所述指定数据的编号信息指示所述编号信息对应的数据块对所述指定数据进行处理。
[0040]本发明实施例提供的信号数据库管理装置和方法,通过标识码生成模块生成待存储数据对应的标识码,获取模块在预先确定的数据范围内获取该待存储数据对应的散列值,随后由编号生成模块根据标识码生成模块生成的标识码和获取模块获取的散列值,生成用于处理该待存储数据的编号信息,其中,该编号信息为均匀散列的编码字符;本发明实施例提供的数据库管理装置,解决了现有技术中的数据库在使用过程中,由于生成的与待处理数据对应的编号可能是连续的或者散列不够均衡,使得数据库中各数据块上的数据的均衡性较差,而导致数据库中资源利用率较低,以及系统性能较差的问题。
【附图说明】
[0041]附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
[0042]图1为现有技术中的一种HBase的工作原理示意图;
[0043]图2为本发明实施例提供的一种数据库管理装置的结构示意图;
[0044]图3为本发明实施例提供的另一种数据库管理装置的结构示意图;
[0045]图4为本发明实施例提供的又一种数据库管理装置的结构示意图;
[0046]图5为本发明实施例提供的一种数据库管理方法的流程图;
[0047]图6为本发明实施例提供的另一种数据库管理方法的流程图;
[0048]图7为本发明实施例提供的又一种数据库管理方法的流程图。
【具体实施方式】
[0049]应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0050]现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元见得诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。
[0051]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0052]在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0053]现有技术中已设计出一些编号信息的生成方式,如【背景技术】中所述的,该编号信息为针对每份数据生成的,即数据库中的数据与编号信息通常应该是一一对应的关系。以下同样以HBase中RowKey(即编号信息)的生成方式为例予以说明,首先介绍HBase中的一些基本概念:
[0054]1、HBase:是一个分布式的、面向列的开源数据库;
[0055]2、RowKey:是HBase中表格的行主键;
[0056]3、Reg1n:是HBase中表格实际保存数据的数据块,所有同一表格下的Reg1n组成了完整的表数据;
[0057]4、Reg1nServer:加载Reg 1n 的服务器,一个Reg 1n 只能由一个Reg1nServer 加载;
[0058]5、62进制:HBase中存储数据时常用的进制模式,62进制的顺序可以为:0-9a_zA-
Z0
[0059]现有技术中这对HBase,通常具有以下两种RowKey的设计方案:
[0000]方法一:为预先生成的Reg1nl设置一个编号,例如为:a,并设定该Reg1nl将只接收RowKey首位是a的数据。在具体应用中,当有数据需要存入HBase时,在已经为每份数据创建唯一 RowKey的基础上,RowKey按顺序加上各编号的前缀,例如有4个Reg1n,编号分别为
a、b、c、d,那么生成的RowKey依次为:aOO I,b002,c003,d004,a005,……。该方法在开始创建时能够保证数据存储的绝对均衡,并且该方法的实施也比较简单,但是,随着数据不断增长,当存入某一 Reg1n中的数据大小超过该Reg1n的某个阙值时,HBase会自动将该Reg1n一分为二,此时,将无法保证分割后的Reg1n中数据的均衡性。
[0061]方法二:首先生成一个理论上唯一的标识号,然后取该标识号的散列值,最后对通过散列值和标识号组成最终的RowKey。该方法是目前主流的生成RowKey的方式,能够满足大部分的应用需求;然而,该方法存在的缺点是:散列值与标识号的相关性太强(即散列值是根据标识号生成的),当生成的标识号出现重复的情况时,就会造成生成的散列值是一致的,即两份数据对应相同的标识号和相同的散列值,从而导致为该两份数据最终生成的RowKey也是一致的,这样,将会造成数据的覆盖和丢失,即在后存入的数据会覆盖在先存入的数据,极大的影响了整个数据库的系统性能。
[0062]显然地,根据上述对现有技术中两种编号信息的设计方案可以看出,针对数据库中编号信息的设计,现有技术中还没有可以同时满足数据均衡性和保证系统性能的设计方案。因此,目前亟需提供一种合理的数据库编号信息的设计方案,旨在满足数据均衡性的同时保证系统系能。
[0063]下面通过具体的实施例对本发明的技术方案进行详细说明,本发明以下各实施例中的终端设备可以为支持数据库应用的终端设备,例如为个人计算机(PersonalComputerJI^IS = PC)、个人数字助理(Personal Digital Assistant,简称为:PDA)或平板电脑等。本发明提供以下几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
[0064]图2为本发明实施例提供的一种数据库管理装置的结构示意图。本实施例提供的数据库管理装置适用于对海量数据进行存储和应用的情况中,该数据库管理装置通常以硬件和软件相结合的方法来实现,该装置可以集成在终端设备的控制器中,供控制器调用。如图2所示,本实施例的数据库管理装置可以包括:标识码生成模块11、获取模块12和编号生成模块13。
[0065]其中,标识码生成模块11,用于生成待存储数据对应的标识码。
[0066]本实施例提供的数据库管理装置,在有数据需要存入数据库中时,生成与该数据对应的唯一编号,该编号用于在存储该数据时确定该数据存入哪个数据块中,以及在后续对该数据进行处理时,确定由哪个数据块执行处理。在本实施例中,首先可以生成与待存储数据对应的标识码,即每份数据在存入数据库前,终端设备的应用程序,例如可以为该标识码生成模块11对应的软件,可以生成与每份数据对应的标识码,该标识码理论上应该是唯一的,例如可以按照递增方式或时间戳的方式生成该标识号。
[0067]获取模块12,用于在预先确定的数据范围内获取待存储数据对应的散列值。
[0068]编号生成模块13,用于根据标识码生成模块11生成的标识码和获取模块12获取的散列值,生成用于处理待存储数据的编号信息,其中,该编号信息为均匀散列的编码字符。本实施例中的获取模块12可以与标识码生成模块11相连接,编号生成模块13可以分别与标识码生成模块11和获取模块12相连接。
[0069]在本实施例中,与现有技术的类似地之处在于:与每份数据对应的编号信息同样由标识码+散列值的形式构成,即本实施例在标识码生成模块11生成标识码后,获取模块12还可以获取待存储数据对应的散列值。需要特别说明的,与现有技术不同的是:本发明各实施例中获取模块12获取散列值的方式并不是根据标识号生成的,即散列值与标识号之间没有特定的相关性,在本实施例中,可以是在预先确定的数值范围内选取上述待存储数据对应散列值,这样,即便是在标识码生成模块11生成的标识号存在重复的情况下,也可以最大可能性的避免生成相同的散列值,从而使得最终生成的编号信息最大限度的避免重复。另夕卜,本实施例中生成的编号信息还有一个特征,为均匀散列的编码字符,也就是说,通过本实施例生成的编号信息,可以将数据均匀的存入数据库的各数据块中,达到数据库负载均衡的效果;显然地,本实施例通过合理的设计编号信息的设计方案,在满足数据库中数据均衡性的同时,提高了该数据库的系统性能。
[0070]举例来说,可以参照图1所示的工作原理图,此时以HBase为例说明本施例的具体实现方式,在有数据需要存入HBase中时,标识码生成模块11生成与该待存储数据对应的标识码,随后由获取模块12获取散列值,该散列值有一个预先设定的范围,该范围例如由终端设备根据系统性能或待存储数据的业务类型确定,通常地,系统性能由当前已存入数据的存储量和系统的处理能力决定,例如包括HBase中各Reg1n的剩余存储量和负载能力,在终端设备的不同应用场景下,系统性能也是不同的,待存储数据的业务类型决定了数据量的大小,也决定了占用系统空间的多少,因此,终端设备可以根据系统性能和待存储数据确定出一个合理的散列值的范围,从而在该范围内随机获取一个散列值,显然地,本实施例中的散列值并非根据标识码生成的,与标识码也没有太强的相关性,本实施例从散列值的获取方式中很大程度的避免了由于可能生成相同标识码,而导致最终生成相同的编号信息,从而造成数据覆盖和丢失的情况。
[0071]本实施例提供的数据库管理装置,通过标识码生成模块生成待存储数据对应的标识码,获取模块在预先确定的数据范围内获取该待存储数据对应的散列值,随后由编号生成模块根据标识码生成模块生成的标识码和获取模块获取的散列值,生成用于处理该待存储数据的编号信息,其中,该编号信息为均匀散列的编码字符;本实施例提供的数据库管理装置,解决了现有技术中的数据库在使用过程中,由于生成的与待处理数据对应的编号可能是连续的或者散列不够均衡,使得数据库中各数据块上的数据的均衡性较差,而导致数据库中资源利用率较低,以及系统性能较差的问题。
[0072]进一步地,由于本发明实施例中获取模块12获取散列值的方式并非根据标识码生成的,避免了散列值与标识码间强烈的相关性,也就是说,即便是在标识码生成模块11生成了相同标识码的情况下,也在很大概率上保证了相同标识码对应不通的散列值,以保证最终生成不同的编号信息,从从而避免了数据丢失的风险,因此,本发明实施例实现了在满足数据均衡性的同时,保证了数据库的系统性能。
[0073]可选地,图3为本发明实施例提供的另一种数据库管理装置的结构示意图。在上述图2所示数据库管理装置的结构基础上,本实施例中的获取模块12包括:
[0074]转换单元14,用于将预置散列范围转换为第二进制下的数据范围,其中,该预置散列范围为第一进制下的数据范围,该第二进制的进位数小于第一进制的进位数。
[0075]本实施例同样以HBase为例予以说明,本实施例中预置散列范围可以是预先确定的数据范围,该预置散列范围可以是数据库的设计人员设置的,例如是管理员预先确定了该预置散列范围,并保存在数据库的系统中。需要说明的是,本实施例中的预置散列范围具体为在第一进制下确定的数据范围,该第一进制例如为62进制,由于62进制对数据的压缩量较强,并且该62进制中包括了O?9共10个数字符号,以及a?z和A?Z共52个区分大小写的英文字母,即该62进制包括的字符更全面,更加适用于对存储数据进行编码。例如,本实施例中的预置散列范围在[00000,ΖΖΖΖΖ]之间。
[0076]选取单元15,用于在转换单元14得到的第二进制下的数据范围内选取随机值。
[0077]在本实施例中,第二进制例如可以为10进制,此时可以先将上述62进制下的预置散列范围转换为10进制下的范围,转换后的结果为[0,916132831],由于10进制为用户常用的计算方式,因此可以在10进制下选取随机值,便于选择,该随机值用于后续获取散列值。
[0078]需要说明的是,通常存储数据的压缩量要求比较大,而选择随机值则选择便于操作和用户熟悉的进制模式,因此,通常要求第二进制的进位数小于第一进制的进位数。
[0079]转换单元14,还用于将选取单元15选取的随机值转换为第一进制下的数据符号。
[0080]获取单元16,用于根据转换单元14得到的第一进制下的数据符号获取散列值。
[0081]由于本实施例中,在10进制的数据范围内选取了随机值,而散列值应为存储数据的进制模式,因此还需要将已选取的随机值转换为62进制下的数据符号,此时,就可以根据转换后的数据符号获取散列值。
[0082]可选地,本实施例提供的获取模块12还可以包括:确定单元17,用于在转换单元14将预置散列范围转换为第二进制下的数据范围之前,确定该预置散列范围和散列值的预置长度。本实施例的获取模块12中的转换单元14和确定单元17都可以与标识码生成模块11相连接,转换单元14可以分别与确定单元17、选取单元15和获取单元16相连接,获取模块12中的获取单元16可以与编号生成模块13相连接。
[0083]本实施例中的确定单元17,不仅可以预先确定上述预置散列范围,还可以确定散列值的预置长度,其依据可以与上述实施例相同,同样可以根据数据库的系统性能和待存储数据的业务类型确定。举例来说,基于待存储数据的业务类型,可能不希望出现数字,则确定的该预置散列范围可以为全是字母表示的范围;再例如,如果散列值的长度太长,会占用系统空间,通常根据业务需求和数据量的大小,设置合理的长度。例如本实施例中确定出的预置长度为5,预置散列范围在[00000,ZZZZZ]之间。
[0084]在实际应用中,转换单元14将随机值转换为62进制下的数据符号后,该数据符号的长度可能为5,也可能小于5,因此,本实施例中的获取单元16用于根据转换单元14得到的第一进制下的数据符号获取散列值,包括:当数据符号的长度等于预置长度时,将数据符号确定为散列值;当数据符号的长度小于预置长度时,在数据符号的高位侧补充起始散列值的最高位字符,将补充后的数据符号确定为散列值,其中,所补充字符的长度与数据符号的长度之和等于预置长度。
[0085]需要说明的是,本实施例中的起始散列值即为预置散列范围的最小值,即为00000,那么起始散列值的最高位字符为O。举例来说,若选取单元15选取的随机值为2016,那么转换单元14将2016转换为62进制后为ww,此时,由于转化后的字符长度不满足预置长度为5的要求,则在ww的高位侧补充O,由于补充的字符长度与ww的字符长度之和为5可知,补充后的最终的散列值为OOOww;再举例来说,若选取单元15选取的随机值为716132831,那么转换单元14将716132831转换为62进制后为MsORx,该数据符号的长度与预置长度相同,贝IJMsORx为散列值。
[0086]还需要说明的是,本发明各实施例中不限制第一进制为62进制,也不限制第二进制为10进制,通常需要满足第一进制的进位数高于第二进制的进位数即可,以保证数据库具有较高的数据压缩量。
[0087]进一步地,图4为本发明实施例提供的又一种数据库管理装置的结构示意图。在上述图2所示数据库管理装置的结构基础上,本实施例提供的数据库管理装置还可以包括:
[0088]存储模块18,用于在编号生成模块13生成用于处理待存储数据的编号信息之后,将待存储数据存入与该编号信息对应的数据块中。本实施例中的存储模块18可以与编号生成模块13相连接,
[0089]本实施例的存储模块18以HBase中的存储方式为例予以说明,在生成与待存储数据对应的编号信息后,可以参考图1所示,若该编号信息为M0001,则可知该编号信息在[Μ0000,Ζζζζζ]之间,这个数据范围内的编号信息对应的数据块为Reg1n3,则将该数据存入Reg1n3中。
[0090]可选地,本实施例还可以包括处理模块19,用于在接收到处理指定数据的指令时,根据该指定数据的编号信息指示该编号信息对应的数据块对该指定数据进行处理。本实施例中的处理模块19都可以与编号生成模块13相连接,并且处理模块19还可以与存储模块18相连接。
[0091]与上述存储方式类似地,当数据存入HBase的Reg1n中后,如果需要对数据进行进一步地处理和操作,即在接收到处理指定数据的指令时,可以根据该指定数据在存入Reg1n前生成的编号信息,指示对应的Reg1n对该指定数据进行处理,具体可以由加载该Reg1n的服务器,即Reg1nServer执行处理。
[0092]需要说明的是,上述存储模块18存储数据的方式,以及处理模块19对数据进行处理的方式,为HBase中的具体实现方式,在其它类型的数据库中,存储数据和处理数据的方式可以是不同的。即图4仅是对存储模块18和处理模块19执行方式的一个示意性的说明,并不以此限制本发明实施例的数据存储方式和数据处理方式。
[0093]在具体实现中,本发明图2到图4所示各实施例中的存储模块18可以通过终端设备的存储器来实现,该存储器例如可以是终端设备的硬盘;标识码生成模块U、获取模块12、编号生成模块13和处理模块19可以通过终端设备的处理器来实现,该处理器例如可以是一个中央处理器(Central Processing Un i t,简称为:CPU),或者是特定集成电路(Applicat1n Specific Integrated Circuit,简称为:ASIC),或者是完成实施本发明实施例的一个或多个集成电路。
[0094]图5为本发明实施例提供的一种数据库管理方法的流程图。本实施例提供的数据库管理方法适用于对海量数据进行存储和应用的情况中,该数据库管理方法可以由本发明实施例提供的数据库管理装置执行,该装置通常以硬件和软件相结合的方法来实现,该装置可以集成在终端设备的控制器中,供控制器调用使用。如图5所示,本实施例的数据库管理方法可以包括:
[0095]S110,生成待存储数据对应的标识码。
[0096]本实施例提供的数据库管理方法,在有数据需要存入数据库中时,生成与该数据对应的唯一编号,该编号用于在存储该数据时确定该数据存入哪个数据块中,以及在后续对该数据进行处理时,确定由哪个数据块执行处理。在本实施例中,首先可以生成与待存储数据对应的标识码,即每份数据在存入数据库前,终端设备的应用程序,可以生成与每份数据对应的标识码,该标识码理论上应该是唯一的,例如可以按照递增方式或时间戳的方式生成该标识号。
[0097]S120,在预先确定的数据范围内获取待存储数据对应的散列值,使得相同标识码对应不同的散列值。
[0098]S130,根据标识码和散列值,生成用于处理该待存储数据的编号信息,其中,该编号信息为均匀散列的编码字符。
[0099]在本实施例中,与现有技术的类似地之处在于:与每份数据对应的编号信息同样由标识码+散列值的形式构成,即本实施例在生成标识码后,还可以获取待存储数据对应的散列值。需要特别说明的,与现有技术不同的是:本发明各实施例中获取散列值的方式并不是根据标识号生成的,即散列值与标识号之间没有特定的相关性,在本实施例中,可以是在预先确定的数值范围内选取上述待存储数据对应散列值,这样,即便是在生成的标识号存在重复的情况下,也可以最大可能性的避免生成相同的散列值,从而使得最终生成的编号信息最大限度的避免重复。另外,本实施例中生成的编号信息还有一个特征,为均匀散列的编码字符,也就是说,通过本实施例生成的编号信息,可以将数据均匀的存入数据库的各数据块中,达到数据库负载均衡的效果;显然地,本实施例通过合理的设计编号信息的设计方案,在满足数据库中数据均衡性的同时,提高了该数据库的系统性能。
[0100]需要说明的是,本实施例中预先确定的数据范围同样可以是终端设备根据系统性能或待存储数据的业务类型确定,具体实例在上述实施例中已经说明,故在此不再赘述。
[0101]本实施例提供的数据库管理方法,通过对待存储数据生成对应的标识码,在预先确定的数据范围内获取该待存储数据对应的散列值,并且使得相同标识码对应不同的散列值,随后根据已生成的标识码和散列值,生成用于处理该待存储数据的编号信息,其中,该编号信息为均匀散列的编码字符;本实施例提供的数据库管理方法,解决了现有技术中的数据库在使用过程中,由于生成的与待处理数据对应的编号可能是连续的或者散列不够均衡,使得数据库中各数据块上的数据的均衡性较差,而导致数据库中资源利用率较低,以及系统性能较差的问题。
[0102]进一步地,由于本发明实施例中获取散列值的方式并非根据标识码生成的,避免了散列值与标识码间强烈的相关性,也就是说,即便是在生成了相同标识码的情况下,也在很大概率上保证了相同标识码对应不通的散列值,以保证最终生成不同的编号信息,从从而避免了数据丢失的风险,因此,本发明实施例实现了在满足数据均衡性的同时,保证了数据库的系统性能。
[0103]可选地,图6为本发明实施例提供的另一种数据库管理方法的流程图。在上述图5所示流程的基础上,本实施例中的SI 20可以为包括:
[0104]S122,将预置散列范围转换为第二进制下的数据范围,其中,该预置散列范围为第一进制下的数据范围,该第二进制的进位数小于该第一进制的进位数。
[0105]本实施例同样以HBase为例予以说明,本实施例中预置散列范围可以是预先确定的数据范围,该预置散列范围可以是数据库的设计人员设置的,例如是管理员预先确定了该预置散列范围,并保存在数据库的系统中。需要说明的是,本实施例中的预置散列范围具体为在第一进制下确定的数据范围,该第一进制同样可以为62进制,由于62进制对数据的压缩量较强,并且该62进制包括的字符更全面,更加适用于对存储数据进行编码。例如,本实施例中的预置散列范围同样在[00000,ZZZZZ ]之间。
[0106]S123,在第二进制下的数据范围内选取随机值。
[0107]在本实施例中,第二进制同样可以为10进制,此时可以先将上述62进制下的预置散列范围转换为10进制下的范围,转换后的结果为[0,916132831],由于10进制为用户常用的计算方式,因此可以在10进制下选取随机值,便于选择,该随机值用于后续获取散列值。
[0108]需要说明的是,通常存储数据的压缩量要求比较大,而选择随机值则选择便于操作和用户熟悉的进制模式,因此,通常要求第二进制的进位数小于第一进制的进位数。
[0109]S124,将随机值转换为第一进制下的数据符号。
[0110]S125,根据第一进制下的数据符号获取散列值。
[0111]由于本实施例中,在10进制的数据范围内选取了随机值,而散列值应为存储数据的进制模式,因此还需要将已选取的随机值转换为62进制下的数据符号,此时,就可以根据转换后的数据符号获取散列值。
[0112]可选地,本实施例在S122之前,还可以包括:
[0113]S121,确定预置散列范围和散列值的预置长度。
[0114]本实施例提供的方法,不仅可以预先确定上述预置散列范围,还可以确定散列值的预置长度,其依据可以与上述实施例相同,同样可以根据数据库的系统性能和待存储数据的业务类型确定。举例来说,基于待存储数据的业务类型,可能不希望出现数字,则确定的预置散列范围可以为全是字母表示的范围;再例如,如果散列值的长度太长,会占用系统空间,通常根据业务需求和数据量的大小,设置合理的长度。例如本实施例中确定出的预置长度为5,预置散列范围在[00000,zzzzz]之间。
[0115]在实际应用中,将随机值转换为62进制下的数据符号后,该数据符号的长度可能为5,也可能小于5,因此,本实施例中的S125具体可以包括:当数据符号的长度等于预置长度时,将数据符号确定为散列值;当数据符号的长度小于预置长度时,在数据符号的高位侧补充起始散列值的最高位字符,将补充后的数据符号确定为散列值,其中,所补充字符的长度与数据符号的长度之和等于预置长度。
[0116]需要说明的是,本实施例中的起始散列值即为预置散列范围的最小值,即为00000,那么起始散列值的最高位字符为O。举例来说,若选取单元15选取的随机值为2016,那么转换单元14将2016转换为62进制后为ww,此时,由于转化后的字符长度不满足预置长度为5的要求,则在ww的高位侧补充O,由于补充的字符长度与ww的字符长度之和为5可知,补充后的最终的散列值为OOOww;再举例来说,若选取单元15选取的随机值为716132831,那么转换单元14将716132831转换为62进制后为MsORx,该数据符号的长度与预置长度相同,贝IJMsORx为散列值。
[0117]还需要说明的是,本发明各实施例中不限制第一进制为62进制,也不限制第二进制为10进制,通常需要满足第一进制的进位数高于第二进制的进位数即可,以保证数据库具有较高的数据压缩量。
[0118]进一步地,图7为本发明实施例提供的又一种数据库管理方法的流程图。在上述图5所示流程的基础上,本实施例提供的数据库管理方法,在S130之后,还可以包括:
[0119]S140,在生成用于处理待存储数据的编号信息之后,将待存储数据存入与该编号信息对应的数据块中。
[0120]本实施例的存储模块18以HBase中的存储方式为例予以说明,在生成与待存储数据对应的编号信息后,可以参考图1所示,若该编号信息为M0001,则可知该编号信息在[Μ0000,Ζζζζζ]之间,这个数据范围内的编号信息对应的数据块为Reg1n3,则将该数据存入Reg1n3中。
[0121]可选地,本实施例提供的方法还可以包括:
[0122]S150,在接收到处理指定数据的指令时,根据该指定数据的编号信息指示该编号信息对应的数据块对该指定数据进行处理。
[0123]与上述存储方式类似地,当数据存入HBase的Reg1n中后,如果需要对数据进行进一步地处理和操作,即在接收到处理指定数据的指令时,可以根据该指定数据在存入Reg1n前生成的编号信息,指示对应的Reg1n对该指定数据进行处理,具体可以由加载该Reg1n的服务器,即Reg1nServer执行处理。
[0124]需要说明的是,本实施例不限制S150处理的指定数据即是在S140中存储的数据,也就是说,S150中处理的指定数据可以是执行SllO到S140之前已经存入数据库中的数据,即本发明实施例不限制S150的执行顺序,如果数据库为多线程操作,可以是在执行SllO到S140的任意时刻执行的,图6所示流程以S150在SllO?S140之后执行为例予以示出。
[0125]还需要说明的是,上述存储数据的方式,以及对数据进行处理的方式,为HBase中的具体实现方式,在其它类型的数据库中,存储数据和处理数据的方式可以是不同的。即图7仅是对数据存储方式和数据处理方式的一个示意性的说明,并不以此限制本发明实施例的数据存储方式和数据处理方式。
[0126]虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
【主权项】
1.一种数据库管理装置,其特征在于,所述数据库管理装置设置于终端设备中,所述数据库管理装置包括: 标识码生成模块,用于生成待存储数据对应的标识码; 获取模块,用于在预先确定的数据范围内获取所述待存储数据对应的散列值; 编号生成模块,用于根据所述标识码生成模块生成的所述标识码和所述获取模块获取的所述散列值,生成用于处理所述待存储数据的编号信息,其中,所述编号信息为均匀散列的编码字符。2.根据权利要求1所述的数据库管理方法,其特征在于,所述获取模块包括: 转换单元,用于将预置散列范围转换为第二进制下的数据范围,其中,所述预置散列范围为第一进制下的数据范围,所述第二进制的进位数小于所述第一进制的进位数; 选取单元,用于在所述转换单元得到的所述第二进制下的数据范围内选取随机值;所述转换单元,还用于将所述选取单元选取的所述随机值转换为所述第一进制下的数据符号; 获取单元,用于根据所述转换单元得到的所述第一进制下的数据符号获取所述散列值。3.根据权利要求2所述的数据库管理方法,其特征在于,所述获取模块还包括:确定单元,用于在所述转换单元将所述预置散列范围转换为所述第二进制下的数据范围之前,确定所述预置散列范围和所述散列值的预置长度; 所述获取单元用于根据所述转换单元得到的所述第一进制下的数据符号获取所述散列值,包括: 当所述数据符号的长度等于所述预置长度时,将所述数据符号确定为所述散列值; 当所述数据符号的长度小于所述预置长度时,在所述数据符号的高位侧补充起始散列值的最高位字符,将补充后的数据符号确定为所述散列值,其中,所补充字符的长度与所述数据符号的长度之和等于所述预置长度。4.根据权利要求2所述的数据库管理方法,其特征在于,所述第一进制为62进制;和/或,所述第二进制为10进制。5.根据权利要求1?4中任一项所述的数据库管理方法,其特征在于,所述数据库管理装置还包括: 存储模块,用于在所述编号生成模块生成用于处理所述待存储数据的编号信息之后,将所述待存储数据存入与所述编号信息对应的数据块中;和/或, 处理模块,用于在接收到处理指定数据的指令时,根据所述指定数据的编号信息指示所述编号信息对应的数据块对所述指定数据进行处理。6.一种数据库管理方法,其特征在于,包括: 生成待存储数据对应的标识码; 在预先确定的数据范围内获取所述待存储数据对应的散列值; 根据所述标识码和所述散列值,生成用于处理所述待存储数据的编号信息,其中,所述编号信息为均匀散列的编码字符。7.根据权利要求6所述的数据库管理方法,其特征在于,所述获取所述待存储数据对应的散列值,包括: 将预置散列范围转换为第二进制下的数据范围,其中,所述预置散列范围为第一进制下的数据范围,所述第二进制的进位数小于所述第一进制的进位数; 在所述第二进制下的数据范围内选取随机值; 将所述随机值转换为所述第一进制下的数据符号; 根据所述第一进制下的数据符号获取所述散列值。8.根据权利要求7所述的数据库管理方法,其特征在于,所述方法还包括:所述将预置散列范围转换为第二进制下的数据范围之前,确定所述预置散列范围和所述散列值的预置长度; 所述根据所述第一进制下的数据符号获取所述散列值,包括: 当所述数据符号的长度等于所述预置长度时,将所述数据符号确定为所述散列值; 当所述数据符号的长度小于所述预置长度时,在所述数据符号的高位侧补充起始散列值的最高位字符,将补充后的数据符号确定为所述散列值,其中,所补充字符的长度与所述数据符号的长度之和等于所述预置长度。9.根据权利要求7所述的数据库管理方法,其特征在于,所述第一进制为62进制;和/或,所述第二进制为10进制。10.根据权利要求6?9中任一项所述的数据库管理方法,其特征在于,所述方法还包括: 在生成用于处理所述待存储数据的编号信息之后,将所述待存储数据存入与所述编号信息对应的数据块中;和/或, 在接收到处理指定数据的指令时,根据所述指定数据的编号信息指示所述编号信息对应的数据块对所述指定数据进行处理。
【文档编号】G06F17/30GK105930521SQ201610354929
【公开日】2016年9月7日
【申请日】2016年5月25日
【发明人】陈奇川
【申请人】努比亚技术有限公司