一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法技术

技术编号:17047764 阅读:47 留言:0更新日期:2018-01-17 17:43
本发明专利技术提供了一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法。对在外存中的事实数据集A进行如下准备工作,把事实数据集A中的外键键值替换成所对应维数据集B中主键键值所在记录的位置序号,全部替换完以后进行保存,比如对应的记录在维数据集B中的位置是第N个记录,那么键值替换的位置序号就是N,替换所需要的时间可以用hash方法算出;在准备工作做完以后,往内存中加载维数据集B;以后再从事实数据集A中外键键值找对应维数据集B中主键键值所在的记录,就可以根据位置序号找到维数据集B中对应的位置记录了,就直接可以引用这条记录了。

On the method of join in storage and dimensional data set in the memory of a set of number calculation data

The invention provides a data set on disk in fact on a join method and dimensional data set in memory number calculation. In fact the data on disk set A in the following preparatory work, the fact that the data set key key in A is replaced by the corresponding dimension data set where the key primary key serial number of the position recorded in B, after the end of all replacement such as save, corresponding records in the high-dimensional data set in B is the first N records then, the key is to replace the serial number of the position of N, to replace the time required by the method of hash can be calculated; after the preparatory work done, to load the dimensional data in memory in B; then from the fact that the data set A in foreign keys find the corresponding dimension data recording master keys within the B, you can according to the position serial number to find high-dimensional data sets in B corresponding to the location of recording, you can directly reference the records.

【技术实现步骤摘要】
一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法
本专利技术涉及计算多对一join,更具体地来说,特别涉及一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法。
技术介绍
有时为了得到完整的结果,我们需要从两个或更多的数据集中获取结果。我们就需要执行join计算。多对一join的关系是两个数据集之间的一种关系,该关系中第一个数据集中的一个或多个行可以与第二个数据集中的单个行相关,但第一个数据集中的一个行只可以与第二个数据集中的一个行相关。数据集可通过键将彼此联系起来。主键(PrimaryKey)是一个列,在这个列中的每一行的键值都是唯一的。在数据集中,每个主键的键值都是唯一的。这样做的目的是在不重复每个数据集中的所有数据的情况下,把数据集间的数据交叉捆绑在一起。如果关联键在一个数据集中是主键,那么这个关联键被称为另一个数据集中的外键。由此可见,外键表示了两个数据集之间的相关联系。比如多对一join关系,多的那边在数据集中是外键,一的那边在数据集中是主键。hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的键值(又叫做预映射,pre-image),通过散列算法,变换成固定长度的hash值。这种转换是一种压缩映射,也就是,hash值的空间通常远小于键值的空间,不同的键值可能会散列成相同的hash值,所以不可能从hash值来唯一的确定键值。简单的说就是一种将任意长度的键值压缩到某一固定长度的hash值的函数。目前现有的多对一join计算技术有以下两种:一种是在两个相关数据集上根据关键字进行硬遍历,计算复杂度为n(多对应的键值)*m(一对应的键值),缺点是性能太差;另一种是为了减少硬遍历的时间,专利技术了hash方法,计算复杂度为n(1)*m(1)+n(2)*m(2)+……+n(k)*m(k)(n、m为记录数,1、2……k是hash值,n(i)是数据集n中hash值等于i的记录个数,m(i)是数据集m中hash值等于i的记录个数,在hash值相同的范围内进行遍历。),不管运气好坏绝大多数情况下远远小于硬遍历的复杂度m*n。但是hash函数也有一些缺点,这个缺点是hash表不可避免的,即冲突现象:对不同的关键字可能得到同一hash地址。针对上述方法的问题本专利技术提供了一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法。
技术实现思路
为了克服前述问题,本专利技术的目的在于提供一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法。一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,实施条件为:在机器内存大小能够加载维数据集B的情况下,而事实数据集A在外存中,维数据集B不能进行删除和插入只能进行追加和修改(修改非关联的键),他们是多对一join的映射关系,事实数据集A中的外键对应维数据集B中的主键;使用步骤为:1.对在外存中的事实数据集A进行如下准备工作,把事实数据集A中的外键键值替换成所对应维数据集B中主键键值所在记录的位置序号,全部替换完以后进行保存,比如对应的记录在维数据集B中的位置是第N个记录,那么键值替换的位置序号就是N,替换所需要的时间可以用hash方法算出;(这是一次性准备工作,以后再计算这两个多对一join数据集时就不需要做这步准备了。此步骤所需要的成本和以前解决多对一join用hash方法解决的成本一样。)2.在准备工作做完以后,往内存中加载维数据集B;(事实数据集A一次替换完保存以后可多次加载维数据集B,而一次加载维数据集B以后可以进行多次计算。)3.以后再从事实数据集A中外键键值找对应维数据集B中主键键值所在的记录,就可以根据位置序号找到维数据集B中对应的位置记录了,就直接可以引用这条记录了。(此专利技术优点是省略了遍历比较动作,原来技术的比较动作是根据事实数据集A中的外键键值关键字遍历找维数据集B中对应的主键键值关键字,从而确定关键字所在的记录位置。现在只需要做一次准备工作就可以满足以后需要计算多对一join数据集的情况了,原来技术是每次计算多对一join都要做一次hash计算。)如上所述的一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,其特征在于,内存大小能够加载维数据集B。如上所述的一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,其特征在于,两个数据集必须是多对一join的映射关系。如上所述的一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,其特征在于,事实数据集A中的外键对应维数据集B中的主键。如上所述的一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,其特征在于,步骤一是对两个多对一join数据集映射后计算的一次性准备工作,以后再计算这两个多对一join数据集时就不需要做这步准备了。如上所述的一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,其特征在于,步骤一准备工作所需要的成本和以前解决多对一join用hash方法解决的成本一样。如上所述的一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,其特征在于,对在外存中的事实数据集A进行如下准备工作,把事实数据集A中的外键键值替换成所对应维数据集B中主键键值所在记录的位置序号,全部替换完以后进行保存,比如对应的记录在维数据集B中的位置是第N个记录,那么键值替换的位置序号就是N。如上所述的一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,其特征在于,步骤一中替换所需要的时间可以用hash方法算出。如上所述的一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,其特征在于,事实数据集A一次替换完保存以后可多次加载维数据集B,而一次加载维数据集B以后可以进行多次计算。如上所述的一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,其特征在于,做完准备工作后,再从事实数据集A中外键键值找对应维数据集B中主键键值所在的记录,就可以根据位置序号找到维数据集B中对应的记录了,就直接可以引用这条记录了。如上所述的一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,其特征在于,本专利技术的优点是省略了遍历比较动作。(根据事实数据集A中的外键键值关键字遍历找维数据集B中对应的主键键值关键字,从而确定键值关键字所在的记录位置。)如上所述的一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,其特征在于,所述方法适用于所有的系统、平台、软件、语言中。以上只是一个理论上的描述,实际实现过程中还会有各种优化的可能,但基本原理不会改变。本领域的技术人员可以对本专利技术进行各种改动和变型而不脱离本专利技术的保护范围。本专利技术的有益效果从事实数据集A中外键键值找对应维数据集B中主键键值所在的记录,可以根据位置序号找到维数据集B中对应的记录,就直接可以引用这条记录了。比以前的技术省略了比较动作,而且准备工作只需要准备一次,以前的hash方法是每次计算时都需要准备。下面结合附图和实施例对本专利技术进一步说明。附图说明图1为本专利技术的流程图;具体实施方式一家信息系本文档来自技高网
...
一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法

【技术保护点】
一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,步骤如下:a.对在外存中的事实数据集A进行如下准备工作,把事实数据集A中的外键键值替换成所对应维数据集B中主键键值所在记录的位置序号,全部替换完以后进行保存,比如对应的记录在维数据集B中的位置是第N个记录,那么键值替换的位置序号就是N,替换所需要的时间可以用hash方法算出;(这是一次性准备工作,以后再计算这两个多对一join数据集时就不需要做这步准备了。此步骤所需要的成本和以前解决多对一join用hash方法解决的成本一样。)b.在准备工作做完以后,往内存中加载维数据集B;(事实数据集A一次替换完保存以后可多次加载维数据集B,而一次加载维数据集B以后可以进行多次计算。)c.以后再从事实数据集A中外键键值找对应维数据集B中主键键值所在的记录,就可以根据位置序号找到维数据集B中对应的位置记录了,就直接可以引用这条记录了。(此专利技术优点是省略了遍历比较动作,原来技术的比较动作是根据事实数据集A中的外键键值关键字遍历找维数据集B中对应的主键键值关键字,从而确定关键字所在的记录位置。现在只需要做一次准备工作就可以满足以后需要计算多对一join数据集的情况了,原来技术是每次计算多对一join都要做一次hash计算。)...

【技术特征摘要】
1.一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,步骤如下:a.对在外存中的事实数据集A进行如下准备工作,把事实数据集A中的外键键值替换成所对应维数据集B中主键键值所在记录的位置序号,全部替换完以后进行保存,比如对应的记录在维数据集B中的位置是第N个记录,那么键值替换的位置序号就是N,替换所需要的时间可以用hash方法算出;(这是一次性准备工作,以后再计算这两个多对一join数据集时就不需要做这步准备了。此步骤所需要的成本和以前解决多对一join用hash方法解决的成本一样。)b.在准备工作做完以后,往内存中加载维数据集B;(事实数据集A一次替换完保存以后可多次加载维数据集B,而一次加载维数据集B以后可以进行多次计算。)c.以后再从事实数据集A中外键键值找对应维数据集B中主键键值所在的记录,就可以根据位置序号找到维数据集B中对应的位置记录了,就直接可以引用这条记录了。(此发明优点是省略了遍历比较动作,原来技术的比较动作是根据事实数据集A中的外键键值关键字遍历找维数据集B中对应的主键键值关键字,从而确定关键字所在的记录位置。现在只需要做一次准备工作就可以满足以后需要计算多对一join数据集的情况了,原来技术是每次计算多对一join都要做一次hash计算。)2.如权利要求1所述的一种事实数据集在外存中而维数据集在内存中的序号计算多对一join的方法,其特征在于,在机器内存大小能够加载维数据集B的情况下,而事实数据集A在外存中,维数据集B不能进行删除和插入只能进行追加和修改(修改非关联的键),他们是多对一join的映射关系,事实数据集A中的外键对应维数据集B中的主键,这是实施条件。3.如权利要求1所述的一种事实数据集在外存中而维数据...

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

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

1