一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法技术

技术编号:17196296 阅读:35 留言:0更新日期:2018-02-03 22:56
本发明专利技术提供了一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法。把数据集A平均分成N段,分完段以后把每段的第一条记录的主键键值读出来,与数据集A对应的数据集B也得分段,根据数据集A中每段的第一条记录的主键键值用二分法找到数据集B中对应的每段第一条记录的关联键键值。找到数据集B中的每一段的起始点以后,对数据集B按起始点进行分段;每个线程分别单独用归并算法计算一对一join同维数据集A和B分的每一个对应关联的段,数据集A和B分的段在计算时只需要各自遍历一次,计算完以后的合并数据集为C,最后再把这些分段计算后的合并数据集C组成最终的数据集D,然后就可以在数据集D中引用需要的记录了。

【技术实现步骤摘要】
一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法
本专利技术涉及并行计算一对一join、一对多join,更具体地来说,特别涉及一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法。
技术介绍
随着全球对知识产权的重视,其中专利技术专利的发展趋势越来越好,各行业各领域申请授权的专利技术专利的数量日趋庞大,特别是机械、生物、化工、医药、互联网行业更是如此。面对这些大量的已经授权的专利技术专利,合理利用这些现有的已知技术显的重中之重。于是出现了很多利用遗传资源衍生出的专利技术专利,利用现有的已经授权的已知技术进行技术层面的改造升级等。本专利技术正是基于专利技术“一种用归并算法计算一对一join、一对多join的方法”衍生出来的。依据专利法的要求,陈述本专利技术专利直接来源是申请号为201710931999.5的专利技术专利,申请号为201710931999.5的专利技术专利在申请过程中提前公布,与本专利技术专利申请人同为“北京润乾信息系统技术有限公司”,专利技术人蒋步星,专利技术人通过对申请号为201710931999.5的专利技术专利深入的研究,在原有专利技术层面上进行了突破。本专利技术专利应用于难以实现的并行计算一对一join、一对多join。由于单核CPU速度提升的局限性,提升计算机速度的主要途径是使用多核CPU。多核CPU的普及对数值计算的发展产生了历史性的改变,由于多核和单核CPU设计理念的不同,单核CPU上运行良好的软件或者以前的算法不能使多核CPU发挥其最大效能,要想高效利用多核CPU,就必须改进原有的老程序,融进并行算法的思想。把原来串行的计算改成并行的计算,如果要并行计算,就需要每个线程分别处理一部分数据,所以要把数据分段给各个线程。有时为了得到完整的结果,我们需要从两个或更多的数据集中获取结果。我们就需要执行join计算。一对一join的关系是两个数据集之间的一种关系,该关系中第一个数据集中的单个行与第二个数据集中的单个行相关。如果这两个数据集关联的键都为主键时,称这两个数据集为同维数据集。一对多join的关系是两个数据集之间的一种关系,该关系中第一个数据集中的单个行与第二个数据集中的一个或多个行相关,但第二个数据集中的一个行只可以与第一个数据集中的一个行相关。如果在应用中,某个数据集包含了一片或者多片区域,每一片区域都针对同一个对象,但是各区域又各自展示不同的主题,像这样的一对多join关系我们称之为主子数据集。其中每一小片区域称为子数据集,子数据集构成的数据集整体称为主数据集。主子数据集的特点是子数据集的关联键是主数据集关联主键的一部分。数据集可通过键将彼此联系起来。主键(PrimaryKey)是一个列,在这个列中的每一行的键值都是唯一的。在数据集中,每个主键的键值都是唯一的。这样做的目的是在不重复每个数据集中的所有数据的情况下,把数据集间的数据交叉捆绑在一起。大数据量一对一join、一对多join的外存并行计算时,为什么不能两个数据集分别单独分段呢?因为两个数据集是关联的join关系,如果分别单独分段,分完可能会发生数据错位,导致两个数据集对不上,所以不能分别单独分段。目前现有的大数据量一对一join、一对多join的外存并行计算技术有以下方法:先把需要计算一对一join、一对多join的数据分区,然后每个区分别用hash计算一对一join、一对多join,最后把计算结果合并。缺点是分区的数量是计算前固定了,然后并行计算的线程数不一定能和分区数相等,不相等的情况下会造成计算能力的损失。如果线程数大于分区数时,每个区对应一个线程,多余的线程会闲置;如果线程数小于分区数时,不能保证每个区对应一个线程,造成有些分区只能串行计算,计算机为了平衡各线程计算力,需要把分区分的很碎,这样增加了管理的复杂度。还有个缺点是,传统hashjoin算法并行处理大数据时会出现向外存并发写入的动作,并发写入外存的效率很低。针对上述问题,专利技术了一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法,解决了目前难以解决的大数据量一对一join、一对多join的外存并行计算技术的难题。
技术实现思路
为了克服前述问题,本专利技术的目的在于提供一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法。一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法,实施条件为:实施此专利技术的计算机是多核CPU配置,数据量非常大内存装不下的互相关联数据集A和B,特点是关联键是事先知道并且确定的(此专利技术的必要条件)。如果数据集A中的主键对应数据集B中的主键,则A和B是一对一join同维数据集;如果数据集A中的主键对应子数据集B中的关联键(子数据集B中的关联键是主数据集A中的主键一部分),则A和B是一对多join主子数据集。使用步骤为:1.对在外存中的数据集A和B进行如下准备工作,同维数据集关系按照它们的主键排序,主子数据集关系主数据集A按照它的主键排序,子数据集B按关联主键的键排序或者全部和主键有关系的键排序(关联对应的键放到前边),把这些准备计算join的历史数据集全部保存好;(这是一次性准备工作,以后数据集A和B再并行计算join时就不需要做这步准备了。)2.把数据集A平均分成N段(N为并行计算此专利技术的线程数,不确定线程数的分多少段都可以),分完段以后把每段的第一条记录的主键键值读出来,与数据集A对应的数据集B也得分段,如果不分段数据就不对应出现错位了;3.因为数据集B的关联键与数据集A的主键是对应关系,而数据集B是根据关联键进行排序的,就可以根据数据集A中每段的第一条记录的主键键值用二分法找到数据集B中对应的每段第一条记录的关联键键值;4.找到数据集B中的每一段的起始点(每段的第一条记录的关联键键值)以后,对数据集B按起始点进行分段;5.把数据集A和B分成N段以后,每个线程分别单独用归并算法计算一对一join同维数据集A和B分的每一个对应关联的段,数据集A和B分的段在计算时只需要各自遍历一次,计算完以后的合并数据集为C,最后再把这些分段计算后的合并数据集C组成最终的数据集D,然后就可以在数据集D中引用需要的记录了。并行计算一对多join主子数据集A和B的时候,原理和方法同上步骤3、4、5。就是把子数据集主键换成子数据集对应主数据集的关联键。如上所述的一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法,其特征在于,数据集A数据有序,把数据集A平均分成N段。如上所述的一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法,其特征在于,数据集B数据有序,用二分法找到数据集B中对应的每段第一条记录的关联键键值。如上所述的一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法,其特征在于,此专利技术的并行计算比“一种用归并算法计算一对一join、一对多join的方法”串行计算速度快的多。如上所述的一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法,其特征在于,实施此专利技术的计算机硬件支持并行计算。如上所述的一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法,其特征在于,数据集A和本文档来自技高网
...
一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法

【技术保护点】
一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法,步骤如下:a.对在外存中的数据集A和B进行如下准备工作,同维数据集关系按照它们的主键排序,主子数据集关系主数据集A按照它的主键排序,子数据集B按关联主键的键排序或者全部和主键有关系的键排序,把这些准备计算join的历史数据集全部保存好;b.把数据集A平均分成N段,分完段以后把每段的第一条记录的主键键值读出来,与数据集A对应的数据集B也得分段,如果不分段数据就不对应出现错位了;c.因为数据集B的关联键与数据集A的主键是对应关系,而数据集B是根据关联键进行排序的,就可以根据数据集A中每段的第一条记录的主键键值用二分法找到数据集B中对应的每段第一条记录的关联键键值;d.找到数据集B中的每一段的起始点以后,对数据集B按起始点进行分段;e.把数据集A和B分成N段以后,每个线程分别单独用归并算法计算一对一join同维数据集A和B分的每一个对应关联的段,数据集A和B分的段在计算时只需要各自遍历一次,计算完以后的合并数据集为C,最后再把这些分段计算后的合并数据集C组成最终的数据集D,然后就可以在数据集D中引用需要的记录了。并行计算一对多join主子数据集A和B的时候,原理和方法同上步骤3、4、5。就是把子数据集主键换成子数据集对应主数据集的关联键。...

【技术特征摘要】
1.一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法,步骤如下:a.对在外存中的数据集A和B进行如下准备工作,同维数据集关系按照它们的主键排序,主子数据集关系主数据集A按照它的主键排序,子数据集B按关联主键的键排序或者全部和主键有关系的键排序,把这些准备计算join的历史数据集全部保存好;b.把数据集A平均分成N段,分完段以后把每段的第一条记录的主键键值读出来,与数据集A对应的数据集B也得分段,如果不分段数据就不对应出现错位了;c.因为数据集B的关联键与数据集A的主键是对应关系,而数据集B是根据关联键进行排序的,就可以根据数据集A中每段的第一条记录的主键键值用二分法找到数据集B中对应的每段第一条记录的关联键键值;d.找到数据集B中的每一段的起始点以后,对数据集B按起始点进行分段;e.把数据集A和B分成N段以后,每个线程分别单独用归并算法计算一对一join同维数据集A和B分的每一个对应关联的段,数据集A和B分的段在计算时只需要各自遍历一次,计算完以后的合并数据集为C,最后再把这些分段计算后的合并数据集C组成最终的数据集D,然后就可以在数据集D中引用需要的记录了。并行计算一对多join主子数据集A和B的时候,原理和方法同上步骤3、4、5。就是把子数据集主键换成子数据集对应主数据集的关联键。2.如权利要求1所述的一种基于“用归并算法计算一对一join、一对多join”的对位分段并行方法,其特征在于,实施此发明的计算机是多核CPU配置,数据量非常大内存装不下的互相关联数据集A和B,特点是关联键是事先知道并且确定的(此发明的必要条件)。如果数据集A中的主键对应数据集B中的主键,则A和B是一对一join同维数据集;...

【专利技术属性】
技术研发人员:蒋步星
申请(专利权)人:北京润乾信息系统技术有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1