[发明专利]一种用归并算法计算一对一join、一对多join的方法在审
申请号: | 201710931999.5 | 申请日: | 2017-10-10 |
公开(公告)号: | CN107704587A | 公开(公告)日: | 2018-02-16 |
发明(设计)人: | 蒋步星 | 申请(专利权)人: | 北京润乾信息系统技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 归并 算法 计算 一对一 join 一对 方法 | ||
技术领域
本发明涉及计算一对一join、一对多join,更具体地来说,特别涉及一种用归并算法计算一对一join、一对多join的方法。
背景技术
有时为了得到完整的结果,我们需要从两个或更多的数据集中获取结果。我们就需要执行join计算。
一对一join的关系是两个数据集之间的一种关系,该关系中第一个数据集中的单个行与第二个数据集中的单个行相关。如果这两个数据集关联的键都为主键时,称这两个数据集为同维数据集。
一对多join的关系是两个数据集之间的一种关系,该关系中第一个数据集中的单个行与第二个数据集中的一个或多个行相关,但第二个数据集中的一个行只可以与第一个数据集中的一个行相关。如果在应用中,某个数据集包含了一片或者多片区域,每一片区域都针对同一个对象,但是各区域又各自展示不同的主题,像这样的一对多join关系我们称之为主子数据集。其中每一小片区域称为子数据集,子数据集构成的数据集整体称为主数据集。主子数据集的特点是子数据集的关联键是主数据集关联主键的一部分。
数据集可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的键值都是唯一的。在数据集中,每个主键的键值都是唯一的。这样做的目的是在不重复每个数据集中的所有数据的情况下,把数据集间的数据交叉捆绑在一起。
hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的键值(又叫做预映射,pre-image),通过散列算法,变换成固定长度的hash值。这种转换是一种压缩映射,也就是,hash值的空间通常远小于键值的空间,不同的键值可能会散列成相同的hash值,所以不可能从hash值来唯一的确定键值。简单的说就是一种将任意长度的键值压缩到某一固定长度的hash值的函数。
目前现有的大数据量一对一join、一对多join的外存计算技术有以下两种:一种采用了hash方法,把外存中的数据集A和B进行关联的键值转换成hash值,外存计算的实质运算只能内存做,因为针对的是大数据量的计算,数据集A和B的数据量比较大,内存放不下数据集A和B,所以把数据集A和B分成若干个内存能放下的小段,因为计算的是join,所以hash方法必须保证让数据集A和B中关联的记录分到同一段中,相同键值的hash值是相同的,因为相同的hash值被分到同一段了,所以相同的键值也在同一段中。如果数据集A和B中的某个分段太大了内存装不下,就只能二次hash再分更小的段;但是hash函数也有一些缺点,这个缺点是hash数据集不可避免的,即冲突现象:对不同的关键字可能得到同一hash地址hash算法的另一个缺点是,用hash方法每次都读取一点点数据然后写出去,而且写的动作比读的动作慢好几倍,还会导致hash结果非常碎片化,很难用了。另一种是用归并算法计算,归并算法比hash算法效率高很多,减少了大量硬盘IO的时间;但是归并算法的要求是两个数据集里面的数据都是有序的,缺点是实施条件高。
这两种对应关系(一对一join同维数据集、一对多join主子数据集)的特点是计算时永远只用到这两个关联键,不会用到别的键,关联键是事先知道并且确定的。传统的办法还是hash分段或者归并算法(只有确定的知道数据集有序时才会采用。无序的数据集实际上很少采用,因为归并算法计算前需要对无序的数据集进行排序,而排序的成本比hash分段的成本高很多),为什么不在保存数据集的时候保存数据集的次序呢,因为关系数据库是无序集合体系的,理论上不能保存数据集的次序,很难利用这一特点。这样计算的效率比较低或者实施条件高,如何利用关联键是事先知道并且确定的这个特点来提升一对一join同维数据集、一对多join主子数据集的计算效率或者降低实施条件是目前需要解决的问题。
针对上述方法的问题本发明提供了一种用归并算法计算一对一join、一对多join的方法。
发明内容
为了克服前述问题,本发明的目的在于提供一种用归并算法计算一对一join、一对多join的方法。
一种用归并算法计算一对一join、一对多join的方法,实施条件为:
数据量非常大内存装不下的互相关联数据集A和B,特点是关联键是事先知道并且确定的(此发明的必要条件)。如果数据集A中的主键对应数据集B中的主键,则A和B是一对一join同维数据集;如果数据集A中的主键对应子数据集B中的关联键,(子数据集B中的关联键是主数据集A中的主键一部分)则A和B是一对多join主子数据集。
使用步骤为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京润乾信息系统技术有限公司,未经北京润乾信息系统技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710931999.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:学员评价系统
- 下一篇:一种基于情感分析的教师评价系统