[发明专利]一种面向Key-Value存储系统的索引查询方法和系统有效

专利信息
申请号: 201611114427.X 申请日: 2016-12-07
公开(公告)号: CN106777003B 公开(公告)日: 2020-04-03
发明(设计)人: 孙辉;陈国栋;徐殷 申请(专利权)人: 安徽大学
主分类号: G06F16/22 分类号: G06F16/22
代理公司: 合肥市长远专利代理事务所(普通合伙) 34119 代理人: 屈科辉;傅磊
地址: 230000*** 国省代码: 安徽;34
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 面向 key value 存储系统 索引 查询 方法 系统
【权利要求书】:

1.一种面向Key-Value存储系统的索引查询方法,其特征在于,所述方法包括以下步骤:

S1、获取Key-Value键值数据项存入block中,并根据block节点生成前缀完全二叉树,其中,所述前缀完全二叉树包含真实节点和虚拟节点;

S2、获取用户输入的需要检索的key值,并根据所述前缀完全二叉树高度确定所述key值需要运用的位数k,其中所述key值数制为二进制;

S3、获取所述key值的前k位,从所述key值前k位中第一位开始遍历,检索到所述key值前k位中第一个“1”,并记录所述第一个“1”前的位数j,其中j,k初始值均为1;

S4、判断j是否小于k,如果j小于k,则得到目标结果i,执行S5,其中i=2j,所述i表示block序号;如果j不小于k,则得到目标结果i,执行S6,其中i=2k-1-1,所述i表示block序号;

S5、从所述key值第j+2位即第一个“1”的后一位开始往后循环检索,当检索到“1”时,则将所述目标结果i值改变为2×(i+1);否则,将所述i值改变为2×i+1;直到位数j等于k时,停止检索并得到目标结果i,执行S6;

S6、通过所述目标结果i的值,在前缀完全二叉树中检索到对应的block节点block[i],判断所述block[i]是否为虚拟节点,当判断结果为否时输出所述目标结果i的值,当判断结果为是时则将所述k值减1后执行S3,直到k=0。

2.根据权利要求1所述的面向Key-Value存储系统的索引查询方法,其特征在于,在S1中,根据block节点生成前缀完全二叉树,具体包括:

S11、初始生成一个block节点作为根节点,并设置该block前缀为0;将获取的键值数据项逐个存入所述节点;

S12、将获取的键值数据项逐个存入所述节点,当所述节点容量达到上限时,将所述节点分裂为两个子block节点,并根据前缀树规则为所述两个子block节点设置相应的前缀,然后将所述两个子block节点的父节点内的键值数据项逐个取相应位数的前缀与所述两个子block节点前缀匹配,若匹配成功,则将所述键值数据项存入所述两个子block节点中,重复该操作,直到将父节点所有键值数据项存入到相应的子节点中,此时父节点变空,继续向前缀树中添加键值数据项,直到所有键值数据项存入所述前缀树中;

S13、通过使用虚拟节点补全所述前缀树使其成为一棵前缀完全二叉树。

3.一种面向Key-Value存储系统的索引查询系统,其特征在于,所述系统包括:

生成模块,用于将获取的Key-Value键值数据项存入block中,并根据block节点生成前缀完全二叉树,其中,所述前缀完全二叉树包含真实节点和虚拟节点;

获取模块,用于获取用户输入的需要检索的key值,并根据生成模块生成的前缀完全二叉树高度确定所述key值需要运用的位数k,其中所述key值数制为二进制;

遍历模块,用于获取所述key值的前k位,从所述key值前k位中第一位开始遍历,检索到所述key值前k位中第一个“1”,并记录所述第一个“1”前的位数j,其中j,k初始值均为1;

第一判断模块,用于判断j是否小于k,如果j小于k,则得到目标结果i并将所述目标结果i发送到循环检索模块,其中i=2j,所述i表示block序号;如果j不小于k,则得到目标结果i并将所述目标结果i发送到第二判断模块,其中i=2k-1-1,所述i表示block序号;

循环检索模块,用于从所述key值第j+2位即第一个“1”的后一位开始往后循环检索,当检索到“1”时,则将所述i值改变为2×(i+1);否则,将所述i值改变为2×i+1;直到位数j等于k时,停止检索并得到目标结果i,将目标结果i发送到第二判断模块;

第二判断模块,用于通过所述目标结果i的值,在前缀完全二叉树中检索到对应的block节点blcok[i],判断所述block[i]是否为虚拟节点,当判断结果为否时输出所述目标结果i的值,当判断结果为是时则将所述k值减1后,将k值发送到遍历模块,直到k=0。

4.根据权利要求3所述的面向Key-Value存储系统的索引查询系统,其特征在于,所述生成模块,具体包括:根节点生成模块、父节点分裂模块、虚拟节点补全模块;

根节点生成模块,用于初始生成一个block节点作为根节点,并设置该block前缀为0;

父节点分裂模块,用于将获取的键值数据项逐个存入所述节点,当所述节点容量达到上限时,将所述节点分裂为两个子block节点,并根据前缀树规则为所述两个子block节点设置相应的前缀,然后将所述两个子block节点的父节点内的键值数据项逐个取相应位数的前缀与所述两个子block节点前缀匹配,若匹配成功,则将所述键值数据项存入所述两个子block节点中,重复该操作,直到将父节点所有键值数据项存入到相应的子节点中,此时父节点变空,继续向前缀树中添加键值数据项,直到所有键值数据项存入所述前缀树中;

虚拟节点补全模块,用于通过使用虚拟节点补全所述前缀树使其成为一棵前缀完全二叉树。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于安徽大学,未经安徽大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201611114427.X/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top