[发明专利]基于Cuckoo哈希计算的数据存储优化方法及系统有效
申请号: | 201710415853.5 | 申请日: | 2017-06-06 |
公开(公告)号: | CN107256130B | 公开(公告)日: | 2019-09-24 |
发明(设计)人: | 华宇;孙园园;冯丹 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 廖盈春;李智 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 cuckoo 计算 数据 存储 优化 方法 系统 | ||
1.一种基于Cuckoo哈希计算的数据存储优化方法,其特征在于,包括以下步骤:
S1、根据元素属性随机选择两个相互独立的哈希函数计算得到元素在索引表中对应的两个候选哈希桶;
S2、根据元素所对应的两个候选哈希桶是否属于cuckoo图,对元素进行分类,其中,v+0类表示元素所对应的两个候选哈希桶都在cuckoo图中,插入元素不会造成cuckoo图节点数增加;v+1类表示元素所对应的两个候选哈希桶只有一个存在于cuckoo图中,插入元素会使cuckoo图节点数加1;v+2类表示元素所对应的两个候选桶之前都没有被加入cuckoo图中,插入元素会使cuckoo图节点数加2;
S3、对于cuckoo图中的每个子图,若插入元素后子图中的边数等于节点数,则该子图有且只有一个回路,并将该子图称为满载子图;若插入元素后子图中的边数不等于节点数,则将该子图称为非满载子图,其中,在cuckoo图中,将索引表中每个桶看作是图的一个节点,将索引表中每个元素看作是图的一条边;
S4、若元素的两个候选哈希桶对应的两个节点所属的子图为满载子图,则在元素插入导致的踢出路径会形成回路导致无限循环,预测插入操作一定失败;若元素的两个候选哈希桶对应的两个节点所属的子图中有非满载子图,则在非满载子图中一定存在一个空位,经过有限次踢出操作时,所有元素都将插入索引表中,预测插入操作一定成功,其中,两个候选哈希桶对应的两个节点属于相同子图或者两个候选哈希桶对应的两个节点属于不同子图;
S5、若预测插入操作失败,则将元素存入临时空间,不进行任何踢出操作;若预测插入操作成功,则根据Cuckoo哈希机制执行元素插入操作。
2.根据权利要求1所述的方法,其特征在于,步骤S2具体包括以下子步骤:
S2.1、判断两个候选哈希桶是否都已经存在于cuckoo图中,若都存在,则该元素属于v+0类,否则执行步骤S2.2;
S2.2、判断是否有一个候选哈希桶存在于cuckoo图中,若是,则该元素属于v+1类,否则该元素属于v+2类。
3.根据权利要求1所述的方法,其特征在于,步骤S4具体包括以下子步骤:
S4.1、判断两个候选哈希桶是否属于同一子图,若是则执行步骤S4.2;否则执行步骤S4.3;
S4.2、判断该子图是否为满载子图,若是满载子图,则预测插入一定失败,若是非满载子图,则预测插入一定成功;
S4.3、判断两个子图是否都满载,若两个子图均是满载子图,则预测插入一定失败,否则预测插入一定成功。
4.根据权利要求1至3任意一项所述的方法,其特征在于,步骤S5具体包括以下子步骤:
S5.1、判断元素是否属于v+0类,若是则任选一个对应非满载子图的候选哈希桶,然后执行步骤S5.2,否则执行步骤S5.4;
S5.2、判断该候选哈希桶是否被其他元素占据,若没有则将该元素直接插入该候选哈希桶,并将该候选哈希桶对应子图的边数加1;若有元素占据,则执行步骤S5.3;
S5.3、哈希计算得到该候选哈希桶所占据元素的另一个候选哈希桶,再将待插入元素插入该候选哈希桶,将原有元素踢出成为待插入元素,并返回步骤S5.2继续执行;
S5.4、判断该元素是否属于v+1类,若是则将该元素插入对应子图新增节点所对应的哈希桶中,并将对应子图的节点数加1以及对应子图的边数加1;否则,该元素属于v+2类型,分配一个新的子图号,直接将元素插入任一新增节点的对应桶中,再设置新子图的节点数为2,边数为1。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710415853.5/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置