[发明专利]一种分布式存储器哈希索引方法及系统有效
申请号: | 201410077069.4 | 申请日: | 2014-03-04 |
公开(公告)号: | CN104156380B | 公开(公告)日: | 2019-03-26 |
发明(设计)人: | 许志良;王寅峰;赖红;张运生 | 申请(专利权)人: | 深圳信息职业技术学院 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 深圳中一专利商标事务所 44237 | 代理人: | 张全文 |
地址: | 518172 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 存储器 索引 方法 系统 | ||
1.一种分布式存储器哈希索引方法,其特征在于,包括:
将哈希表的地址范围映射到多个存储器节点中;
主节点计算键key的哈希值,将计算得到的key的哈希值的前m位作为节点编号,所述m为存储器节点的个数;
根据存储器节点编号与存储器节点IP的映射关系查找到对应的存储器节点地址,所述存储器节点编号与存储器节点IP的映射关系存储在路由表中,所述路由表存储在主节点中;
对所述存储器节点地址对应存储器节点进行写入、读取、或删除操作;
磁盘节点通过基于磁盘的哈希表保存存储器节点中的哈希表的镜像,对磁盘节点进行写入或删除操作;
所述对所述存储器节点地址对应存储器节点进行写入操作,具体以下步骤:
步骤A1、在主节点的bloom filter中查找所述的key是否存在,如果是,则执行步骤A2,如果否,则同时执行步骤A3与A4;
步骤A2、查找key是否在当前的存储器节点中,如果是,则执行步骤A5,如果否则执行步骤A3;
步骤A3、根据存储器节点IP,将key及对应的值value写入到存储器节点中,之后结束操作;
步骤A5、将key及对应的value发送到磁盘节点,然后执行步骤A6;
步骤A6、判断磁盘节点日志缓存区log cache是否已满,若是,则执行步骤A7后执行步骤A8,若否,则直接执行步骤A8;
步骤A7、将当前log cache的内容写入到磁盘中,清空log cache;
步骤A8、将key及对应的value写入log cache中,之后结束操作;
所述对所述存储器节点地址对应存储器节点进行读取操作,具体以下步骤:
步骤B1、在主节点的bloom filter中查找所述的key是否存在,如果是,则执行步骤B2,如果否,则执行步骤B4;
步骤B2、根据存储器节点IP查找key是否在当前的存储器节点中,如果是,则执行步骤B3,如果否,则执行步骤B4;
步骤B3、返回key及对应的值value;
步骤B4、返回key不存在;
所述对所述存储器节点地址对应存储器节点进行删除操作,具体以下步骤:
步骤C1、在主节点的bloom filter中查找所述的key是否存在,如果是,则执行步骤C2,如果否,则执行步骤C5;
步骤C2、根据存储器节点IP查找key是否在当前的存储器节点中,如果是,则同时执行步骤C3以及步骤C4,如果否,则执行步骤C5;
步骤C3、删除存储器节点中的key及对应的值value;
步骤C4、删除磁盘节点中的key及对应的值value;
步骤C5、返回key不存在。
2.一种分布式存储器哈希索引系统,其特征在于,包括:映射模块、计算模块、第一查找模块、写入模块、读取模块、删除模块、存储模块;
所述映射模块,用于将哈希表的地址范围映射到多个存储器节点中;
所述计算模块,用于主节点计算键key的哈希值,将计算得到的key的哈希值的前m位作为节点编号,所述m为存储器节点的个数;
所述第一查找模块,用于根据存储器节点编号与存储器节点IP的映射关系查找到对应的存储器节点地址,所述存储器节点编号与存储器节点IP的映射关系存储在路由表中,所述路由表存储在主节点中;
所述写入模块,用于对所述存储器节点地址对应存储器节点进行写入操作;
所述读取模块,用于对所述存储器节点地址对应存储器节点进行读取操作;
所述删除模块,用于对所述存储器节点地址对应存储器节点进行删除操作;
所述存储模块,用于磁盘节点通过基于磁盘的哈希表保存存储器节点中的哈希表的镜像;
所述写入模块还用于对磁盘节点进行写入操作;所述删除模块还用于对磁盘节点进行删除操作;
所述写入模块具体用于执行以下步骤:
步骤A1、在主节点的bloom filter中查找所述的key是否存在,如果是,则执行步骤A2,如果否,则同时执行步骤A3与A4;
步骤A2、查找key是否在当前的存储器节点中,如果是,则执行步骤A5,如果否则执行步骤A3;
步骤A3、根据存储器节点IP,将key及对应的值value写入到存储器节点中,之后结束操作;
步骤A5、将key及对应的value发送到磁盘节点,然后执行步骤A6;
步骤A6、判断磁盘节点日志缓存区log cache是否已满,若是,则执行步骤A7后执行步骤A8,若否,则直接执行步骤A8;
步骤A7、将当前log cache的内容写入到磁盘中,清空log cache;
步骤A8、将key及对应的value写入log cache中,之后结束操作;
所述读取模块具体用于执行以下步骤:
步骤B1、在主节点的bloom filter中查找所述的key是否存在,如果是,则执行步骤B2,如果否,则执行步骤B4;
步骤B2、根据存储器节点IP查找key是否在当前的存储器节点中,如果是,则执行步骤B3,如果否,则执行步骤B4;
步骤B3、返回key及对应的值value;
步骤B4、返回key不存在;
所述删除模块具体用于执行以下步骤:
步骤C1、在主节点的bloom filter中查找所述的key是否存在,如果是,则执行步骤C2,如果否,则执行步骤C5;
步骤C2、根据存储器节点IP查找key是否在当前的存储器节点中,如果是,则同时执行步骤C3以及步骤C4,如果否,则执行步骤C5;
步骤C3、删除存储器节点中的key及对应的值value;
步骤C4、删除磁盘节点中的key及对应的值value;
步骤C5、返回key不存在。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳信息职业技术学院,未经深圳信息职业技术学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410077069.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:数据存储系统
- 下一篇:一种文件的存储方法、装置及服务器