一种数据分区方法和设备.pdf

上传人:e1 文档编号:7268119 上传时间:2019-10-02 格式:PDF 页数:18 大小:626.85KB
返回 下载 相关 举报
摘要
申请专利号:

CN201480000188.8

申请日:

20140305

公开号:

CN105517644A

公开日:

20160420

当前法律状态:

有效性:

审查中

法律详情:

IPC分类号:

A99Z99/00

主分类号:

A99Z99/00

申请人:

华为技术有限公司

发明人:

时家幸,黄乐,王玉虎

地址:

518129 广东省深圳市龙岗区坂田华为总部办公楼

优先权:

CN2014072937W

专利代理机构:

北京中博世达专利商标代理有限公司

代理人:

申健

PDF下载: PDF下载
内容摘要

本发明实施例提供一种数据分区方法和设备,涉及数据库领域,能够消除远程join操作,减少数据查询过程中的网络带宽,同时创造备份数据。其方法为:通过将分布式数据库中的维表进行数据分区,根据所述维表的分区特征并按照预设算法建立分区映射表,将所述维表对应的事实表按照所述分区映射表进行分区,并按照所述分区映射表备份所述事实表中的数据,这样在分区的时候,通过预设的算法使得分区时记录出现冲突,利用冲突造成冗余记录,用于数据备份。本发明实施例用于分布式数据库的数据分区。

权利要求书

1.一种数据分区方法,其特征在于,包括:将分布式数据库中的维表进行数据分区;根据所述维表的分区特征并按照预设算法建立分区映射表;将所述维表对应的事实表按照所述分区映射表进行分区,并按照所述分区映射表备份所述事实表中的数据。 2.根据权利要求1所述的方法,其特征在于,所述将分布式数据库中的维表进行数据分区包括:按照哈希算法,将所述分布式数据库中的维表进行数据分区,以获取分区后各个节点对应的维表的数据。 3.根据权利要求2所述的方法,其特征在于,所述根据所述维表的分区特征并按照预设算法建立分区映射表包括:根据所述分区后各个节点对应的维表和所述事实表的连接键,与待建立的分区映射表的纵坐标的预设数量,按照预设算法获取余数;根据所述余数建立所述分区映射表,所述分区映射表为比特向量表,所述比特向量表的横坐标表示各个节点的标识符,纵坐标表示所述连接键与所述预设数量进行预设算法后的余数;其中,所述预设运算为取模运算、模P加法、模P减法和模P乘法中的其中一个,所述预设数量小于所述维表的维表记录数。 4.根据权利要求3所述的方法,其特征在于,所述将所述维表对应的事实表按照所述分区映射表进行分区,并按照所述分区映射表备份所述事实表中的数据包括:根据所述事实表中所述连接键与所述预设数量按照所述预设算法获取的余数确定所述分区映射表的纵坐标,选取所述纵坐标对应比特值为1的节点为所述连接键对应的事实表数据的分区节点;将所述事实表的数据按照确定的分区节点进行分区,其中,当根据所述连接键获取的所述纵坐标对应的比特值为1有至少两个节点时,将所述连接键对应的事实表数据同时分布在所述至少两个节点上。 5.根据权利要求4所述的方法,其特征在于,所述方法还包括:若在将所述事实表按照所述分区映射表进行分区时,出现备份的事实表数据没有同时备份在所述至少两个节点上,则根据所述分区映射表查找将所述事实表数据备份成功的节点;根据所述备份成功的节点中的事实表数据和所述分区映射表,获取丢失的备份事实表数据,以便于从所述备份成功的节点获取所述丢失的备份事实表数据。 6.一种设备,其特征在于,包括:第一分区单元,用于将分布式数据库中的维表进行数据分区;建立单元,用于根据所述维表的分区特征并按照预设算法建立分区映射表;第二分区单元,用于将所述维表对应的事实表按照所述分区映射表进行分区;以及备份单元,用于按照所述分区映射表备份所述事实表中的数据。 7.根据权利要求6所述的设备,其特征在于,所述第一分区单元具体用于:按照哈希算法,将所述分布式数据库中的维表进行数据分区,以获取分区后各个节点对应的维表的数据。 8.根据权利要求7所述的设备,其特征在于,所述建立单元具体用于:根据所述分区后各个节点对应的维表和所述事实表的连接键,与待建立的分区映射表的纵坐标的预设数量,按照预设算法获取余数;根据所述余数建立所述分区映射表,所述分区映射表为比特向量表,所述比特向量表的横坐标表示各个节点的标识符,纵坐标表示所述连接键与所述预设数量进行预设算法后的余数;其中,所述预设运算为取模运算、模P加法、模P减法和模P乘法中的其中一个,所述预设数量小于所述维表的维表记录数。 9.根据权利要求8所述的设备,其特征在于,所述第二分区单元和所述备份单元具体用于:根据所述事实表中所述连接键与所述预设数量按照所述预设算法获取的余数确定所述分区映射表的纵坐标,选取所述纵坐标对应比特值为1的节点为所述连接键对应的事实表数据的分区节点;将所述事实表的数据按照确定的分区节点进行分区,其中,当根据所述连接键获取的所述纵坐标对应的比特值为1有至少两个节点时,将所述连接键对应的事实表数据同时分布在所述至少两个节点上。 10.根据权利要求9所述的设备,其特征在于,还包括:查找单元,用于若在将所述事实表按照所述分区映射表进行分区时,出现备份的事实表数据没有同时备份在所述至少两个节点上,则根据所述分区映射表查找将所述事实表数据备份成功的节点;获取单元,用于根据所述备份成功的节点中的事实表数据和所述分区映射表,获取丢失的备份事实表数据,以便于从所述备份成功的节点获取所述丢失的备份事实表数据。 11.一种设备,其特征在于,包括:处理器,用于将分布式数据库中的维表进行数据分区;所述处理器,还用于根据所述维表的分区特征并按照预设算法建立分区映射表;所述处理器,还用于将所述维表对应的事实表按照所述分区映射表进行分区,并按照所述分区映射表备份所述事实表中的数据。 12.根据权利要求11所述的设备,其特征在于,所述处理器具体用于:按照哈希算法,将所述分布式数据库中的维表进行数据分区,以获取分区后各个节点对应的维表的数据。 13.根据权利要求12所述的设备,其特征在于,所述处理器具体用于:根据所述分区后各个节点对应的维表和所述事实表的连接键,与待建立的分区映射表的纵坐标的预设数量,按照预设算法获取余数;根据所述余数建立所述分区映射表,所述分区映射表为比特向量表,所述比特向量表的横坐标表示各个节点的标识符,纵坐标表示所述连接键与所述预设数量进行预设算法后的余数;其中,所述预设运算为取模运算、模P加法、模P减法和模P乘法中的其中一个,所述预设数量小于所述维表的维表记录数。 14.根据权利要求13所述的设备,其特征在于,所述处理器具体用于:根据所述事实表中所述连接键与所述预设数量按照所述预设算法获取的余数确定所述分区映射表的纵坐标,选取所述纵坐标对应比特值为1的节点为所述连接键对应的事实表数据的分区节点;将所述事实表的数据按照确定的分区节点进行分区,其中,当根据所述连接键获取的所述纵坐标对应的比特值为1有至少两个节点时,将所述连接键对应的事实表数据同时分布在所述至少两个节点上。 15.根据权利要求14所述的设备,其特征在于,所述处理器还用于:若在将所述事实表按照所述分区映射表进行分区时,出现备份的事实表数据没有同时备份在所述至少两个节点上,则根据所述分区映射表查找将所述事实表数据备份成功的节点;根据所述备份成功的节点中的事实表数据和所述分区映射表,获取丢失的备份事实表数据,以便于从所述备份成功的节点获取所述丢失的备份事实表数据。

说明书

技术领域

本发明涉及数据库领域,尤其涉及一种数据分区方法和设备。

背景技术

在联机分析处理(OnlineAnalyticalProcessing,OLAP)这种 分析性数据库中,处理的数据量都比较大,单机的性能已经不能满足 需要,大规模并行处理(Massiveparallelprocessing,MPP)架构 可以将数据分布到多个节点上,由多个节点并行处理,从而提高处理 速度。为了使每个节点都并行处理一定量的数据,一般情况下需要将 表水平分割,放到不同的节点上。但是如果没有考虑到表之间的关系, 当两表之间有join(连接查询)操作时,会产生大量的网络传输, join操作效率低下。

Oracle提出引用分区(ReferencePartitioning)方案,可以 根据数据表之间的关系,由根数据表开始进行分区,先在根数据表指 定一列作为分区列,在分区该表的同时分区子表中的相关数据,从而 使相关的数据放在同一节点上,使join过程可以本地完成,但是该 方案只适用于数据关系存在层次结构的,而数据分配随着层次结构的 加深,复杂度不断加大。

当每个数据表各自指定一列作为分区列,每个数据表单独区分, 但是分区函数相同,如果两表选择的分区列刚好是需要join的列, 则这两个表的join操作刚好可以本地完成,如果需要join的列不是 用于区分的列,则将这个需要join的列再进行一次重新分区,join 操作便用重新分区的表进行操作,从而使join操作本地化,但是这 样一来导致数据传输量大,浪费网络和存储空间。

发明内容

本发明提供一种数据分区方法和设备,能够消除远程join操作, 减少数据查询过程中的网络带宽,同时创造备份数据。

第一方面,提供一种数据分区方法,包括:

将分布式数据库中的维表进行数据分区;

根据所述维表的分区特征并按照预设算法建立分区映射表;

将所述维表对应的事实表按照所述分区映射表进行分区,并按照 所述分区映射表备份所述事实表中的数据。

结合第一方面,在第一种可能实现的方式中,所述将分布式数据 库中的维表进行数据分区包括:

按照哈希算法,将所述分布式数据库中的维表进行数据分区,以 获取分区后各个节点对应的维表的数据。

结合第一方面的第一种可能实现的方式,在第二种可能实现的方 式中,所述根据所述维表的分区特征并按照预设算法建立分区映射表 包括:

根据所述分区后各个节点对应的维表和所述事实表的连接键,与 待建立的分区映射表的纵坐标的预设数量,按照预设算法获取余数;

根据所述余数建立所述分区映射表,所述分区映射表为比特向量 表,所述比特向量表的横坐标表示各个节点的标识符,纵坐标表示所 述连接键与所述预设数量进行预设算法后的余数;

其中,所述预设运算为取模运算、模P加法、模P减法和模P 乘法中的其中一个,所述预设数量小于所述维表的维表记录数。

结合第一方面的第二种可能实现的方式,在第三种可能实现的方 式中,所述将所述维表对应的事实表按照所述分区映射表进行分区, 并按照所述分区映射表备份所述事实表中的数据包括:

根据所述事实表中所述连接键与所述预设数量按照所述预设算 法获取的余数确定所述分区映射表的纵坐标,选取所述纵坐标对应比 特值为1的节点为所述连接键对应的事实表数据的分区节点;

将所述事实表的数据按照确定的分区节点进行分区,其中,当根 据所述连接键获取的所述纵坐标对应的比特值为1有至少两个节点 时,将所述连接键对应的事实表数据同时分布在所述至少两个节点 上。

结合第一方面的第三种可能实现的方式,在第四种可能实现的方 式中,所述方法还包括:

若在将所述事实表按照所述分区映射表进行分区时,出现备份的 事实表数据没有同时备份在所述至少两个节点上,则根据所述分区映 射表查找将所述事实表数据备份成功的节点;

根据所述备份成功的节点中的事实表数据和所述分区映射表,获 取丢失的备份事实表数据,以便于从所述备份成功的节点获取所述丢 失的备份事实表数据。

第二方面,提供一种设备,包括:

第一分区单元,用于将分布式数据库中的维表进行数据分区;

建立单元,用于根据所述维表的分区特征并按照预设算法建立分 区映射表;

第二分区单元,用于将所述维表对应的事实表按照所述分区映射 表进行分区;以及

备份单元,用于按照所述分区映射表备份所述事实表中的数据。

结合第二方面,在第二方面的第一种可能实现的方式中,所述第 一分区单元具体用于:

按照哈希算法,将所述分布式数据库中的维表进行数据分区,以 获取分区后各个节点对应的维表的数据。

结合第二方面的第一种可能实现的方式,在第二方面的第二种可 能实现的方式中,所述建立单元具体用于:

根据所述分区后各个节点对应的维表和所述事实表的连接键,与 待建立的分区映射表的纵坐标的预设数量,按照预设算法获取余数;

根据所述余数建立所述分区映射表,所述分区映射表为比特向量 表,所述比特向量表的横坐标表示各个节点的标识符,纵坐标表示所 述连接键与所述预设数量进行预设算法后的余数;

其中,所述预设运算为取模运算、模P加法、模P减法和模P 乘法中的其中一个,所述预设数量小于所述维表的维表记录数。

结合第二方面的第二种可能实现的方式,在第二方面的第三种可 能实现的方式中,所述第二分区单元和所述备份单元具体用于:

根据所述事实表中所述连接键与所述预设数量按照所述预设算 法获取的余数确定所述分区映射表的纵坐标,选取所述纵坐标对应比 特值为1的节点为所述连接键对应的事实表数据的分区节点;

将所述事实表的数据按照确定的分区节点进行分区,其中,当根 据所述连接键获取的所述纵坐标对应的比特值为1有至少两个节点 时,将所述连接键对应的事实表数据同时分布在所述至少两个节点 上。

结合第二方面的第三种可能实现的方式,在第二方面的第四种可 能实现的方式中,还包括:

查找单元,用于若在将所述事实表按照所述分区映射表进行分区 时,出现备份的事实表数据没有同时备份在所述至少两个节点上,则 根据所述分区映射表查找将所述事实表数据备份成功的节点;

获取单元,用于根据所述备份成功的节点中的事实表数据和所述 分区映射表,获取丢失的备份事实表数据,以便于从所述备份成功的 节点获取所述丢失的备份事实表数据。

第三方面,提供一种设备,包括:

处理器,用于将分布式数据库中的维表进行数据分区;

所述处理器,还用于根据所述维表的分区特征并按照预设算法建 立分区映射表;

所述处理器,还用于将所述维表对应的事实表按照所述分区映射 表进行分区,并按照所述分区映射表备份所述事实表中的数据。

结合第三方面,在第一种可能实现的方式中,所述处理器具体用 于:

按照哈希算法,将所述分布式数据库中的维表进行数据分区,以 获取分区后各个节点对应的维表的数据。

结合第三方面的第一种可能实现的方式,在第二种可能实现的方 式中,所述处理器具体用于:

根据所述分区后各个节点对应的维表和所述事实表的连接键,与 待建立的分区映射表的纵坐标的预设数量,按照预设算法获取余数;

根据所述余数建立所述分区映射表,所述分区映射表为比特向量 表,所述比特向量表的横坐标表示各个节点的标识符,纵坐标表示所 述连接键与所述预设数量进行预设算法后的余数;

其中,所述预设运算为取模运算、模P加法、模P减法和模P 乘法中的其中一个,所述预设数量小于所述维表的维表记录数。

结合第三方面的第二种可能实现的方式,在第三种可能实现的方 式中,所述处理器具体用于:

根据所述事实表中所述连接键与所述预设数量按照所述预设算 法获取的余数确定所述分区映射表的纵坐标,选取所述纵坐标对应比 特值为1的节点为所述连接键对应的事实表数据的分区节点;

将所述事实表的数据按照确定的分区节点进行分区,其中,当根 据所述连接键获取的所述纵坐标对应的比特值为1有至少两个节点 时,将所述连接键对应的事实表数据同时分布在所述至少两个节点 上。

结合第三方面的第三种可能实现的方式,在第四种可能实现的方 式中,所述处理器还用于:

若在将所述事实表按照所述分区映射表进行分区时,出现备份的 事实表数据没有同时备份在所述至少两个节点上,则根据所述分区映 射表查找将所述事实表数据备份成功的节点;

根据所述备份成功的节点中的事实表数据和所述分区映射表,获 取丢失的备份事实表数据,以便于从所述备份成功的节点获取所述丢 失的备份事实表数据。

本发明实施例提供一种数据分区方法和设备,通过将分布式数据 库中的维表进行数据分区,根据所述维表的分区特征并按照预设算法 建立分区映射表,将所述维表对应的事实表按照所述分区映射表进行 分区,并按照所述分区映射表备份所述事实表中的数据,这样在分区 的时候,可以通过预设的算法使得分区时记录出现冲突,利用冲突造 成冗余记录,用于数据备份,能够减少数据查询过程中的网络带宽, 同时创造备份数据。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对 实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地, 下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员 来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附 图。

图1为本发明实施例提供的一种数据分区方法流程示意图;

图2为本发明又一实施例提供的一种数据分区方法流程示意图;

图3为本发明又一实施例提供的一种设备结构图;

图4为本发明又一实施例提供的一种设备结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进 行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没 有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的 范围。

实施例一

本发明实施例提供一种数据分区方法,如图1所示,包括:

101、设备将分布式数据库中的维表进行数据分区。

其中,这里的设备可以为计算机,有自身的磁盘,中央处理器 (CentralProcessingUnit,CPU)。本发明实施例的应用场景可以 是分布式大规模并行处理(Massiveparallelprocessing,mpp) 数据库中的数据分布问题。

具体的,在分布式mpp数据库中,当有join(连接查询)关系 的2个表中,可以先将维表按照通用算法进行数据分区,这里的通用 算法可以为hash哈希算法,例如,维表为order(订单),主键为 O_PK订单列,外键为C_PK顾客列,可以按照C_PK将维表进行分区, 由于预设C_PK是按照其对应值分配到不同节点的,因此可以获取分 区后各个节点对应的维表的数据。

102、设备根据维表的分区特征并按照预设算法建立分区映射表。

具体的,在将维表进行数据分区后,可以根据分区后各个节点 对应的维表和事实表的连接键(O_PK),与待建立的分区映射表的纵 坐标的预设数量N,按照预设算法获取余数;从而根据余数建立分区 映射表,其中,该分区映射表为比特向量表(bitmap),该bitmap 表的横坐标表示各个节点的标识符,纵坐标表示连接键与预设数量进 行预设算法后的余数。

示例性的,该预设算法可以为取模算法O_PK%N、模P加法 (O_PK+P)%N、模P减法(O_PK-P)%N、模P乘法(O_PK*P)%N中 的其中一个。需要说明的是这里的预设数量小于维表的维表记录数。

103、设备将维表对应的事实表按照分区映射表进行分区,并按 照分区映射表备份事实表中的数据。

具体的,根据事实表的连接键与预设数量按照预设算法获取的余 数确定分区映射表的纵坐标,选取纵坐标对应比特值为1的节点为连 接键对应的事实表数据的分区节点,进而将事实表的数据按照确定的 分区节点进行分区,其中,当根据连接键获取的纵坐标对应的比特值 为1有至少两个节点时,需要将连接键对应的事实表数据同时分布在 上述确定的至少两个节点上。

这样,由于bitmap表的纵坐标数量小于维表记录数,会存在至 少一个同一纵坐标下的至少两个节点的比特值都为1,使得将事实表 按照分区映射表的指示进行分区时,会出现分区冲突,从而可以产生 冗余记录,用于备份,这样能够减少数据查询过程中的网络带宽,同 时创造备份数据。

本发明实施例提供一种数据分区方法,通过将分布式数据库中的 维表进行数据分区,根据维表的分区特征并按照预设算法建立分区映 射表,将维表对应的事实表按照分区映射表进行分区,并按照分区映 射表备份事实表中的数据,这样在分区的时候,可以通过预设的算法 使得分区时记录出现冲突,利用冲突造成冗余记录,用于数据备份, 能够减少数据查询过程中的网络带宽,同时创造备份数据。

实施例二

本发明实施例提供一种数据分区方法,如图2所示,包括:

201、设备将分布式数据库中的维表进行数据分区。

其中,这里的设备可以为计算机,应用于分布式mpp数据库,解 决的是数据分布的问题。Mpp架构能够把我数据分布到多个节点上, 由多个节点并行处理,可以提高数据处理速度。

当两表之间有join连接查询操作时,可以先将维表按照通用算 法进行数据分区,这里的通用算法可以为hash哈希算法,维表是用 于存储事实表中对象的数据的属性的。

举例来说,可以是采用通用de基准测试组织半部的测试标准

benchmarkTPC-H(TransactionProcessingPerformance Council-H)所介绍的数据schema(架构)进行数据分区,如表1所 示为benchmarkTPC-H的schema数据分区。

表1benchmarkTPC-H的schema数据分区

可以理解到,customer1代表分配到节点1,customer2代表分 配到节点2,customer3代表分配到节点3。

因此,假设维表为Order1表格所示,可以根据上述哈希算法将 order1分区为Order1、Order2以及Order3,如表2所示,为Order 表的数据分区。

表2order的数据分区

可以知道,Order1是分区到节点1上的维表,Order2是分区到 节点2上的维表,Order3是分区到节点3上的维表。

202、设备根据分区后各个节点对应的维表和事实表的连接键, 与待建立的分区映射表的纵坐标的预设数量,按照预设算法获取余 数。

示例性的,这里的预设算法可以为取模算法、模P加法、模P 减法和模P乘法中的其中一个。这里的维表和事实表的连接键为 O_PK,假设待建立的分区映射表的纵坐标的预设数量为N,预设算法 为取模算法时,其余数可以表示为O_PK%N;模P加法可以表示为 (O_PK+p)%N;模P减法可以表示为(O_PK-p)%N;模P乘法可以表 示为(O_PK*p)%N。例如按照步骤201中的分区表,当O_PK为1,N 取值为4时,通过模p加法,取p为1时,(1+1)%4的余数为2。

需要说明的是,这里的预设数量N要小于分区前的维表的维表记 录数。步骤201中分区前的Order表的维表记录数为5,所以的取值 为小于5的值。

其中,这里的连接键O_PK在维表中可以为主键,在事实表中为 外键。

203、设备根据余数建立分区映射表,分区映射表为比特向量表。

其中,这里的分区映射表可以为比特向量(bitmap)表,也就是 通过bitmap算法建立分区映射表,这里bitmap表的横坐标表示各个 节点的标识符,纵坐标表示连接键与预设数量进行预设算法后的余 数。

示例性的,按照表2中分区后的Order1、Order2以及Order3 可以按照预设算法(模P加法,P=1,取N=4)计算余数得到的bitmap 表如表3所示。

表3bitmap表

B1 B2 B3 0 0 1 1 0 0 1 1 0 0 1 0

其中,在表3中从上往下的纵坐标依次为0,1,2,3。

可以理解的是,上述bitmap表的建立过程中,针对节点B1对应 的bit值,是通过Order1表格中的O_PK的值获得的,具体的,当 O_PK的值为1时,(1+1)%4的值为2,所以在表3中纵坐标为2横 坐标为B1的比特值为1;当O_PK的值为4时,(4+1)%4的值为1, 所以在表3中纵坐标为1横坐标的B1的比特值为1。

同理,对于节点B2和节点B3也同理可得。

204、设备根据事实表中连接键与预设数量按照预设算法获取的 余数确定分区映射表的纵坐标,选取纵坐标对应比特值为1的节点为 连接键对应的事实表数据的分区节点。

示例性的,假设上述Order表对应的事实表(Lineitem)如表4 所示。

表4Lineitem表

O_PK partkey 1 1 1 2 2 3 2 4 3 1 3 8 4 5 4 6 5 4

当O_PK为1时,假如按照上述模P加法得到(1+1)%4=2,在 bitmap表中纵坐标为2时,比特值为1的节点有B1和B2,也就是说 事实表中连接键O_PK为1时对应的事实表数据的分区节点为B1和 B2;当O_PK为3时,通过模P加法得到(3+1)%4=0,在bitmap表 中纵坐标为0时,比特值为1的节点为B3,也就是说事实表也就是 Lineitem表中O_PK为3时对应的事实表数据的分区节点为B3。同理, 可以将Lineitem表按照bitmap表的指示获取其分区节点。

205、设备将事实表的数据按照确定的分区节点进行分区,其中, 将连接键集合所对应的事实表数据同时分布在至少两个节点上。

具体的,通过步骤204中的说明,可以将Lineitem表中的数据 进行如下分区,如表5所示。

表5

由步骤204可知,bitmap表的第三行余数为2时的事实表中的 O_PK的值有1和5,因此Lineitem表中的数据{1,1}{1,2}{5,4} 是同时分布在B1与B2节点上的,这样,可以在将事实表分区时,进 行数据备份。

这是由于,当上述过程中根据维表建立bitmap表时,采用了类 压缩的算法,当N的取值小于维表记录数时,就会在建立bitmap表 时就会产生冗余现象,使得同一纵坐标对应的比特值为1的节点有多 个,从而在进行事实表数据分区时产生数据备份。

其中的冗余程度就和N的取值有关,当N取值为维表记录数的一 半时,则正好可以将事实表的数据备份一次。这样譬如在联机分析处 理OLAP的环境下,一般需求备份3份事实表数据时,N的取值可以 为维表记录数的三分之一。因此,本发明可以支持平滑动态调整冗余 度,来确定备份的次数。

这样,当各节点在进行结构化查询语言(StructuredQuery Language,SQL)时,各节点在同时处理join操作时就不需要进行网 络传输数据了。

例如通过实施例二中的维表和事实表的举例,对于B1节点来说, 分区后的B1节点的数据如表6所示。

表6

因此,在进行join操作时,就可以在B1节点本地进行数据的连 接查询,使得发生join操作后的数据结构可以如表7所示。

表7

C_PK O_PK partkey 1 1 1 1 1 2 1 4 5 1 4 5

这样,当发生重分区的时候,可以只分区需要join的列,通过 记录原来的位置从而和其它列联系起来,不分区其它无关的列,可以 减少网络传输,在保存时也就不用保存多余的列,可以节省存储空间, 同时可以进行数据备份。

在上述过程中,若在将事实表按照bitmap表进行分区时,出现 备份的事实表数据没有同时备份在至少两个节点上,则可以根据分区 映射表查找将事实表数据备份成功的节点,而后,根据备份成功的节 点中的事实表数据和bitmap表,获取丢失的备份事实表数据,以便 于从备份成功的节点获取丢失的备份事实表数据。

举例来说,在将事实表分区进行备份时,将数据{1,1}{1,2}{5, 4}成功备份在了B2节点上,而B1节点中分区时发生了记录丢失,由 于备份是由于bitmap表中纵坐标为2时B1节点和B2节点同时为1, 可以计算纵坐标为2时反推出O_PK的值为1和5,因此,需要将B2 节点中的{1,1}{1,2}{5,4}数据传送至B1节点。也就是说,从bitmap 表中可以很容易得知某行数据是否有备份数据及其备份数据的位置。

本发明实施例提供一种数据分区方法,设备将分布式数据库中的 维表进行数据分区,根据分区后各个节点对应的维表和事实表的连接 键,与待建立的分区映射表的纵坐标的预设数量,按照预设算法获取 余数,再根据余数建立分区映射表,分区映射表为比特向量表,进而 根据事实表中连接键与预设数量按照预设算法获取的余数确定分区 映射表的纵坐标,选取纵坐标对应比特值为1的节点为连接键对应的 事实表数据的分区节点,将事实表的数据按照确定的分区节点进行分 区,其中,将连接键集合所对应的事实表数据同时分布在至少两个节 点上,这样在分区的时候,可以通过预设的算法使得分区时记录出现 冲突,利用冲突造成冗余记录,用于数据备份,能够减少数据查询过 程中的网络带宽,同时创造备份数据。

本发明实施例提供一种设备01,如图3所示,包括:

第一分区单元011,用于将分布式数据库中的维表进行数据分 区。

建立单元012,用于根据维表的分区特征并按照预设算法建立分 区映射表。

第二分区单元013,用于将维表对应的事实表按照分区映射表进 行分区;以及

备份单元014,用于按照分区映射表备份事实表中的数据。

可选的,第一分区单元011可以具体用于:

按照哈希算法,将分布式数据库中的维表进行数据分区,以获取 分区后各个节点对应的维表的数据。

可选的,建立单元012可以具体用于:

根据分区后各个节点对应的维表和事实表的连接键,与待建立的 分区映射表的纵坐标的预设数量,按照预设算法获取余数;

根据余数建立分区映射表,分区映射表为比特向量表,比特向量 表的横坐标表示各个节点的标识符,纵坐标表示连接键与预设数量进 行预设算法后的余数;

其中,预设运算为取模运算、模P加法、模P减法和模P乘法中 的其中一个,预设数量小于维表的维表记录数。

可选的,第二分区单元013和备份单元014可以具体用于:

根据事实表中连接键与预设数量按照预设算法获取的余数确定 分区映射表的纵坐标,选取纵坐标对应比特值为1的节点为连接键对 应的事实表数据的分区节点;

将事实表的数据按照确定的分区节点进行分区,其中,当根据连 接键获取的纵坐标对应的比特值为1有至少两个节点时,将连接键对 应的事实表数据同时分布在至少两个节点上。

可选的,还可以包括:

查找单元015,用于若在将事实表按照分区映射表进行分区时, 出现备份的事实表数据没有同时备份在至少两个节点上,则根据分区 映射表查找将事实表数据备份成功的节点;

获取单元016,用于根据备份成功的节点中的事实表数据和分区 映射表,获取丢失的备份事实表数据,以便于从备份成功的节点获取 丢失的备份事实表数据。

本发明实施例提供设备,通过将分布式数据库中的维表进行数据 分区,根据维表的分区特征并按照预设算法建立分区映射表,将维表 对应的事实表按照分区映射表进行分区,并按照分区映射表备份事实 表中的数据,这样在分区的时候,可以通过预设的算法使得分区时记 录出现冲突,利用冲突造成冗余记录,用于数据备份,能够减少数据 查询过程中的网络带宽,同时创造备份数据。

本发明实施例提供一种设备02,如图4所示,该设备02包括: 总线021、处理器022、发射器023、接收器024以及存储器025,其 中,该存储器025用于存储指令和数据,处理器022执行该指令用于 将分布式数据库中的维表进行数据分区;处理器022执行该指令还用 于根据维表的分区特征并按照预设算法建立分区映射表;处理器022 执行该指令还用于将维表对应的事实表按照分区映射表进行分区,并 按照分区映射表备份事实表中的数据。

在本发明实施例中,可选的,处理器022执行该指令可以具体用 于:

按照哈希算法,将分布式数据库中的维表进行数据分区,以获取 分区后各个节点对应的维表的数据。

在本发明实施例中,可选的,处理器022执行该指令可以具体用 于:

根据分区后各个节点对应的维表和事实表的连接键,与待建立的 分区映射表的纵坐标的预设数量,按照预设算法获取余数;

根据余数建立分区映射表,分区映射表为比特向量表,比特向量 表的横坐标表示各个节点的标识符,纵坐标表示连接键与预设数量进 行预设算法后的余数;

其中,预设运算为取模运算、模P加法、模P减法和模P乘法中 的其中一个,预设数量小于维表的维表记录数。

在本发明实施例中,可选的,处理器022执行该指令可以具体用 于:

根据事实表中连接键与预设数量按照预设算法获取的余数确定 分区映射表的纵坐标,选取纵坐标对应比特值为1的节点为连接键对 应的事实表数据的分区节点;

将事实表的数据按照确定的分区节点进行分区,其中,当根据连 接键获取的纵坐标对应的比特值为1有至少两个节点时,将连接键对 应的事实表数据同时分布在至少两个节点上。

在本发明实施例中,可选的,处理器022执行该指令还可以具体 用于:

若在将事实表按照分区映射表进行分区时,出现备份的事实表数 据没有同时备份在至少两个节点上,则根据分区映射表查找将事实表 数据备份成功的节点;

根据备份成功的节点中的事实表数据和分区映射表,获取丢失的 备份事实表数据,以便于从备份成功的节点获取丢失的备份事实表数 据。

本发明实施例提供设备,通过将分布式数据库中的维表进行数据 分区,根据维表的分区特征并按照预设算法建立分区映射表,将维表 对应的事实表按照分区映射表进行分区,并按照分区映射表备份事实 表中的数据,这样在分区的时候,可以通过预设的算法使得分区时记 录出现冲突,利用冲突造成冗余记录,用于数据备份,能够减少数据 查询过程中的网络带宽,同时创造备份数据。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和 方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅 仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分, 实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或 者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点, 所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过 一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或 其它的形式。

另外,在本发明各个实施例中的设备和系统中,各功能单元可以 集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两 个或两个以上单元集成在一个单元中。且上述的各单元既可以采用硬 件的形式实现,也可以采用硬件加软件功能单元的形式实现。

实现上述方法实施例的全部或部分步骤可以通过程序指令相关 的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中, 该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介 质包括:U盘、移动硬盘、只读存储器(ReadOnlyMemory,简称ROM)、 随机存取存储器(RandomAccessMemory,简称RAM)、磁碟或者光 盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并 不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范 围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。 因此,本发明的保护范围应所述以权利要求的保护范围为准。

一种数据分区方法和设备.pdf_第1页
第1页 / 共18页
一种数据分区方法和设备.pdf_第2页
第2页 / 共18页
一种数据分区方法和设备.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《一种数据分区方法和设备.pdf》由会员分享,可在线阅读,更多相关《一种数据分区方法和设备.pdf(18页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 (43)申请公布日 (21)申请号 201480000188.8 (22)申请日 2014.03.05 A99Z 99/00(2006.01) (71)申请人 华为技术有限公司 地址 518129 广东省深圳市龙岗区坂田华为 总部办公楼 (72)发明人 时家幸 黄乐 王玉虎 (74)专利代理机构 北京中博世达专利商标代理 有限公司 11274 代理人 申健 (54) 发明名称 一种数据分区方法和设备 (57) 摘要 本发明实施例提供一种数据分区方法和设 备, 涉及数据库领域, 能够消除远程 join 操作, 减 少数据查询过程中的网络带宽, 同时创造备份数 据。其方法为 :。

2、 通过将分布式数据库中的维表进 行数据分区, 根据所述维表的分区特征并按照预 设算法建立分区映射表, 将所述维表对应的事实 表按照所述分区映射表进行分区, 并按照所述分 区映射表备份所述事实表中的数据, 这样在分区 的时候, 通过预设的算法使得分区时记录出现冲 突, 利用冲突造成冗余记录, 用于数据备份。本发 明实施例用于分布式数据库的数据分区。 (85)PCT国际申请进入国家阶段日 2014.05.19 (86)PCT国际申请的申请数据 PCT/CN2014/072937 2014.03.05 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页。

3、 说明书12页 附图2页 CN 105517644 A 2016.04.20 CN 105517644 A 1/3 页 2 1.一种数据分区方法, 其特征在于, 包括 : 将分布式数据库中的维表进行数据分区 ; 根据所述维表的分区特征并按照预设算法建立分区映射表 ; 将所述维表对应的事实表按照所述分区映射表进行分区, 并按照所述分区映射表备份 所述事实表中的数据。 2.根据权利要求 1 所述的方法, 其特征在于, 所述将分布式数据库中的维表进行数据 分区包括 : 按照哈希算法, 将所述分布式数据库中的维表进行数据分区, 以获取分区后各个节点 对应的维表的数据。 3.根据权利要求 2 所述的方法。

4、, 其特征在于, 所述根据所述维表的分区特征并按照预 设算法建立分区映射表包括 : 根据所述分区后各个节点对应的维表和所述事实表的连接键, 与待建立的分区映射表 的纵坐标的预设数量, 按照预设算法获取余数 ; 根据所述余数建立所述分区映射表, 所述分区映射表为比特向量表, 所述比特向量表 的横坐标表示各个节点的标识符, 纵坐标表示所述连接键与所述预设数量进行预设算法后 的余数 ; 其中, 所述预设运算为取模运算、 模 P 加法、 模 P 减法和模 P 乘法中的其中一个, 所述预 设数量小于所述维表的维表记录数。 4.根据权利要求 3 所述的方法, 其特征在于, 所述将所述维表对应的事实表按照所。

5、述 分区映射表进行分区, 并按照所述分区映射表备份所述事实表中的数据包括 : 根据所述事实表中所述连接键与所述预设数量按照所述预设算法获取的余数确定所 述分区映射表的纵坐标, 选取所述纵坐标对应比特值为 1 的节点为所述连接键对应的事实 表数据的分区节点 ; 将所述事实表的数据按照确定的分区节点进行分区, 其中, 当根据所述连接键获取的 所述纵坐标对应的比特值为 1 有至少两个节点时, 将所述连接键对应的事实表数据同时分 布在所述至少两个节点上。 5.根据权利要求 4 所述的方法, 其特征在于, 所述方法还包括 : 若在将所述事实表按照所述分区映射表进行分区时, 出现备份的事实表数据没有同时 。

6、备份在所述至少两个节点上, 则根据所述分区映射表查找将所述事实表数据备份成功的节 点 ; 根据所述备份成功的节点中的事实表数据和所述分区映射表, 获取丢失的备份事实表 数据, 以便于从所述备份成功的节点获取所述丢失的备份事实表数据。 6.一种设备, 其特征在于, 包括 : 第一分区单元, 用于将分布式数据库中的维表进行数据分区 ; 建立单元, 用于根据所述维表的分区特征并按照预设算法建立分区映射表 ; 第二分区单元, 用于将所述维表对应的事实表按照所述分区映射表进行分区 ; 以及 备份单元, 用于按照所述分区映射表备份所述事实表中的数据。 7.根据权利要求 6 所述的设备, 其特征在于, 所述。

7、第一分区单元具体用于 : 按照哈希算法, 将所述分布式数据库中的维表进行数据分区, 以获取分区后各个节点 权 利 要 求 书 CN 105517644 A 2 2/3 页 3 对应的维表的数据。 8.根据权利要求 7 所述的设备, 其特征在于, 所述建立单元具体用于 : 根据所述分区后各个节点对应的维表和所述事实表的连接键, 与待建立的分区映射表 的纵坐标的预设数量, 按照预设算法获取余数 ; 根据所述余数建立所述分区映射表, 所述分区映射表为比特向量表, 所述比特向量表 的横坐标表示各个节点的标识符, 纵坐标表示所述连接键与所述预设数量进行预设算法后 的余数 ; 其中, 所述预设运算为取模运。

8、算、 模 P 加法、 模 P 减法和模 P 乘法中的其中一个, 所述预 设数量小于所述维表的维表记录数。 9.根据权利要求 8 所述的设备, 其特征在于, 所述第二分区单元和所述备份单元具体 用于 : 根据所述事实表中所述连接键与所述预设数量按照所述预设算法获取的余数确定所 述分区映射表的纵坐标, 选取所述纵坐标对应比特值为 1 的节点为所述连接键对应的事实 表数据的分区节点 ; 将所述事实表的数据按照确定的分区节点进行分区, 其中, 当根据所述连接键获取的 所述纵坐标对应的比特值为 1 有至少两个节点时, 将所述连接键对应的事实表数据同时分 布在所述至少两个节点上。 10.根据权利要求 9 。

9、所述的设备, 其特征在于, 还包括 : 查找单元, 用于若在将所述事实表按照所述分区映射表进行分区时, 出现备份的事实 表数据没有同时备份在所述至少两个节点上, 则根据所述分区映射表查找将所述事实表数 据备份成功的节点 ; 获取单元, 用于根据所述备份成功的节点中的事实表数据和所述分区映射表, 获取丢 失的备份事实表数据, 以便于从所述备份成功的节点获取所述丢失的备份事实表数据。 11.一种设备, 其特征在于, 包括 : 处理器, 用于将分布式数据库中的维表进行数据分区 ; 所述处理器, 还用于根据所述维表的分区特征并按照预设算法建立分区映射表 ; 所述处理器, 还用于将所述维表对应的事实表按。

10、照所述分区映射表进行分区, 并按照 所述分区映射表备份所述事实表中的数据。 12.根据权利要求 11 所述的设备, 其特征在于, 所述处理器具体用于 : 按照哈希算法, 将所述分布式数据库中的维表进行数据分区, 以获取分区后各个节点 对应的维表的数据。 13.根据权利要求 12 所述的设备, 其特征在于, 所述处理器具体用于 : 根据所述分区后各个节点对应的维表和所述事实表的连接键, 与待建立的分区映射表 的纵坐标的预设数量, 按照预设算法获取余数 ; 根据所述余数建立所述分区映射表, 所述分区映射表为比特向量表, 所述比特向量表 的横坐标表示各个节点的标识符, 纵坐标表示所述连接键与所述预设。

11、数量进行预设算法后 的余数 ; 其中, 所述预设运算为取模运算、 模 P 加法、 模 P 减法和模 P 乘法中的其中一个, 所述预 设数量小于所述维表的维表记录数。 权 利 要 求 书 CN 105517644 A 3 3/3 页 4 14.根据权利要求 13 所述的设备, 其特征在于, 所述处理器具体用于 : 根据所述事实表中所述连接键与所述预设数量按照所述预设算法获取的余数确定所 述分区映射表的纵坐标, 选取所述纵坐标对应比特值为 1 的节点为所述连接键对应的事实 表数据的分区节点 ; 将所述事实表的数据按照确定的分区节点进行分区, 其中, 当根据所述连接键获取的 所述纵坐标对应的比特值为。

12、 1 有至少两个节点时, 将所述连接键对应的事实表数据同时分 布在所述至少两个节点上。 15.根据权利要求 14 所述的设备, 其特征在于, 所述处理器还用于 : 若在将所述事实表按照所述分区映射表进行分区时, 出现备份的事实表数据没有同时 备份在所述至少两个节点上, 则根据所述分区映射表查找将所述事实表数据备份成功的节 点 ; 根据所述备份成功的节点中的事实表数据和所述分区映射表, 获取丢失的备份事实表 数据, 以便于从所述备份成功的节点获取所述丢失的备份事实表数据。 权 利 要 求 书 CN 105517644 A 4 1/12 页 5 一种数据分区方法和设备 技术领域 0001 本发明涉。

13、及数据库领域, 尤其涉及一种数据分区方法和设备。 背景技术 0002 在联机分析处理 (Online Analytical Processing, OLAP) 这种分析性数据库 中, 处理的数据量都比较大, 单机的性能已经不能满足需要, 大规模并行处理 (Massive parallel processing, MPP) 架构可以将数据分布到多个节点上, 由多个节点并行处理, 从 而提高处理速度。为了使每个节点都并行处理一定量的数据, 一般情况下需要将表水平分 割, 放到不同的节点上。但是如果没有考虑到表之间的关系, 当两表之间有 join( 连接查 询 ) 操作时, 会产生大量的网络传输, 。

14、join 操作效率低下。 0003 Oracle 提出引用分区 (Reference Partitioning) 方案, 可以根据数据表之间的 关系, 由根数据表开始进行分区, 先在根数据表指定一列作为分区列, 在分区该表的同时分 区子表中的相关数据, 从而使相关的数据放在同一节点上, 使 join 过程可以本地完成, 但 是该方案只适用于数据关系存在层次结构的, 而数据分配随着层次结构的加深, 复杂度不 断加大。 0004 当每个数据表各自指定一列作为分区列, 每个数据表单独区分, 但是分区函数相 同, 如果两表选择的分区列刚好是需要join的列, 则这两个表的join操作刚好可以本地完 成。

15、, 如果需要 join 的列不是用于区分的列, 则将这个需要 join 的列再进行一次重新分区, join 操作便用重新分区的表进行操作, 从而使 join 操作本地化, 但是这样一来导致数据传 输量大, 浪费网络和存储空间。 发明内容 0005 本发明提供一种数据分区方法和设备, 能够消除远程 join 操作, 减少数据查询过 程中的网络带宽, 同时创造备份数据。 0006 第一方面, 提供一种数据分区方法, 包括 : 0007 将分布式数据库中的维表进行数据分区 ; 0008 根据所述维表的分区特征并按照预设算法建立分区映射表 ; 0009 将所述维表对应的事实表按照所述分区映射表进行分区。

16、, 并按照所述分区映射表 备份所述事实表中的数据。 0010 结合第一方面, 在第一种可能实现的方式中, 所述将分布式数据库中的维表进行 数据分区包括 : 0011 按照哈希算法, 将所述分布式数据库中的维表进行数据分区, 以获取分区后各个 节点对应的维表的数据。 0012 结合第一方面的第一种可能实现的方式, 在第二种可能实现的方式中, 所述根据 所述维表的分区特征并按照预设算法建立分区映射表包括 : 0013 根据所述分区后各个节点对应的维表和所述事实表的连接键, 与待建立的分区映 说 明 书 CN 105517644 A 5 2/12 页 6 射表的纵坐标的预设数量, 按照预设算法获取余。

17、数 ; 0014 根据所述余数建立所述分区映射表, 所述分区映射表为比特向量表, 所述比特向 量表的横坐标表示各个节点的标识符, 纵坐标表示所述连接键与所述预设数量进行预设算 法后的余数 ; 0015 其中, 所述预设运算为取模运算、 模 P 加法、 模 P 减法和模 P 乘法中的其中一个, 所 述预设数量小于所述维表的维表记录数。 0016 结合第一方面的第二种可能实现的方式, 在第三种可能实现的方式中, 所述将所 述维表对应的事实表按照所述分区映射表进行分区, 并按照所述分区映射表备份所述事实 表中的数据包括 : 0017 根据所述事实表中所述连接键与所述预设数量按照所述预设算法获取的余数。

18、确 定所述分区映射表的纵坐标, 选取所述纵坐标对应比特值为 1 的节点为所述连接键对应的 事实表数据的分区节点 ; 0018 将所述事实表的数据按照确定的分区节点进行分区, 其中, 当根据所述连接键获 取的所述纵坐标对应的比特值为 1 有至少两个节点时, 将所述连接键对应的事实表数据同 时分布在所述至少两个节点上。 0019 结合第一方面的第三种可能实现的方式, 在第四种可能实现的方式中, 所述方法 还包括 : 0020 若在将所述事实表按照所述分区映射表进行分区时, 出现备份的事实表数据没有 同时备份在所述至少两个节点上, 则根据所述分区映射表查找将所述事实表数据备份成功 的节点 ; 002。

19、1 根据所述备份成功的节点中的事实表数据和所述分区映射表, 获取丢失的备份事 实表数据, 以便于从所述备份成功的节点获取所述丢失的备份事实表数据。 0022 第二方面, 提供一种设备, 包括 : 0023 第一分区单元, 用于将分布式数据库中的维表进行数据分区 ; 0024 建立单元, 用于根据所述维表的分区特征并按照预设算法建立分区映射表 ; 0025 第二分区单元, 用于将所述维表对应的事实表按照所述分区映射表进行分区 ; 以 及 0026 备份单元, 用于按照所述分区映射表备份所述事实表中的数据。 0027 结合第二方面, 在第二方面的第一种可能实现的方式中, 所述第一分区单元具体 用于。

20、 : 0028 按照哈希算法, 将所述分布式数据库中的维表进行数据分区, 以获取分区后各个 节点对应的维表的数据。 0029 结合第二方面的第一种可能实现的方式, 在第二方面的第二种可能实现的方式 中, 所述建立单元具体用于 : 0030 根据所述分区后各个节点对应的维表和所述事实表的连接键, 与待建立的分区映 射表的纵坐标的预设数量, 按照预设算法获取余数 ; 0031 根据所述余数建立所述分区映射表, 所述分区映射表为比特向量表, 所述比特向 量表的横坐标表示各个节点的标识符, 纵坐标表示所述连接键与所述预设数量进行预设算 法后的余数 ; 说 明 书 CN 105517644 A 6 3/。

21、12 页 7 0032 其中, 所述预设运算为取模运算、 模 P 加法、 模 P 减法和模 P 乘法中的其中一个, 所 述预设数量小于所述维表的维表记录数。 0033 结合第二方面的第二种可能实现的方式, 在第二方面的第三种可能实现的方式 中, 所述第二分区单元和所述备份单元具体用于 : 0034 根据所述事实表中所述连接键与所述预设数量按照所述预设算法获取的余数确 定所述分区映射表的纵坐标, 选取所述纵坐标对应比特值为 1 的节点为所述连接键对应的 事实表数据的分区节点 ; 0035 将所述事实表的数据按照确定的分区节点进行分区, 其中, 当根据所述连接键获 取的所述纵坐标对应的比特值为 1。

22、 有至少两个节点时, 将所述连接键对应的事实表数据同 时分布在所述至少两个节点上。 0036 结合第二方面的第三种可能实现的方式, 在第二方面的第四种可能实现的方式 中, 还包括 : 0037 查找单元, 用于若在将所述事实表按照所述分区映射表进行分区时, 出现备份的 事实表数据没有同时备份在所述至少两个节点上, 则根据所述分区映射表查找将所述事实 表数据备份成功的节点 ; 0038 获取单元, 用于根据所述备份成功的节点中的事实表数据和所述分区映射表, 获 取丢失的备份事实表数据, 以便于从所述备份成功的节点获取所述丢失的备份事实表数 据。 0039 第三方面, 提供一种设备, 包括 : 0。

23、040 处理器, 用于将分布式数据库中的维表进行数据分区 ; 0041 所述处理器, 还用于根据所述维表的分区特征并按照预设算法建立分区映射表 ; 0042 所述处理器, 还用于将所述维表对应的事实表按照所述分区映射表进行分区, 并 按照所述分区映射表备份所述事实表中的数据。 0043 结合第三方面, 在第一种可能实现的方式中, 所述处理器具体用于 : 0044 按照哈希算法, 将所述分布式数据库中的维表进行数据分区, 以获取分区后各个 节点对应的维表的数据。 0045 结合第三方面的第一种可能实现的方式, 在第二种可能实现的方式中, 所述处理 器具体用于 : 0046 根据所述分区后各个节点。

24、对应的维表和所述事实表的连接键, 与待建立的分区映 射表的纵坐标的预设数量, 按照预设算法获取余数 ; 0047 根据所述余数建立所述分区映射表, 所述分区映射表为比特向量表, 所述比特向 量表的横坐标表示各个节点的标识符, 纵坐标表示所述连接键与所述预设数量进行预设算 法后的余数 ; 0048 其中, 所述预设运算为取模运算、 模 P 加法、 模 P 减法和模 P 乘法中的其中一个, 所 述预设数量小于所述维表的维表记录数。 0049 结合第三方面的第二种可能实现的方式, 在第三种可能实现的方式中, 所述处理 器具体用于 : 0050 根据所述事实表中所述连接键与所述预设数量按照所述预设算法。

25、获取的余数确 定所述分区映射表的纵坐标, 选取所述纵坐标对应比特值为 1 的节点为所述连接键对应的 说 明 书 CN 105517644 A 7 4/12 页 8 事实表数据的分区节点 ; 0051 将所述事实表的数据按照确定的分区节点进行分区, 其中, 当根据所述连接键获 取的所述纵坐标对应的比特值为 1 有至少两个节点时, 将所述连接键对应的事实表数据同 时分布在所述至少两个节点上。 0052 结合第三方面的第三种可能实现的方式, 在第四种可能实现的方式中, 所述处理 器还用于 : 0053 若在将所述事实表按照所述分区映射表进行分区时, 出现备份的事实表数据没有 同时备份在所述至少两个节。

26、点上, 则根据所述分区映射表查找将所述事实表数据备份成功 的节点 ; 0054 根据所述备份成功的节点中的事实表数据和所述分区映射表, 获取丢失的备份事 实表数据, 以便于从所述备份成功的节点获取所述丢失的备份事实表数据。 0055 本发明实施例提供一种数据分区方法和设备, 通过将分布式数据库中的维表进行 数据分区, 根据所述维表的分区特征并按照预设算法建立分区映射表, 将所述维表对应的 事实表按照所述分区映射表进行分区, 并按照所述分区映射表备份所述事实表中的数据, 这样在分区的时候, 可以通过预设的算法使得分区时记录出现冲突, 利用冲突造成冗余记 录, 用于数据备份, 能够减少数据查询过程。

27、中的网络带宽, 同时创造备份数据。 附图说明 0056 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本 发明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以 根据这些附图获得其他的附图。 0057 图 1 为本发明实施例提供的一种数据分区方法流程示意图 ; 0058 图 2 为本发明又一实施例提供的一种数据分区方法流程示意图 ; 0059 图 3 为本发明又一实施例提供的一种设备结构图 ; 0060 图 4 为本发明又一实施例提供的一种设备结构图。 具。

28、体实施方式 0061 下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于 本发明中的实施例, 本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例, 都属于本发明保护的范围。 0062 实施例一 0063 本发明实施例提供一种数据分区方法, 如图 1 所示, 包括 : 0064 101、 设备将分布式数据库中的维表进行数据分区。 0065 其 中, 这 里 的 设 备 可 以 为 计 算 机, 有 自 身 的 磁 盘, 中 央 处 理 器 (Central Proce。

29、ssing Unit, CPU)。 本发明实施例的应用场景可以是分布式大规模并行处理(Massive parallel processing, mpp) 数据库中的数据分布问题。 0066 具体的, 在分布式 mpp 数据库中, 当有 join( 连接查询 ) 关系的 2 个表中, 可以先 说 明 书 CN 105517644 A 8 5/12 页 9 将维表按照通用算法进行数据分区, 这里的通用算法可以为 hash 哈希算法, 例如, 维表为 order( 订单 ), 主键为 O_PK 订单列, 外键为 C_PK 顾客列, 可以按照 C_PK 将维表进行分区, 由于预设 C_PK 是按照其对。

30、应值分配到不同节点的, 因此可以获取分区后各个节点对应的 维表的数据。 0067 102、 设备根据维表的分区特征并按照预设算法建立分区映射表。 0068 具体的, 在将维表进行数据分区后, 可以根据分区后各个节点对应的维表和事实 表的连接键 (O_PK), 与待建立的分区映射表的纵坐标的预设数量 N, 按照预设算法获取余 数 ; 从而根据余数建立分区映射表, 其中, 该分区映射表为比特向量表 (bitmap), 该 bitmap 表的横坐标表示各个节点的标识符, 纵坐标表示连接键与预设数量进行预设算法后的余 数。 0069 示例性的, 该预设算法可以为取模算法 O_PK N、 模 P 加法 。

31、(O_PK+P) N、 模 P 减 法 (O_PK-P) N、 模 P 乘法 (O_PK*P) N 中的其中一个。需要说明的是这里的预设数量小 于维表的维表记录数。 0070 103、 设备将维表对应的事实表按照分区映射表进行分区, 并按照分区映射表备份 事实表中的数据。 0071 具体的, 根据事实表的连接键与预设数量按照预设算法获取的余数确定分区映射 表的纵坐标, 选取纵坐标对应比特值为 1 的节点为连接键对应的事实表数据的分区节点, 进而将事实表的数据按照确定的分区节点进行分区, 其中, 当根据连接键获取的纵坐标对 应的比特值为 1 有至少两个节点时, 需要将连接键对应的事实表数据同时分。

32、布在上述确定 的至少两个节点上。 0072 这样, 由于 bitmap 表的纵坐标数量小于维表记录数, 会存在至少一个同一纵坐标 下的至少两个节点的比特值都为 1, 使得将事实表按照分区映射表的指示进行分区时, 会 出现分区冲突, 从而可以产生冗余记录, 用于备份, 这样能够减少数据查询过程中的网络带 宽, 同时创造备份数据。 0073 本发明实施例提供一种数据分区方法, 通过将分布式数据库中的维表进行数据分 区, 根据维表的分区特征并按照预设算法建立分区映射表, 将维表对应的事实表按照分区 映射表进行分区, 并按照分区映射表备份事实表中的数据, 这样在分区的时候, 可以通过预 设的算法使得分。

33、区时记录出现冲突, 利用冲突造成冗余记录, 用于数据备份, 能够减少数据 查询过程中的网络带宽, 同时创造备份数据。 0074 实施例二 0075 本发明实施例提供一种数据分区方法, 如图 2 所示, 包括 : 0076 201、 设备将分布式数据库中的维表进行数据分区。 0077 其中, 这里的设备可以为计算机, 应用于分布式 mpp 数据库, 解决的是数据分布的 问题。Mpp 架构能够把我数据分布到多个节点上, 由多个节点并行处理, 可以提高数据处理 速度。 0078 当两表之间有 join 连接查询操作时, 可以先将维表按照通用算法进行数据分区, 这里的通用算法可以为 hash 哈希算法。

34、, 维表是用于存储事实表中对象的数据的属性的。 0079 举例来说, 可以是采用通用 de 基准测试组织半部的测试标准 0080 benchmark TPC-H(Transaction Processing Performance Council-H) 所介绍的 说 明 书 CN 105517644 A 9 6/12 页 10 数据 schema( 架构 ) 进行数据分区, 如表 1 所示为 benchmark TPC-H 的 schema 数据分区。 0081 表 1benchmark TPC-H 的 schema 数据分区 0082 0083 可以理解到, customer1 代表分配到节。

35、点 1, customer2 代表分配到节点 2, customer3 代表分配到节点 3。 0084 因此, 假设维表为 Order1 表格所示, 可以根据上述哈希算法将 order1 分区为 Order1、 Order2 以及 Order3, 如表 2 所示, 为 Order 表的数据分区。 0085 表 2order 的数据分区 0086 0087 可以知道, Order1 是分区到节点 1 上的维表, Order2 是分区到节点 2 上的维表, Order3 是分区到节点 3 上的维表。 0088 202、 设备根据分区后各个节点对应的维表和事实表的连接键, 与待建立的分区映 射表的纵。

36、坐标的预设数量, 按照预设算法获取余数。 0089 示例性的, 这里的预设算法可以为取模算法、 模 P 加法、 模 P 减法和模 P 乘法中的 其中一个。这里的维表和事实表的连接键为 O_PK, 假设待建立的分区映射表的纵坐标的预 设数量为N, 预设算法为取模算法时, 其余数可以表示为O_PKN ; 模P加法可以表示为(O_ PK+p) N ; 模 P 减法可以表示为 (O_PK-p) N ; 模 P 乘法可以表示为 (O_PK*p) N。例如 按照步骤 201 中的分区表, 当 O_PK 为 1, N 取值为 4 时, 通过模 p 加法, 取 p 为 1 时, (1+1) 4 的余数为 2。。

37、 说 明 书 CN 105517644 A 10 7/12 页 11 0090 需要说明的是, 这里的预设数量 N 要小于分区前的维表的维表记录数。步骤 201 中分区前的 Order 表的维表记录数为 5, 所以的取值为小于 5 的值。 0091 其中, 这里的连接键 O_PK 在维表中可以为主键, 在事实表中为外键。 0092 203、 设备根据余数建立分区映射表, 分区映射表为比特向量表。 0093 其中, 这里的分区映射表可以为比特向量(bitmap)表, 也就是通过bitmap算法建 立分区映射表, 这里 bitmap 表的横坐标表示各个节点的标识符, 纵坐标表示连接键与预设 数量进。

38、行预设算法后的余数。 0094 示例性的, 按照表 2 中分区后的 Order1、 Order2 以及 Order3 可以按照预设算法 ( 模 P 加法, P 1, 取 N 4) 计算余数得到的 bitmap 表如表 3 所示。 0095 表 3bitmap 表 0096 B1 B2 B3 001 100 110 010 0097 其中, 在表 3 中从上往下的纵坐标依次为 0, 1, 2, 3。 0098 可以理解的是, 上述 bitmap 表的建立过程中, 针对节点 B1 对应的 bit 值, 是通过 Order1 表格中的 O_PK 的值获得的, 具体的, 当 O_PK 的值为 1 时,。

39、 (1+1) 4 的值为 2, 所以 在表 3 中纵坐标为 2 横坐标为 B1 的比特值为 1 ; 当 O_PK 的值为 4 时, (4+1) 4 的值为 1, 所以在表 3 中纵坐标为 1 横坐标的 B1 的比特值为 1。 0099 同理, 对于节点 B2 和节点 B3 也同理可得。 0100 204、 设备根据事实表中连接键与预设数量按照预设算法获取的余数确定分区映 射表的纵坐标, 选取纵坐标对应比特值为 1 的节点为连接键对应的事实表数据的分区节 点。 0101 示例性的, 假设上述 Order 表对应的事实表 (Lineitem) 如表 4 所示。 0102 表 4Lineitem 表。

40、 0103 O_PKpartkey 11 12 23 24 说 明 书 CN 105517644 A 11 8/12 页 12 31 38 45 46 54 0104 当O_PK为1时, 假如按照上述模P加法得到(1+1)42, 在bitmap表中纵坐标 为 2 时, 比特值为 1 的节点有 B1 和 B2, 也就是说事实表中连接键 O_PK 为 1 时对应的事实表 数据的分区节点为 B1 和 B2 ; 当 O_PK 为 3 时, 通过模 P 加法得到 (3+1) 4 0, 在 bitmap 表中纵坐标为0时, 比特值为1的节点为B3, 也就是说事实表也就是Lineitem表中O_PK为 3 。

41、时对应的事实表数据的分区节点为 B3。同理, 可以将 Lineitem 表按照 bitmap 表的指示 获取其分区节点。 0105 205、 设备将事实表的数据按照确定的分区节点进行分区, 其中, 将连接键集合所 对应的事实表数据同时分布在至少两个节点上。 0106 具体的, 通过步骤204中的说明, 可以将Lineitem表中的数据进行如下分区, 如表 5 所示。 0107 表 5 0108 0109 由步骤 204 可知, bitmap 表的第三行余数为 2 时的事实表中的 O_PK 的值有 1 和 5, 因此 Lineitem 表中的数据 1, 11, 25, 4 是同时分布在 B1 与。

42、 B2 节点上的, 这样, 可 以在将事实表分区时, 进行数据备份。 0110 这是由于, 当上述过程中根据维表建立bitmap表时, 采用了类压缩的算法, 当N的 取值小于维表记录数时, 就会在建立 bitmap 表时就会产生冗余现象, 使得同一纵坐标对应 的比特值为 1 的节点有多个, 从而在进行事实表数据分区时产生数据备份。 0111 其中的冗余程度就和N的取值有关, 当N取值为维表记录数的一半时, 则正好可以 说 明 书 CN 105517644 A 12 9/12 页 13 将事实表的数据备份一次。这样譬如在联机分析处理 OLAP 的环境下, 一般需求备份 3 份事 实表数据时, N。

43、 的取值可以为维表记录数的三分之一。因此, 本发明可以支持平滑动态调整 冗余度, 来确定备份的次数。 0112 这样, 当各节点在进行结构化查询语言(Structured Query Language, SQL)时, 各 节点在同时处理 join 操作时就不需要进行网络传输数据了。 0113 例如通过实施例二中的维表和事实表的举例, 对于B1节点来说, 分区后的B1节点 的数据如表 6 所示。 0114 表 6 0115 0116 因此, 在进行 join 操作时, 就可以在 B1 节点本地进行数据的连接查询, 使得发生 join 操作后的数据结构可以如表 7 所示。 0117 表 7 011。

44、8 C_PKO_PKpartkey 111 112 145 145 0119 这样, 当发生重分区的时候, 可以只分区需要 join 的列, 通过记录原来的位置从 而和其它列联系起来, 不分区其它无关的列, 可以减少网络传输, 在保存时也就不用保存多 余的列, 可以节省存储空间, 同时可以进行数据备份。 0120 在上述过程中, 若在将事实表按照 bitmap 表进行分区时, 出现备份的事实表数据 没有同时备份在至少两个节点上, 则可以根据分区映射表查找将事实表数据备份成功的节 点, 而后, 根据备份成功的节点中的事实表数据和 bitmap 表, 获取丢失的备份事实表数据, 说 明 书 CN 。

45、105517644 A 13 10/12 页 14 以便于从备份成功的节点获取丢失的备份事实表数据。 0121 举例来说, 在将事实表分区进行备份时, 将数据 1, 11, 25, 4 成功备份在了 B2节点上, 而B1节点中分区时发生了记录丢失, 由于备份是由于bitmap表中纵坐标为2时 B1 节点和 B2 节点同时为 1, 可以计算纵坐标为 2 时反推出 O_PK 的值为 1 和 5, 因此, 需要将 B2 节点中的 1, 11, 25, 4 数据传送至 B1 节点。也就是说, 从 bitmap 表中可以很容易 得知某行数据是否有备份数据及其备份数据的位置。 0122 本发明实施例提供一。

46、种数据分区方法, 设备将分布式数据库中的维表进行数据分 区, 根据分区后各个节点对应的维表和事实表的连接键, 与待建立的分区映射表的纵坐标 的预设数量, 按照预设算法获取余数, 再根据余数建立分区映射表, 分区映射表为比特向量 表, 进而根据事实表中连接键与预设数量按照预设算法获取的余数确定分区映射表的纵坐 标, 选取纵坐标对应比特值为 1 的节点为连接键对应的事实表数据的分区节点, 将事实表 的数据按照确定的分区节点进行分区, 其中, 将连接键集合所对应的事实表数据同时分布 在至少两个节点上, 这样在分区的时候, 可以通过预设的算法使得分区时记录出现冲突, 利 用冲突造成冗余记录, 用于数据。

47、备份, 能够减少数据查询过程中的网络带宽, 同时创造备份 数据。 0123 本发明实施例提供一种设备 01, 如图 3 所示, 包括 : 0124 第一分区单元 011, 用于将分布式数据库中的维表进行数据分区。 0125 建立单元 012, 用于根据维表的分区特征并按照预设算法建立分区映射表。 0126 第二分区单元 013, 用于将维表对应的事实表按照分区映射表进行分区 ; 以及 0127 备份单元 014, 用于按照分区映射表备份事实表中的数据。 0128 可选的, 第一分区单元 011 可以具体用于 : 0129 按照哈希算法, 将分布式数据库中的维表进行数据分区, 以获取分区后各个节。

48、点 对应的维表的数据。 0130 可选的, 建立单元 012 可以具体用于 : 0131 根据分区后各个节点对应的维表和事实表的连接键, 与待建立的分区映射表的纵 坐标的预设数量, 按照预设算法获取余数 ; 0132 根据余数建立分区映射表, 分区映射表为比特向量表, 比特向量表的横坐标表示 各个节点的标识符, 纵坐标表示连接键与预设数量进行预设算法后的余数 ; 0133 其中, 预设运算为取模运算、 模 P 加法、 模 P 减法和模 P 乘法中的其中一个, 预设数 量小于维表的维表记录数。 0134 可选的, 第二分区单元 013 和备份单元 014 可以具体用于 : 0135 根据事实表中连接键与预设数量按照预设算法获取的余数确定分区映射表的纵 坐标, 选取纵坐标对应比特值为 1 的节点为连接键对应的事实表数据的分区节点 ; 0136 将事实表的数据按照确定的分区节点进行分区, 其中, 当根据连接键获取的纵坐 标对应的比特值为 1 有至少两个节点时, 将连接键对应的事实表数据同时分布在至少两个 节点上。 0137 可选的, 还可以包括 : 0138 查找单元 015, 用于若在将事实表按照分区映射表进行分区时, 出现备份的事实表 数据没有同时备份在至少两个节点上, 则根据分区映射表查找将事实表数据备份成功的节 说 明 书 CN 1055。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人类生活必需 > 本部其他类目中不包括的技术主题〔8〕


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1