[发明专利]一种面向列存储的桶内索引哈希连接方法有效
申请号: | 201210019277.X | 申请日: | 2012-01-20 |
公开(公告)号: | CN102609487A | 公开(公告)日: | 2012-07-25 |
发明(设计)人: | 王梅;乐嘉锦;夏小玲;郝大腾 | 申请(专利权)人: | 东华大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 上海申汇专利代理有限公司 31001 | 代理人: | 翁若莹;柏子雵 |
地址: | 201620 上*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 存储 索引 连接 方法 | ||
1.一种面向列存储的桶内索引哈希连接方法,其特征在于,步骤为:
步骤1、初始化:解析哈希连接两表信息,确定哈希对象小表S,判断哈希关键字,初始化哈希表HT,设置桶的个数为B,散列函数为f(x);
步骤2、先创建桶节点,随后,对哈希对象小表S中数据Si使用散列函数f(x)计算哈希值,再根据计算的值将数据Si按大小有序填充到相应的桶结点适当的位置中,若数据按哈希关键字无序,桶内数据采用链表存储,若数据按哈希关键字有序,桶内数据采用数组存储,初始情况下仅为每个桶生成一个大小为容忍值长度的数组,当桶内的元组个数超过容忍值T时,再新动态生成一个容忍值长度的数组,填充时填充到当前数组尾部;
步骤3、判断当前桶内的元素个数是否大于容忍值T,若大于则转向步骤4建立桶内索引,否则按照普通的哈希散列算法将其散列到桶中,并转向步骤5;
步骤4、建立桶内索引:从第一个数据开始,将该数据重新插入到桶中,插入第一条数据记录时,建立第一个索引节点,该节点索引第一条记录位置,当有新的数据进入该桶时,首先查桶内索引链,找到合适的索引节点,从此索引节点索引的的第一个数据位置开始对比找到合适位置后插入,若此索引节点中数据个数count值超过容忍值T时,就从当前插入数据的位置,将这个索引节点一分为二,同时为新的索引节点赋值,该过程反复进行,直到每个索引节点中数据个数均小于容忍值T;
步骤5、建立桶内索引数组:当表中所有数据插入完成后,将各个桶的索引节点,按索引数据最小值的顺序存生成该表的索引数组,便于二分法查找;
步骤6、匹配连接:建立上述哈希桶后,利用桶内索引,进行匹配连接。
2.如权利要求1所述的一种面向列存储的桶内索引哈希连接方法,其特征在于,所述步骤6包括:
步骤6.1、取哈希大表中数据进行连接,该数据经过散列函数f(x)计算后,找到对应的桶;
步骤6.2、首先二分查找此桶对应的索引节点数组,找到对应的索引节点后,若数据按哈希关键字有序,则可取出对应的数组,继续使用二分查找;若数据按哈希关键字无序,则从索引节点中读出此索引节点中的第一条数据的位置,接下来从哈希大表中取出的数据就从该位置起依次与桶中数据一一比对;
步骤6.3、若遇到相同值则连接成功,并继续进行比对,到下一个不同的值结束;如果没有遇到相同的值,则比对到下一个索引点的开始数据就可以确定小表S中没有此项,则数据连接不成功。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东华大学,未经东华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210019277.X/1.html,转载请声明来源钻瓜专利网。