[发明专利]一种哈希分区管理方法及装置在审
申请号: | 201310303609.1 | 申请日: | 2013-07-18 |
公开(公告)号: | CN104298687A | 公开(公告)日: | 2015-01-21 |
发明(设计)人: | 朱国云;王玉法;赵恒;杨成虎;侯凤林 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 解婷婷;栗若木 |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分区 管理 方法 装置 | ||
技术领域
本申请涉及分布式存储技术,尤指一种哈希分区管理方法及装置。
背景技术
哈希分区(hash partition)是哈希(hash)在数据库中一个简单的应用,哈希分区的原理就是,利用hash函数对某个键值(key)进行hash运算,然后根据hash值确定哈希分区将其分布到分布式存储系统中不同的数据节点上。现有哈希分区的方法对Key在各数据节点上的分布随意,确保了数据在预先确定数目的分区中的平均分布。
发明内容
为了解决上述技术问题,本申请提供了一种哈希分区管理方法及装置,能够保证Key在各数据节点上的分布具有针对性,从而提高哈希分区的管理效率。
为了达到本申请目的,本申请提供一种哈希分区管理方法,包括:确定键值Key中包含有范围关键信息;
对范围关键信息进行哈希运算,并根据得到的哈希值进行哈希分区。
所述Key包括Key前缀和Key后缀;其中,
所述范围关键信息为key前缀,用于区分不同的范围;
Key后缀是不同的Key的值。
所述key的数据结构包括:
用于表明所述Key的长度的Key的总长度字段;
用于表明所述Key前缀的长度的Key前缀长度字段;以及,
用于携带Key的值的Key值字段。
所述确定Key中包含有范围关键信息包括:判断所述Key的Key前缀长度字段的取值是否大于0,如果大于0,则确定所述Key中包含有范围关键信息。
该方法还包括:如果所述Key的Key前缀长度字段的取值不大于0,则确定所述Key中未包含范围关键信息。
所述对范围关键信息进行哈希运算,并根据得到的哈希值进行哈希分区包括:
对所述key的key前缀进行哈希hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区;
根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将所述Key的Key后缀写入找到的数据节点。
该方法还包括:对整个所述key进行hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区;
根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将该Key的值写入找到的数据节点。
当进行范围查找时,该方法还包括:
判断所述范围查找的范围下限Key和范围上限Key中是否均包含有Key前缀:判断范围下限Key中包含的Key前缀,与范围上限Key中包含的Key前缀是否一致,如果判断出范围下限Key和范围上限Key中均包含有Key前缀且二者一致,则,
对所述Key前缀进行hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区,再根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点。
所述范围下限Key和范围上限Key中是否均包含有Key前缀包括:
如果所述范围下限Key和范围上限Key的Key前缀长度字段的取值均大于0,则确定范围下限Key和范围上限Key中均包含有Key前缀。
如果判断出所述范围下限Key和范围上限Key中有一个或者两个都不包含Key前缀,或者都包含但是二者不一致,该方法还包括:
返回查询失败,或者按照现有的范围查询方法进行查询。
本申请还提供一种哈希分区管理装置,包括判断模块,及分区模块;其中,判断模块,用于确定Key中包含有范围关键信息,向分区模块发送第一通知;
分区模块,用于接到第一通知,对范围关键信息进行哈希运算,并根据得到的哈希值进行哈希分区。
所述判断模块,具体用于判断所述Key的Key前缀长度字段的取值是否大于0,如果大于0,则确定所述Key中包含有范围关键信息,向分区模块发送第一通知;
所述分区模块,具体用于接收来自判断模块的第一通知,对所述key的key前缀进行哈希hash运算,并将得到的hash值对系统中最大的分区值进行取模运算,得到该key落入的分区;根据系统中的分区与数据节点的对应关系找到该分区所在的数据节点,并将所述Key的Key后缀写入找到的数据节点。
所述判断模块,还用于在判断出所述Key的Key前缀长度字段的取值不大于0,则确定所述Key中未包含范围关键信息,向分区模块发送第二通知;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310303609.1/2.html,转载请声明来源钻瓜专利网。