数据库拆分的方法及装置与流程

文档序号:11807877阅读:175来源:国知局
数据库拆分的方法及装置与流程

本公开涉及数据库领域,尤其涉及一种数据库拆分的方法及装置。



背景技术:

随着分布式布置与管理模式的推广,数据库的拆分与整合越来越普遍,数据库拆分的基本思想是将一个数据库拆分为多个数据部分,每个数据部分分别存储到不同的数据库上,从而缓解单一数据库的性能问题。

对于数据量庞大的企业级数据库来说,拆分要求非常高,既要保证拆分科学,避免重复或数据丢失,又要保证后续的查询方便快捷。

相关技术提供的方法为利用哈希值取模的方式来进行数据库拆分。但这类方法通常需要每次利用哈希值模型进行计算,较为费时且占用系统资源,而且计算后数据分配不直观,使用者无法预先判断出数据重新分配后的准确位置,必须在整套拆分程序完成后通过系统显示才得知。

基于上述,需要提供一种新的数据拆分的方法及装置。

在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

为克服相关技术中存在的问题,本公开提供一种数据库拆的分方法及装置。

根据本公开实施例的第一方面,提供一种数据库拆分的方法,包括:

将数据库中待分配的数据表名称中的预设位置采用排序关系的标示符标示;

将所述待分配的数据表分配到至少两个子数据库中,其中以根据数据表名称中的所述排序关系的标示符确定分配后的数据表所在的子数据库。

于一实施例中,将所述待分配的数据表分配到至少两个子数据库中的操作包括:

将所述待分配的数据表名称中的所述排序关系的标示符与所述子数据库建立对应关系;

根据所述对应关系将所述待分配的数据表分配到所对应的子数据库中。

于一实施例中,将所述待分配的数据表名称中的所述排序关系的标示符与所述子数据库建立对应关系的操作包括:

获取所述至少两个子数据库的数目,以及获取所述待分配的数据表名称中的所述排序关系的标示符的数目,将所述标示符的数目与所述子数据库的数目求模获取各子数据库待容纳的数据表数目,根据所述待分配的数据表名称中的所述标示符和所述数据表数目,顺次将所述待分配的数据表的标示符与所述子数据库建立对应关系。

于一实施例中,所述排序关系的标示符包括顺次的数字、或顺次的大写字母、或顺次的小写字母、或顺次的数字、大写字母以及小写字母中至少两者的组合。

于一实施例中,所述方法还包括,根据分配后的数据表与所在的子数据库之间的对应关系,生成拆分分配信息用于查询数据表的分配位置。

根据本公开实施例的第二方面,提供一种数据库拆分的装置,包括:

名称标识单元,用于将数据库中待分配的数据表名称中的预设位置采用排序关系的标示符标示;

数据表分配单元,用于将所述待分配的数据表分配到至少两个子数据库中,其中以根据数据表名称中的所述排序关系的标示符确定分配后的数据表所在的子数据库。

于一实施例中,所述数据表分配单元包括名称对应子单元以及分配子单元;

所述名称对应子单元,用于将所述待分配的数据表名称中的所述排序关系的标示符与所述子数据库建立对应关系;

所述分配子单元,用于根据所述对应关系将所述待分配的数据表分配到所对应的子数据库中。

于一实施例中,所述名称对应子单元用于,获取所述至少两个子数据库的数目,以及获取所述待分配的数据表名称中的所述排序关系的标示符的数目,将所述标示符的数目与所述子数据库的数目求模获取各子数据库待容纳的数据表数目,根据所述待分配的数据表名称中的所述标示符和所述数据表数目,顺次将所述待分配的数据表的标示符与所述子数据库建立对应关系。

于一实施例中,所述排序关系的标示符包括顺次的数字、或顺次的大写字母、或顺次的小写字母、或顺次的数字、大写字母以及小写字母中至少两者的组合。

于一实施例中,所述装置还包括分配信息生成单元,用于根据分配后的数据表与所在的子数据库之间的对应关系,生成拆分分配信息用于查询数据表的分配位置。

本公开的实施例提供的技术方案可以包括以下有益效果:

本公开的技术方案能够预先判断数据拆分后的准确位置,能够提高数据库拆分后的查询效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种数据库拆分的方法的流程图;

图2是根据一示例性实施例示出的一种数据库拆分的方法的流程图;

图3是是根据一示例性实施例示出的方法中步骤S220的流程图;

图4是根据一示例性实施例示出的一种数据库拆分的装置的示意图;

图5是根据一示例性实施例示出的一种数据库拆分的装置的示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

实施例一

图1是根据一示例性实施例示出的一种数据库拆分的方法的流程图,本实施例可适用于将数据库中的数据表拆分到至少两个数据库的情况,如图1所示,本实施例所述的数据库拆分的方法包括:

在步骤S110中,将数据库中待分配的数据表名称中的预设位置采用排序关系的标示符标示。

在步骤S120中,将待分配的数据表分配到至少两个子数据库中,其中以根据数据表名称中的排序关系的标示符确定分配后的数据表所在的子数据 库。

基于上述,本公开的技术方案能够预先判断数据拆分后的准确位置,提高数据库拆分后的查询效率。

实施例二

图2是根据一示例性实施例示出的一种数据库拆分的方法的流程图,如图2所示,本实施例所述的数据库拆分的方法包括:

在步骤S210中,将数据库中待分配的数据表名称中的预设位置采用排序关系的标示符标示。其中“预设位置”可以根据需要进行设定,例如对于数据表名称“ABC**”,就可以将“**”设定为标示符的预设位置,例如“ABC45”、“ABC64”等均为数据表名称。本实施例中的预设位置不仅仅是指数据表名称的倒数第一位和倒数第二位的阿拉伯数字,如果数据表的数量较大,还可能用三位甚至更多位的排序数字表示,而且排序数字也可以在数据表名称的其他位置,例如前两位或前三位甚至前几位。

其中排序关系的标示符可以为顺次的数字、顺次的大写字母或顺次的小写字母,也可以为顺次的数字、大写字母以及小写字母中至少两者的组合。例如,标示符可以为1,2,3……,还可以为A,B,C……,还可以为a,b,c……,还可以为A1,A2,A3……,还可以为aB1,aB2,aB3……等等,此处不再一一列举。另外,本实施例中的数字不仅可以是阿拉伯数字,还可以是罗马数字,无论数字与字母,只要是具有默认顺序或人为约定顺序的标示符均可用于数据库拆分的依据,在本本实施例中不作具体限定。

在步骤S220中,将待分配的数据表名称中的排序关系的标示符与子数据库建立对应关系。例如,在本实施例中可以按照至少两个子数据库的数目建立待分配的数据表名称中的标示符与子数据库之间的对应关系,以下对步骤S220进行说明。

图3是根据一示例性实施例示出的方法中步骤S220的流程图,如图3 所示,本实施例将待分配的数据表名称中的排序关系的标示符与子数据库建立对应关系的步骤包括:

如图3所示,在步骤S221中,获取至少两个子数据库的数目。

在步骤S222中,获取待分配的数据表名称中的排序关系的标示符的数目。

在步骤S223中,将标示符的数目与子数据库的数目求模获取各子数据库待容纳的数据表数目。

在步骤S224中,根据步骤S222中得到的待分配的数据表名称中的标示符和步骤S223中得到数据表数目,顺次将待分配的数据表的标示符与子数据库建立对应关系。

按照上述步骤将待分配的数据表按照数据表名称中的预设位置的标示符分配到标示符所对应的子数据库中。

如图2所示,在步骤S230中,根据分配后的数据表与所在的子数据库之间的对应关系,生成拆分分配信息用于查询数据表的分配位置。

以数据表名称中倒数第一位和倒数第二位的数字作为标示符为例,进行数据拆分的方法流程大致如下:

1)将数据库中待分配的数据表名称中以倒数第一位和倒数第二位的数字定义为具有排序关系的标示符,例如其中的两个数据表的名称为ABC45和ABC64。

2)当数据库进行一次拆分时,例如将数据库整体分为2个子数据库,则可定义将数据表ABC00-ABC50分配至第一子数据库,而将数据表ABC51-ABC99分配至第二子数据库。

3)用户可根据预先约定的排序关系,直接判断出数据表ABC45存储于第一子数据库中,ABC64被存储于第二子数据库中,依据为按照数字排列顺序,数字45位于00-50之间,因此数据表ABC45位于第一子数据库中,而 数字64位于51-99之间,因此数据表ABC64位于第二子数据库中。

4)当数据库进行二次拆分时,例如将整个数据库分为10个子数据库,则可定义将数据表ABC00-10分配至第一子数据库,将数据表ABC11-20分配至第二子数据库中,以下依次类推。

5)继上述步骤之后,用户可直接预先约定的排序关系,判断出数据表ABC45存储于第五子数据库中,数据表ABC64被存储于第七子数据库中。

还需要说明的是,其中本公开所提供的数据库的拆分方法并不以此为局限,数据表名称可以使用数字、大小写字母等具有排列关系的标示符。另外,数据库拆分定义以及数据表分配可以通过数据库命令(例如sql脚本)来实现。

基于上述,可以按照本实施例提供的方法完成数据库的拆分,这种方法简单易行,避免了冗长的逻辑运算,同时也可使使用者预先了解数据拆分后的分配布置情况,且通过数据库脚本命令即可实现。

实施例三

图4是根据一示例性实施例示出的一种数据库拆分的装置的示意图,如图4所示,该装置1000包括名称标识单元310以及数据表分配单元320。

其中名称标识单元310用于将数据库中待分配的数据表名称中的预设位置采用排序关系的标示符标示。其中本实施例中排序关系的标示符包括顺次的数字、或顺次的大写字母、或顺次的小写字母、或顺次的数字、大写字母以及小写字母中至少两者的组合。该数据表分配单元320用于将待分配的数据表分配到至少两个子数据库中,其中以根据数据表名称中的排序关系的标示符确定分配后的数据表所在的子数据库。

其中数据表分配单元320按照上述图3所示的步骤将待分配的数据表按照数据表名称中的预设位置的标示符分配到标示符所对应的子数据库中,本实施例中不再赘述。

仍以数据表名称中倒数第一位和倒数第二位的数字作为标示符为例,进行数据拆分的方法流程大致如下:

名称标识单元310将数据库中待分配的数据表名称中以倒数第一位和倒数第二位的数字定义为具有排序关系的标示符,例如其中的两个数据表的名称为ABC45和ABC64。当数据库进行一次拆分时,数据表分配单元320将数据库整体分为2个子数据库,则可定义将数据表ABC00-ABC50分配至第一子数据库,而将数据表ABC51-ABC99分配至第二子数据库。用户可根据预先约定的排序关系,直接判断出数据表ABC45存储于第一子数据库中,ABC64被存储于第二子数据库中,依据为按照数字排列顺序,数字45位于00-50之间,因此数据表ABC45位于第一子数据库中,而数字64位于51-99之间,因此数据表ABC64位于第二子数据库中。当数据库进行二次拆分时,数据表分配单元320将整个数据库分为10个子数据库,则可定义将数据表ABC00-10分配至第一子数据库,将数据表ABC11-20分配至第二子数据库中,以下依次类推。最后,数据表分配单元320可直接预先约定的排序关系,判断出数据表ABC45存储于第五子数据库中,数据表ABC64被存储于第七子数据库中。

如图4所示,该装置1000中还包括分配信息生成单元330,用于根据分配后的数据表与所在的子数据库之间的对应关系,生成拆分分配信息用于查询数据表的分配位置。

关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本实施例提供的数据库拆分装置可执行本发明实施例一和实施例二所提供的数据库拆分的方法,具备执行方法相应的功能模块和有益效果。

实施例四

图5是根据一示例性实施例示出的一种数据库拆分装置的示意图,如图 5所示,该装置2000包括:名称标识单元410、数据表分配单元420以及分配信息生成单元430。

名称标识单元410用于将数据库中待分配的数据表名称中的预设位置采用排序关系的标示符标示。数据表分配单元420用于将待分配的数据表分配到至少两个子数据库中,其中以根据数据表名称中的排序关系的标示符确定分配后的数据表所在的子数据库。

进一步地,如图5所示,本实施例中的数据表分配单元420包括:名称对应子单元421以及分配子单元422,其中名称对应子单元421用于将待分配的数据表名称中的排序关系的标示符与子数据库建立对应关系。分配子单元422用于根据上述对应关系将待分配的数据表分配到所对应的子数据库中。

其中名称对应子单元421用于获取至少两个子数据库的数目,以及获取待分配的数据表名称中的排序关系的标示符的数目,将标示符的数目与子数据库的数目求模获取各子数据库待容纳的数据表数目,根据待分配的数据表名称中的标示符和数据表数目,顺次将待分配的数据表的标示符与子数据库建立对应关系。

如图5所示,该装置2000还包括分配信息生成单元430,用于根据分配后的数据表与所在的子数据库之间的对应关系,生成拆分分配信息用于查询数据表的分配位置。

关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本实施例提供的数据库拆分装置可执行本发明实施例一和实施例二所提供的数据库拆分的方法,具备执行方法相应的功能模块和有益效果。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性 变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1