CN105517644B - 一种数据分区方法和设备 - Google Patents
一种数据分区方法和设备 Download PDFInfo
- Publication number
- CN105517644B CN105517644B CN201480000188.8A CN201480000188A CN105517644B CN 105517644 B CN105517644 B CN 105517644B CN 201480000188 A CN201480000188 A CN 201480000188A CN 105517644 B CN105517644 B CN 105517644B
- Authority
- CN
- China
- Prior art keywords
- data
- partition
- node
- partitioning
- fact
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据分区方法和设备,涉及数据库领域,能够消除远程join操作,减少数据查询过程中的网络带宽,同时创造备份数据。其方法为:通过将分布式数据库中的维表进行数据分区,根据所述维表的分区特征并按照预设算法建立分区映射表,将所述维表对应的事实表按照所述分区映射表进行分区,并按照所述分区映射表备份所述事实表中的数据,这样在分区的时候,通过预设的算法使得分区时记录出现冲突,利用冲突造成冗余记录,用于数据备份。本发明实施例用于分布式数据库的数据分区。
Description
技术领域
本发明涉及数据库领域,尤其涉及一种数据分区方法和设备。
背景技术
在联机分析处理(Online Analytical Processing,OLAP)这种分析性数据库中,处理的数据量都比较大,单机的性能已经不能满足需要,大规模并行处理(Massiveparallel processing,MPP)架构可以将数据分布到多个节点上,由多个节点并行处理,从而提高处理速度。为了使每个节点都并行处理一定量的数据,一般情况下需要将表水平分割,放到不同的节点上。但是如果没有考虑到表之间的关系,当两表之间有join(连接查询)操作时,会产生大量的网络传输,join操作效率低下。
Oracle提出引用分区(Reference Partitioning)方案,可以根据数据表之间的关系,由根数据表开始进行分区,先在根数据表指定一列作为分区列,在分区该表的同时分区子表中的相关数据,从而使相关的数据放在同一节点上,使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、设备将分布式数据库中的维表进行数据分区。
其中,这里的设备可以为计算机,有自身的磁盘,中央处理器(CentralProcessing Unit,CPU)。本发明实施例的应用场景可以是分布式大规模并行处理(Massiveparallel processing,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基准测试组织半部的测试标准
benchmark TPC-H(Transaction Processing Performance Council-H)所介绍的数据schema(架构)进行数据分区,如表1所示为benchmark TPC-H的schema数据分区。
表1benchmark TPC-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的取值可以为维表记录数的三分之一。因此,本发明可以支持平滑动态调整冗余度,来确定备份的次数。
这样,当各节点在进行结构化查询语言(Structured Query 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盘、移动硬盘、只读存储器(Read Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种数据分区方法,其特征在于,包括:
将分布式数据库中的维表进行数据分区;
根据所述维表的分区特征并按照预设算法建立分区映射表;
根据所述维表对应的事实表中连接键与预设数量按照所述预设算法获取的余数确定所述分区映射表的纵坐标,选取所述纵坐标对应比特值为1的节点为所述连接键对应的事实表数据的分区节点;
将所述事实表的数据按照确定的分区节点进行分区,其中,当根据所述连接键获取的所述纵坐标对应的比特值为1有至少两个节点时,将所述连接键对应的事实表数据同时分布在所述至少两个节点上。
2.根据权利要求1所述的方法,其特征在于,所述将分布式数据库中的维表进行数据分区包括:
按照哈希算法,将所述分布式数据库中的维表进行数据分区,以获取分区后各个节点对应的维表的数据。
3.根据权利要求2所述的方法,其特征在于,所述根据所述维表的分区特征并按照预设算法建立分区映射表包括:
根据所述分区后各个节点对应的维表和所述事实表的连接键,与待建立的分区映射表的纵坐标的预设数量,按照预设算法获取余数;
根据所述余数建立所述分区映射表,所述分区映射表为比特向量表,所述比特向量表的横坐标表示各个节点的标识符,纵坐标表示所述连接键与所述预设数量进行预设算法后的余数;
其中,所述预设算法为取模运算、模P加法、模P减法和模P乘法中的其中一个,所述预设数量小于所述维表的维表记录数。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若在将所述事实表按照所述分区映射表进行分区时,出现备份的事实表数据没有同时备份在所述至少两个节点上,则根据所述分区映射表查找将所述事实表数据备份成功的节点;
根据所述备份成功的节点中的事实表数据和所述分区映射表,获取丢失的备份事实表数据,以便于从所述备份成功的节点获取所述丢失的备份事实表数据。
5.一种数据分区设备,其特征在于,包括:
第一分区单元,用于将分布式数据库中的维表进行数据分区;
建立单元,用于根据所述维表的分区特征并按照预设算法建立分区映射表;
第二分区单元,用于根据所述维表对应的事实表中连接键与预设数量按照所述预设算法获取的余数确定所述分区映射表的纵坐标,选取所述纵坐标对应比特值为1的节点为所述连接键对应的事实表数据的分区节点;还用于将所述事实表的数据按照确定的分区节点进行分区;以及
备份单元,当根据所述连接键获取的所述纵坐标对应的比特值为1有至少两个节点时,用于将所述连接键对应的事实表数据同时分布在所述至少两个节点上。
6.根据权利要求5所述的设备,其特征在于,所述第一分区单元具体用于:
按照哈希算法,将所述分布式数据库中的维表进行数据分区,以获取分区后各个节点对应的维表的数据。
7.根据权利要求6所述的设备,其特征在于,所述建立单元具体用于:
根据所述分区后各个节点对应的维表和所述事实表的连接键,与待建立的分区映射表的纵坐标的预设数量,按照预设算法获取余数;
根据所述余数建立所述分区映射表,所述分区映射表为比特向量表,所述比特向量表的横坐标表示各个节点的标识符,纵坐标表示所述连接键与所述预设数量进行预设算法后的余数;
其中,所述预设算法为取模运算、模P加法、模P减法和模P乘法中的其中一个,所述预设数量小于所述维表的维表记录数。
8.根据权利要求5所述的设备,其特征在于,还包括:
查找单元,用于若在将所述事实表按照所述分区映射表进行分区时,出现备份的事实表数据没有同时备份在所述至少两个节点上,则根据所述分区映射表查找将所述事实表数据备份成功的节点;
获取单元,用于根据所述备份成功的节点中的事实表数据和所述分区映射表,获取丢失的备份事实表数据,以便于从所述备份成功的节点获取所述丢失的备份事实表数据。
9.一种数据分区设备,其特征在于,包括:
处理器,用于将分布式数据库中的维表进行数据分区;
所述处理器,还用于根据所述维表的分区特征并按照预设算法建立分区映射表;
所述处理器,还用于根据所述维表对应的事实表中连接键与预设数量按照所述预设算法获取的余数确定所述分区映射表的纵坐标,选取所述纵坐标对应比特值为1的节点为所述连接键对应的事实表数据的分区节点;将所述事实表的数据按照确定的分区节点进行分区,其中,当根据所述连接键获取的所述纵坐标对应的比特值为1有至少两个节点时,将所述连接键对应的事实表数据同时分布在所述至少两个节点上。
10.根据权利要求9所述的设备,其特征在于,所述处理器具体用于:
按照哈希算法,将所述分布式数据库中的维表进行数据分区,以获取分区后各个节点对应的维表的数据。
11.根据权利要求10所述的设备,其特征在于,所述处理器具体用于:
根据所述分区后各个节点对应的维表和所述事实表的连接键,与待建立的分区映射表的纵坐标的预设数量,按照预设算法获取余数;
根据所述余数建立所述分区映射表,所述分区映射表为比特向量表,所述比特向量表的横坐标表示各个节点的标识符,纵坐标表示所述连接键与所述预设数量进行预设算法后的余数;
其中,所述预设算法为取模运算、模P加法、模P减法和模P乘法中的其中一个,所述预设数量小于所述维表的维表记录数。
12.根据权利要求9所述的设备,其特征在于,所述处理器还用于:
若在将所述事实表按照所述分区映射表进行分区时,出现备份的事实表数据没有同时备份在所述至少两个节点上,则根据所述分区映射表查找将所述事实表数据备份成功的节点;
根据所述备份成功的节点中的事实表数据和所述分区映射表,获取丢失的备份事实表数据,以便于从所述备份成功的节点获取所述丢失的备份事实表数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2014072937 | 2014-03-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105517644A CN105517644A (zh) | 2016-04-20 |
CN105517644B true CN105517644B (zh) | 2020-04-21 |
Family
ID=55724953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480000188.8A Active CN105517644B (zh) | 2014-03-05 | 2014-03-05 | 一种数据分区方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105517644B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108153614B (zh) * | 2016-12-02 | 2021-08-20 | 中科星图股份有限公司 | 一种数据库的备份及恢复方法 |
US20180173762A1 (en) * | 2016-12-15 | 2018-06-21 | Futurewei Technologies, Inc. | System and Method of Adaptively Partitioning Data to Speed Up Join Queries on Distributed and Parallel Database Systems |
CN109117423B (zh) * | 2017-06-23 | 2022-05-03 | 阿里巴巴集团控股有限公司 | 数据库系统的表格分区配置方法、装置和系统 |
CN107515899B (zh) * | 2017-07-24 | 2020-05-22 | 北京中电普华信息技术有限公司 | 数据库联合分片方法、装置以及存储介质 |
CN107609089B (zh) * | 2017-09-07 | 2019-11-19 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据处理方法、装置及系统 |
CN108287868B (zh) * | 2017-12-19 | 2019-02-26 | 北京国电通网络技术有限公司 | 一种数据库查询、数据块划分方法和装置 |
CN108491294B (zh) * | 2018-03-15 | 2022-11-25 | 中国银行股份有限公司 | 一种数据库备份方法、装置及系统 |
CN109615465B (zh) * | 2018-11-22 | 2022-04-19 | 创新先进技术有限公司 | 业务订单的处理方法、装置和电子设备 |
CN110032563B (zh) * | 2019-02-19 | 2023-08-22 | 北京奥星贝斯科技有限公司 | 一种失配值的处理方法、系统以及电子设备 |
CN110659312B (zh) * | 2019-08-01 | 2022-08-23 | 北京百度网讯科技有限公司 | 数据处理的方法、装置、设备和计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101681368A (zh) * | 2007-06-29 | 2010-03-24 | 国际商业机器公司 | 聚集查询处理 |
CN101916261A (zh) * | 2010-07-28 | 2010-12-15 | 北京播思软件技术有限公司 | 一种分布式并行数据库系统的数据分区方法 |
CN102521416A (zh) * | 2011-12-28 | 2012-06-27 | 用友软件股份有限公司 | 数据关联查询方法和数据关联查询装置 |
CN102663116A (zh) * | 2012-04-11 | 2012-09-12 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
CN102968503A (zh) * | 2012-12-10 | 2013-03-13 | 曙光信息产业(北京)有限公司 | 数据库系统的数据处理方法以及数据库系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070027860A1 (en) * | 2005-07-28 | 2007-02-01 | International Business Machines Corporation | Method and apparatus for eliminating partitions of a database table from a join query using implicit limitations on a partition key value |
US8910176B2 (en) * | 2010-01-15 | 2014-12-09 | International Business Machines Corporation | System for distributed task dispatch in multi-application environment based on consensus for load balancing using task partitioning and dynamic grouping of server instance |
-
2014
- 2014-03-05 CN CN201480000188.8A patent/CN105517644B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101681368A (zh) * | 2007-06-29 | 2010-03-24 | 国际商业机器公司 | 聚集查询处理 |
CN101916261A (zh) * | 2010-07-28 | 2010-12-15 | 北京播思软件技术有限公司 | 一种分布式并行数据库系统的数据分区方法 |
CN102521416A (zh) * | 2011-12-28 | 2012-06-27 | 用友软件股份有限公司 | 数据关联查询方法和数据关联查询装置 |
CN102663116A (zh) * | 2012-04-11 | 2012-09-12 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
CN102968503A (zh) * | 2012-12-10 | 2013-03-13 | 曙光信息产业(北京)有限公司 | 数据库系统的数据处理方法以及数据库系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105517644A (zh) | 2016-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105517644B (zh) | 一种数据分区方法和设备 | |
US11281669B2 (en) | Parallel processing database system | |
US20210342747A1 (en) | Method and system for distributed deep machine learning | |
CN107004033B (zh) | 大规模并行处理器数据库系统和方法 | |
JP6338817B2 (ja) | データベースミドルウェアを用いたデータ管理システム及びその方法 | |
US8271523B2 (en) | Coordination server, data allocating method, and computer program product | |
CN110147407B (zh) | 一种数据处理方法、装置及数据库管理服务器 | |
CN106611064B (zh) | 分布式关系数据库的数据处理方法和装置 | |
CN106649828B (zh) | 一种数据查询方法及系统 | |
US7478083B2 (en) | Method and system for estimating cardinality in a database system | |
CN107193813B (zh) | 数据表连接方式处理方法及装置 | |
US20160179836A1 (en) | Method for updating data table of keyvalue database and apparatus for updating table data | |
EP2646928A1 (en) | Systems and methods for performing a nested join operation | |
CN107784030B (zh) | 一种处理连接查询的方法及装置 | |
US20180075077A1 (en) | Method and Device for Partitioning Association Table in Distributed Database | |
EP2901344A1 (en) | System and method for flexible distributed massively parallel processing (mpp) database | |
CN110019231B (zh) | 一种并行数据库动态关联的方法及节点 | |
US20180329941A1 (en) | Constraint Data Statistics | |
US11226986B2 (en) | Data table partitioning management method and apparatus | |
CN104871153A (zh) | 用于灵活的分布式大规模并行处理(mpp)数据库的系统和方法 | |
CN111512283A (zh) | 数据库中的基数估算 | |
Liroz-Gistau et al. | Dynamic workload-based partitioning algorithms for continuously growing databases | |
CN107203550B (zh) | 一种数据处理方法和数据库服务器 | |
US20160117350A1 (en) | Column group selection method and apparatus for efficiently storing data in mixed olap/oltp workload environment | |
CN106933657B (zh) | 数据库死锁处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |