首页> 中国专利> 用于灵活的分布式大规模并行处理(MPP)数据库的系统和方法

用于灵活的分布式大规模并行处理(MPP)数据库的系统和方法

摘要

一种大规模并行处理的实施例方法,包括:将主键分配给数据库中的第一数据表、将外键分配给所述数据库中的第二数据表,所述第二数据表的外键与所述第一数据表的主键完全相同;确定所述数据库需要的分区组数;基于分配的所述主键和需要的分区组数将所述第一数据表划分成多个第一分区,基于分配的所述外键和需要的分区组数将所述第二数据表划分成多个第二分区;根据分区情况将所述第一分区和第二分区分发到所述分区组。本发明还公开了一种实现所述实施例方法的实施例系统。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-02-01

    发明专利更正 卷:34 号:44-01 页码:扉页 IPC(主分类):G06F0017300000 更正项目:优先权在先申请号 误:13/663,327 正:13/663,237 申请日:20131029

    发明专利更正

  • 2018-10-30

    授权

    授权

  • 2015-09-23

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20131029

    实质审查的生效

  • 2015-08-26

    公开

    公开

说明书

相关申请案交叉申请

本发明要求于2012年10月29日递交的发明名称为“用于灵活的分布 式大规模并行处理(MPP)数据库的系统和方法”的第13/663,237号美国专 利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。

技术领域

本发明涉及一种大规模并行处理(MPP)数据库管理系统,以及在特定 实施例中,涉及一种能将数据库分区数与固定处理器数分离的管理系统。

背景技术

大规模并行处理(MPP)的概念是指多个处理器对一个程序的协调处 理,其中每个处理器处理所述程序的不同部分。每个处理器使用自身的操作 系统与内存资源,各处理器之间互相通信以完成任务。

MPP数据库系统基于无共享架构,数据库表划分成多个部分,并分配至 不同的处理节点。处理节点间无数据共享。当数据库查询到达时,每条查询 的任务会进行划分,并根据数据分配计划与优化的执行计划将其分配给其中 的一个处理节点。每个处理节点中的处理实体只管理各自的一部分数据。但 是,这些处理实体在执行工作时可互相通信以交换必要的信息。每条查询可 拆分成多个子查询,这些子查询可以在部分或所有处理节点上并行执行或以 最佳顺序执行。子查询结果可以汇聚以进行进一步的处理,其后可根据该结 果执行更多的子查询。

建立分布式系统及分发数据一直是MPP数据库系统面临的一个挑战。 数据如何分发以及分发在多大程度上与业务逻辑保持一致在很大程度上决定 了系统的整体性能。

发明内容

一种用来在逻辑上将数据库拆分为多个独立运行的小数据库的实施例方 法,包括:将主键分配给数据库中的第一数据表、将外键分配给所述数据库 中的第二数据表,所述第二数据表的外键与所述第一数据表的主键完全相 同;确定所述数据库需要的分区组数;基于分配的所述主键和需要的分区组 数将所述第一数据表划分成多个第一分区;基于分配的所述外键和需要的分 区组数将所述第二数据表划分成多个第二分区;根据分区情况将所述第一分 区和第二分区分发到所述分区组。

一个用来在逻辑上将数据库拆分为多个独立运行的小数据库的实施例, 包括:确定数据库需要的分区组数;基于第一属性与需要的分区组数将第一 数据表划分成多个第一分区;基于第二属性与需要的分区组数将第二数据表 划分成多个第二分区;根据分区情况将所述第一分区和第二分区分发到所述 分区组。

一种用来建立大规模并行处理系统的实施例装置,包括:处理器、以及 数据库建立模块,当数据库建立模块被处理器执行时,用于分配主键给数据 库中的第一数据表,分配外键给所述数据库中的第二数据表,其中所述第二 数据表的外键与所述第一数据表的主键完全相同;确定数据库需要的分区组 数;基于分配的所述主键和需要的分区组数将所述第一数据表划分成多个第 一分区;基于分配的所述外键和需要的分区组数将所述第二数据表划分成多 个第二分区;根据分区情况将所述第一分区和第二分区分发到所述分区组。

一种大规模并行处理的实施例数据库系统,包括:至少一个内存,以及 存储在至少一个内存上的数据库,所述数据库包括第一数据表和第二数据 表,其中所述第一数据表和第二数据表通过以下建立:分配主键给所述数据 库中的所述第一数据表和外键给所述数据库中的第二数据表,其中所述第二 数据表的外键与所述第一数据表的主键完全相同;确定数据库需要的分区组 数;基于分配的所述主键和需要的分区组数将所述第一数据表划分成多个第 一分区;基于分配的所述外键和需要的分区组数将所述第二数据表划分成多 个第二分区;根据分区情况将所述第一分区和所述第二分区分发到所述分区 组。

附图说明

为了更全面地理解本发明及其优点,请参考下文结合附图进行的描述, 其中:

图1示出了具有无分区的数据表(例如,t1至t4)的传统数据库;

图2示出了具有已分区数据表(例如,t1至t3)和无分区数据表(例如 t4)的传统数据库;

图3示出了实施例数据库,其具有包含了已分区数据表(例如,t1至 t3)和无分区数据表(例如,t4)的各类分区(t1-p1、t1-p2、t1-p3、t2-p1 等)的分区组(例如,DBPartition-1、DBPartition-2、DBPartition-3);

图4为创建图3中的数据库、数据表和分区组的概要流程图;

图5为创建图3中分区组的流程图;

图6为用于流程图3中分区组的插入操作的流程图;

图7为从图3的分区组中检索数据过程的流程图;

图8为在图3的分区组中更新数据过程的流程图;

图9为一种用于建立大规模并行处理系统的装置;

图10为一种大规模并行处理数据库系统。

除非另有说明,在不同的图中,相应的编号和符号通常指对应的部件。 图形的绘制旨在清楚地说明实施例的相关方面,但未必按比例绘制。

具体实施方式

下文将详细论述当前优选实施例的制作和使用。然而,应了解,本发明 提供许多可在各种具体环境中具体实现的适用的发明性概念。所论述的具体 实施例仅为说明性的,并不限制本发明的范围。

本发明将结合具体环境下的优选实施例,即大规模并行处理(MPP)数 据库及其管理,进行说明,但本发明中的概念也可适用于其他种类的数据库 与数据管理系统。

现在参照图1,出于参考的目的,图1示出了无分区的传统或典型的大 规模并行处理(MPP)数据库10。如图所示,数据库10包括四个数据表12 (即t1至t4)。每个所述数据表12包括若干列14(例如,c1、c2、c3等)。 随着附加数据或新数据的填充,数据表12的大小会快速扩张,使单个处理 器无法有效处理。为提高效率,可对变大的数据表14进行分区。

现在参照图2,出于参考的目的,图2示出了具有已分区数据表18(例 如,t1至t3)和无分区数据表20(例如,t4)的传统或典型的大规模并行处 理(MPP)数据库20。如图所示,已分区数据表18(例如,t1至t3)已划 分为分区22(例如,t1-分区1、t1-分区2、t1-分区3、t2-分区2等)。其中 一个所述数据表20(例如,t4)与其他数据表相比可能相对较小,没有进行 分区。不巧的是,每个所述分区22与所述未分区数据表20被分配给了不同 的处理器,并保存在不同的内存或存储设备上。因此,对所述数据库16的 任何查询可能要使用连接命令,需要使用数个处理器,并必须访问数个不相 关的内存或存储设备,以在各个分区中检索数据。这种查询过程效率较低。

现在参照图3,图3示出了一种大规模并行处理(MPP)数据库24的实 施例。图3中的数据库24通过分配主键给第一数据表26(即t1,分区前)、 分配外键给第二数据表28(即t2,分区前)而创建。所述第二数据表28的 外键与所述第一数据表26的主键完全相同。这样,第一、第二数据表之间 就建立了关系。所述主/外键可以基于数据类型或数据表每列(例如,c1、c2 、c3等)存储的值分配给每个所述的数据表。

还可以将主、外键分配给数据库24中的第三数据表30(例如,t3,分 区前)或者附加数据表。举例来说,第三数据表30的外键与第一数据表26 的主键或者第二数据表28的主键完全相同。这样,第一、第三数据表之间 或者第二、第三数据表之间就建立了关系。这个给数据表分配键的过程可以 类似方式对附加数据表重复执行。

在所述键分配后,分区组32(例如,DBPartitions、容器等)的数量就 确定了。举例来说,在图3中选择了三个所述的分区组32。应当认识到,可 以基于,例如,数据库24中的数据表26、28、30的大小,可用的处理器或 存储器等,选择更多或更少的分区组32。在实施例中,每一个所述的分区 组32可作为其独立的数据库。也就是说,所述分区组32可作为多个能够联 合或独立运行的小数据库。

仍然参照图3,基于分配的主键和选择的分区组32的数量,第一数据表 26分区为或者划分为多个第一分区34(即t1-p1、t1-p2、t1-p3)。类似地, 基于分配的外键和选择的分区组32的数量,第二数据表28分区为或者划分 为多个第二分区36(即t2-p1、t2-p2、t2-p3)。同样,基于分配的外键和确 定的分区组32的数量,第三数据表30分区为或者划分为多个第三分区38 (即t3-p1、t3-p2、t3-p3)。值得注意的是,图3中第一分区34、第二分区 36、及第三分区38的数量是相同的。也就是说,第一、第二、第三数据表 26、28、30是基于正使用的分区组32的数量平均划分的。例如,假设有四 个所述分区组32正在使用,则数据表26、28、30会被划分成四份或四个部 分,而不是三份或三个部分。在实施例中,所述分区组32还包括与对应的 分区组32中的数据相关的索引、编目、权限等。

在数据表26、28、30(即t1至t3)如上所述进行划分后,第一、第二 、第三分区34、36、38分发给分区组32,如图3所示。图3中的第四数据 表40(即t4)与其他数据表(t1至t3)相比可能相对较小,没有进行分区 并被复制到各个所述的分区组32。

因为数据表26、28、30的分区过程使用了主-外键关系,因此每个分区 组32收集的分区中的数据存在某种程度的相关。也就是说,每个分区组32 包含容纳通过一些属性相连的数据的分区。因此,执行查询时,效率得到提 高。事实上,与特定查询对应的数据此时可能或更可能在单个分区组32中 找到。因此,执行连接命令、访问位于不同地方的分区等需求将会减小或消 除。

在实施例中,在所述分区组32建立后,每个所述的分区组32会被分配 到独立处理器和/或独立内存。这样,每个所述分区组32拥有自身的资源。

现在参照图4,图4提供了创建图3中数据库24、数据表26、28、30 和分区组32的概要流程图。如图所示,在方框100中,所述过程开始。在 方框110中,创建所述数据库24。此后,在方框120中,创建数据表26、 28、30。在方框130中,创建所述分区组32,例如,如图3所示。

现在参照图5,图5提供了创建图3中分区组32的流程图。如图所示, 在方框200中,所述过程开始。在方框中210,创建分区组32(也就是 说,DBPartitions)开始。在方框220中,判断是否指定了外键。如果外键未 指定,则在方框240中,使用个别的数据表列属性。但是,如果外键已指 定,则在方框230中,使用主键-外键关系。

仍然参照图5,在方框250中,创建分区组32并将其分配到处理器和存 储器中。此后,在方框260中,编目中,例如,更新了元数据等。在方框 270中,创建索引,在方框280中,通过存储索引信息更新所述分区组32。 然后,在方框90中,所述分区组32过程结束,架构已备好使用。

现在参照图6,图6提供了用于填充图3中分区组的插入操作的流程图 。如图所示,在方框300中,所述过程开始。在方框310中,从客户端收到 插入语句。在方框320中,规划器接收查询、读取编目、决定将数据插入到 哪一个分区组32。在方框330中,选择其中一个所述分区组32,将数据插 入到该分区组。在方框340中,如有需要,则修改所述索引(例如,使用图 5中方框270中的过程)。此后,在方框350中,过程结束。

现在参照图7,图7提供了从图3的分区组32中检索数据过程的流程图 。如图所示,在方框400中,所述过程开始。在方框410中,从客户端收到 选择语句。在方框420中,判断所述选择语句是否涉及多张数据表。如果不 涉及多张数据表,则该过程转到方框450,以下将会进行更详细的描述。但 是,如果涉及多张数据表,则在方框430中,判断所述决策涉及的所有列是 否为主或外键。如果所述决策涉及的所有列是主/外键,则该过程转到方框 450,以下将会进行更详细的描述。

仍然参照图7,在方框440中,所述规划器使用主外键间的关系简化所 述查询,并尽可能少地涉及分区组32。因为分区组32已通过主外键关系组 织,查询处理应该更有效率。接下来,在方框450中,所述规划器读取编 目,通过应用算法确定数据的位置,并将计划传递给查询涉及的每个分区组 32的优化器。然后,在方框460中,从一个或多个分区组32中收集数据。 在方框470中,输出数据至客户端。此后,在方框480中,过程结束。

现在参照图8,图8提供了在图3的分区组32中更新数据过程的流程图 。如图所示,在方框500中,所述过程开始。在方框510中,从客户端收到 更新语句。在方框520中,判断待更新的字段是否为重要列(即,作为主或 外键)。如果否,在方框530中,所述规划器读取编目,通过应用算法确定 数据的位置,并将计划传递给查询涉及的每个所述分区组32的优化器。此 后,在方框540中,更新每一个涉及的分区组32;在方框610中,所述过程 结束。

仍然参照图8,如果在方框520中判断待更新字段为重要列,则在方框 550中,所述规划器读取编目,通过应用算法确定数据的位置,将计划传递 给查询涉及的每个分区组32的优化器。在方框560中,判断对元组(即, 行)的更新是否导致分区组32的变化。如果否,则在方框570中,在同一 分区组32内执行更新,并且该过程将转至方框600,以下将会进行更详细的 描述。

但是,如果所述更新导致变化,则在方框580中,所述更新被插入到新 的分区组32,同时旧的更新从旧分区组中删除。在方框590中,更新这两个 分区组(即,新分区组和旧分区组)的索引。然后,在方框600中,判断是 否有更多的行待更新。如果有,则返回至过程中的方框560;如果没有,则 在方框610中,所述过程结束。

现在参照图9,图9公开了一种用于建立大规模并行处理系统的装置42 。在实施例中,所述装置42为便携式计算机、笔记本电脑、台式电脑、服 务器或其他处理设备。在实施例中,所述装置42包括与数据库建立模块46 通信的处理器44,所述数据库建立模块46可以存储或位于内存中(未示出) 。当所述数据库建立模块46被处理器44执行时,所述数据库建立模块46 用于在服务器、云等上面建立或以其他方式创建图3中的数据库24。

在实施例中,当所述数据库建立模块46被处理器44执行时,所述数据 库建立模块46将主键分配给数据库中的第一数据表、将外键分配给数据库 中的第二数据表。值得注意的是,所述第二数据表的外键与所述第一数据表 的主键完全相同或匹配。所述数据库建立模块46还确定数据库需要的分区 组数,基于分配的所述主键和需要的分区组数将第一数据表划分成多个第一 分区,基于分配的所述外键和需要的分区组数将第二数据表划分成多个第二 分区,然后根据分区情况将第一分区和第二分区分发到分区组。

在实施例中,所述处理器44用于将独立处理器和独立内存中的至少一 个分配给每个所述分区组32,并将未分区的数据表(例如,t4)复制到每个 所述分区组32。

现在参照图10,图10示出了一种大规模并行处理数据库系统48。所述 大规模并行处理数据库系统48用于或适用于实现或利用本文公开的过程、 方法、及动作。在实施例中,所述系统48为便携式计算机、笔记本电脑、 台式电脑、服务器或其他处理设备。在实施例中,所述系统48包括至少一 个内存50,以存储,例如,图3中的数据库24。

图10的数据库24包括第一数据表(例如,图3中的t1)和第二数据表 (例如,图3中的t2)。所述第一数据表和第二数据表通过分配主键给数据 库24中的第一数据表、分配外键给数据库24中的第二数据表而建立。所述 第二数据表的外键与所述第一数据表的主键完全相同或匹配。所述第一数据 表和第二数据表还通过以下建立:确定所述数据库需要的分区组数,基于分 配的所述主键和需要的分区组数将第一数据表划分成多个第一分区,基于分 配的所述外键和需要的分区组数将第二数据表划分成多个第二分区,然后根 据分区情况将第一分区和第二分区分发到分区组。

应当认识到,本发明从整个数据库的角度而不是从个别数据表的角度呈 现了在数据表中分发数据的方法。这样,更多的可能属于不同数据表的相关 数据位于同一分区组32。这样,在查询执行时性能得以提升。事实上,本 发明呈现了在存储时为加快访问而去规范化数据并将相关数据一起打包到分 区组32中的过程。

虽然本发明提供了说明性实施例,但此描述并不旨在限制本发明。所属 领域的技术人员在参考该描述后,将会明白说明性实施例的各种修改和组 合,以及其他实施例。因此,所附权利要求书意图涵盖任何此类修改或实施 例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号