用于对数据库进行分区的方法和系统的制作方法

文档序号:6489808阅读:208来源:国知局
用于对数据库进行分区的方法和系统的制作方法
【专利摘要】本发明涉及一种用于对数据库进行分区的方法和系统。其中,对数据库进行分区的方法,包括:将所述数据库中的多个条目分组成一个或多个条目组,以使同一个所述条目组中的条目总是被一个或多个事务同时访问;以及将所述一个或多个条目组划分为设定数目个分区,以使跨多于一个分区进行访问的事务总数最小化。通过本发明,可以获得有效、灵活、便利的数据库分区方法,极大地提高了系统性能。
【专利说明】用于对数据库进行分区的方法和系统
【技术领域】
[0001]本发明涉及数据库分区领域,更具体地,涉及面向事务型工作负载的数据库分区。【背景技术】
[0002]随着计算机和网络技术的不断发展,对数据库技术的要求也日益提升。随着在线事务处理应用(例如在线交易应用)的规模的不断扩大和用户量的不断提升,这些应用产生了越来越多的数据和越来越多高度并发的事务,从而扩展性成为影响这些系统发展的主要障碍。系统的扩展性不好,会对系统的性能和吞吐量产生严重的影响。
[0003]为了解决扩展性的问题,许多基于Web的公司采用了经济有效的、并行的数据库管理系统(以下简称为DBMS)(例如Greenplum数据库),将数据和工作负载跨大量不共享任何内容的节点(例如商品服务器)进行分区。然而,在这些DBMS上的在线事务(transaction)处理(online transaction process,简称为0LTP)应用的可扩展性取决于最理想的数据库分区设计的存在:最理想的数据库分区设计限定了应用的数据和工作负载如何跨集群中的多个节点进行分区,以及对这些数据的查询和各项事务如何路由到多个节点。这转而确定了访问存储在各个节点上的事务的数量尤其是分布式事务的数量以及负载跨集群的分布的不均衡(skew)程度。对这两个因素进行优化对衡量复杂系统而言非常关键,如果没有恰当的设计,由于阻塞(blocking)、节点间通信以及负载平衡问题所引起的开销,DBMS的性能很可能并不好于单节点系统。

【发明内容】

[0004]针对上述问题,本发明提供一种用于对数据库进行分区的方法和系统。
[0005]根据本发明的一个方面,提供一种对数据库进行分区的方法,包括:将所述数据库中的多个条目分组成一个或多个条目组,以使同一个所述条目组中的条目总是被一个或多个事务同时访问;以及将所述一个或多个条目组划分为设定数目个分区,以使跨多于一个分区进行访问的事务总数最小化。
[0006]根据本发明的另一方面,提供一种对数据库进行分区的系统,包括:分组装置,被配置为将所述数据库中的多个条目分组成一个或多个条目组,以使同一个所述条目组中的条目总是被一个或多个事务同时访问;以及分区装置,被配置为将所述一个或多个条目组划分为设定数目个分区,以使跨多于一个分区进行访问的事务总数最小化
【专利附图】

【附图说明】
[0007]通过参考附图阅读下文的详细描述,本发明实施方式的上述以及其他目的、特征和优点将变得明显。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中相同的参考标号表示相同或相似的元素。
[0008]图1图示了本发明的实施方式可以实现于其中的示例性环境100。
[0009]图2图示了根据本发明一个示例性实施方式的用于对数据库进行分区的方法200的流程图。
[0010]图3图示了根据本发明示例性实施方式的用于对数据库进行分区的系统300的框图。
[0011]图4图示了根据本发明一个示例性实施方式的用于对数据库进行分区的系统的示例界面。
[0012]图5图示了适合用来实践本发明实施方式的计算机系统500的框图。
【具体实施方式】
[0013]下面将参考附图中示出的若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。
[0014]首先参考图1,其图示了本发明的实施方式可以实现于其中的示例性环境100。
[0015]如图所示,在示例环境100中,总是存在对数据库管理系统DBMS102进行访问的高度并发的工作负载,对于事务型数据库而言,工作负载可以包括大量的事务101。很明显,采用单节点数据库系统来应对这些事务除了对该单节点的存储能力有极高的要求外,对其的处理能力也是一种挑战。因此,较为常见的方法是将数据库102划分成多个分区(例如如图1中所示的分区1、分区2...),每个分区对应存储于集群的多个分布式节点上(例如如图1中所示的103节点I至节点η)。分布式节点103具有相应的服务器以完成对事务101的处理。换而言之,节点102同时具有对数据库分区的存储能力以及对事务101的处理能力。这样,对DBMS 102的大量并发的事务101访问就被分散为对一个或多个分布式节点103的访问,一方面降低了对各个分布式节点103的能力要求,另一方面也加快了对事务访问的处理速度。
[0016]如前所述,在这样的环境100中,对数据库进行分区的方式无疑是非常关键的。以下参照图2详细描述根据本发明示例性实施方式的对数据库进行分区的方法200。应当理解,方法200中示出的步骤仅仅是示意性的。例如,这些步骤可以按照不同的顺序执行甚至并行执行。此外,方法200也可以包括附加的步骤,替换某些步骤,或者省略某些步骤。
[0017]条目组分组
[0018]如图2所示,方法200开始之后,在步骤S202,首先将数据库中的多个条目分组成一个或多个条目组,以使得被分组于同一条目组中的全部条目在工作负载的执行期间始终被同时访问。这一步骤基于对工作负载和数据库的分析,确定出在工作负载执行期间总是被同时访问的条目,并将它们聚合成群组,作为后续划分的最小单元。在某些可选方式中,条目组的大小从数据库元数据和存储在系统目录中的统计数据中派生出。此外,还可以在可选方式中记录关于工作负载的各个事务还涉及到哪些条目组的有关信息。
[0019]数据库典型地例如可以是关系数据库,为使本领域技术人员更好地理解本发明,以下以关系数据库为例进一步说明该步骤S202的示例性实现,然而本领域技术人员应知,其完全可以是其它类型的数据库,并且步骤S202也可以以其它方式实现,本发明在此方面不受限制。
[0020]在关系数据库中,数据库条目例如可以为元组(tuple)。如本领域技术人员所知,术语“元组”是关系数据库中的基本概念,关系例如可以是一张表,而表中的每行(即数据库中的每条记录)可以称之为一个元组。因此,对于关系数据库而言,步骤S202例如可以包括基于从工作负载中提取的信息,将数据库中的每张表划分成一个或多个元组群组(tuplegroup)。术语“元组群组”是关系内的元组集合,在工作负载执行过程中,元组群组始终一起被访问。每个元组群组实质上代表最小项谓词(min-term predicate)。给定关系R,其中A是R的属性,则在R上定义的简单谓词P具有如下形式:
[0021]P:Α Θ const
[0022]其中,const是常数,并且Θ £{=,<,关,>,≤,≥}。
[0023]给定从工作负载派生的、关系R上的简单谓词{Ρ1,Ρ2,...,ρη}集,则最小项谓词M可以定义为:
[0024]
【权利要求】
1.一种对数据库进行分区的方法,包括: 将所述数据库中的多个条目分组成一个或多个条目组,以使同一个所述条目组中的条目总是被一个或多个事务同时访问;以及 将所述一个或多个条目组划分为设定数目个分区,以使跨多于一个分区进行访问的事务数目最小化。
2.根据权利要求1所述的方法,其中,将所述一个或多个条目组划分为设定数目个分区,以使跨多于一个分区进行访问的事务数目最小化进一步包括: 将所述一个或多个条目组映射为点; 将对所述点所代表的一个或多个条目组中所包含的条目进行访问的一个或多个事务映射为与所述点相关联的边,生成图结构;以及 将所述图结构划分为所述设定数目个部分,以使被切割的边的数目最少, 其中,划分成的所述各个部分对应于所述数据库的各个分区。
3.根据权利要求2所述的方法,其中所述图结构为超图。
4.根据权利要求1-3之任一所述的方法,还包括: 确定所划分的各个所述分区是否满足设定条件; 当确定为不满足所述设定条件时,重复进行如下步骤,直至满足所述设定条件: 将一个或多个所述条目组中的每一个进一步分组成多个条目组;以及基于当前的所有条目组进行所述划分设定数目个分区以使对多于一个分区进行访问的事务数目最小化。
5.根据权利要求4所述的方法,其中,所述将一个或多个所述条目组进一步分组成多个条目组进一步包括: 基于条目组的大小和/或条目组的大小与对所述条目组的访问频率的比率,选择用于进一步分组的所述一个或多个条目组。
6.根据权利要求4所述的方法,其中,所述设定条件涉及以下中的一个或多个:各个节点的存储能力、各个节点的处理能力、分区的均衡水平、总划分次数以及多次划分的结果是否收敛。
7.根据权利要求6所述的方法,其中,所述设定条件由所述节点本身决定和/或由用户设置。
8.根据权利要求6所述的方法,其中,所述多次划分的结果是否收敛进一步包括分别与最近若干次分区结果相关联的、跨多于一个分区进行访问的事务的数目之间的差别是否小于设定阈值。
9.根据权利要求6-8之任一所述的方法,其中,所述分区的均衡水平基于如下中的一个或多个进行度量:分区的数目、分区的大小、访问所述分区内全部条目的事务数目、存储不均衡的影响度、以及处理不均衡的影响度。
10.根据权利要求9所述的方法,其中,所述分区的均衡水平基于不均衡因子SF进行度量:1Lf=Iia X (si X 2?= I si) +Px (tI ~ EF=I fi))n其中,a代表所述存储不均衡对性能的影响因子,3代表所述处理不均衡对性能的影响因子,a和P均为非负参数并且a+P = I ; 并且其中,n代表分区的数目,Si和\分别代表第i个分区内的条目组的大小和访问第i个分区的事务的总数量。
11.根据权利要求1-3之任一所述的方法,进一步包括: 当确定为满足所述设定条件时,基于各个所述分区中的条目与存储所述条目的节点之间的映射关系,建立查找表。
12.根据权利要求1-3之任一所述的方法,其中所述数据库为关系数据库。
13.—种对数据库进行分区的系统,包括: 分组装置,被配置为将所述数据库中的多个条目分组成一个或多个条目组,以使同一个所述条目组中的条目总是被一个或多个事务同时访问;以及 分区装置,被配置为将所述一个或多个条目组划分为设定数目个分区,以使跨多于一个分区进行访问的事务数目最小化。
14.根据权利要求13所述的系统,其中,所述分区装置进一步包括: 点映射装置,被配置为将所述一个或多个条目组映射为点; 边映射装置,被配置为将对所述点所代表的一个或多个条目组中所包含的条目进行访问的一个或多个事务映射为与所述点相关联的边,生成图结构;以及 图划分装置,被配置为将所述图结构划分为所述设定数目个部分,以使被切割的边的数目最少, 其中,划分成的所述各个部分对应于所述数据库的各个分区。
15.根据权利要求14所述的系统,其中所述图结构为超图。
16.根据权利要求13-15之任一所述的系统,还包括: 确定装置,被配置为确定所划分的各个所述分区是否满足设定条件;以及 精化装置,被配置为当确定为不满足所述设定条件时,重复进行如下步骤,直至满足所述设定条件: 将一个或多个所述条目组中的每一个进一步分组成多个条目组; 基于当前的所有条目组进行所述划分设定数目个分区以使对多于一个分区进行访问的事务数目最小化。
17.根据权利要求16所述的系统,其中,所述将一个或多个所述条目组进一步分组成多个条目组进一步包括: 基于条目组的大小和/或条目组的大小与对所述条目组的访问频率的比率,选择用于进一步分组的所述一个或多个条目组。
18.根据权利要求17所述的系统,其中,所述设定条件涉及以下中的一个或多个:各个节点的存储能力、各个节点的处理能力、分区的均衡水平、总划分次数以及多次划分的结果是否收敛。
19.根据权利要求18所述的系统,其中,所述设定条件由所述节点本身决定和/或由用户设置。
20.根据权利要求18所述的系统,其中,所述多次划分的结果是否收敛进一步包括分别与最近若干次分区结果相关联的、跨多于一个分区进行访问的事务的数目之间的差别是否小于设定阈值。
21.根据权利要求18-20之任一所述的系统,其中,所述分区的均衡水平基于如下中的一个或多个进行度量:分区的数目、分区的大小、访问所述分区内全部条目的事务数目、存储不均衡的影响度、以及处理不均衡的影响度。
22.根据权利要求21所述的系统,其中,所述分区的均衡水平基于不均衡因子SF进行度量:
23.根据权利要求13-15之任一所述的系统,进一步包括: 查找表建立装置,被配置为当确定为满足所述设定条件时,基于各个所述分区中的条目与存储所述条目的节点之间的映射关系,建立查找表。
24.根据权利要求13-15之任一所述的系统,其中所述数据库为关系数据库。
【文档编号】G06F17/30GK103714098SQ201210387802
【公开日】2014年4月9日 申请日期:2012年9月29日 优先权日:2012年9月29日
【发明者】曹逾, 郭小燕, 陈继东 申请人:伊姆西公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1