[发明专利]一种内存数据库KV存储引擎索引的创建方法有效

专利信息
申请号: 202011201566.2 申请日: 2020-11-02
公开(公告)号: CN112269786B 公开(公告)日: 2023-02-03
发明(设计)人: 梁波;孙思清;张炜刚;贾德星;张晖;高传集 申请(专利权)人: 浪潮云信息技术股份公司
主分类号: G06F16/22 分类号: G06F16/22;G06F16/23;G06F16/2458;G06F16/27
代理公司: 济南信达专利事务所有限公司 37100 代理人: 郗艳荣
地址: 250100 山东省济南市高*** 国省代码: 山东;37
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 内存 数据库 kv 存储 引擎 索引 创建 方法
【权利要求书】:

1.一种内存数据库KV存储引擎索引的创建方法,其特征在于:首先在CockroachDB数据库插入ART树,并在ART树的叶子节点增加双向链表,然后基于ART树获取大于某key的节点,并计算出待插入key值对应的插入位置,将待插入key值对应的节点插入到双向链表中,最后遍历Key值范围即可;

用curnode变量表示当前处理节点,用leaf表示记录封装到新建的叶子节点,所述ART树插入流程,包括以下步骤:

第一步,将curnode变量设为ART树根节点;

第二步,将curnode变量指向节点加锁,判断curnode变量指向节点中是否存在key值的相应子节点,即curnode变量指向节点所在层数作为key值的byte数组下缀,得到的byte值在该节点是否有指针;

第三步,如果curnode变量指向节点所在层数与key值byte数组长度一致,先将curnode变量指向节点加锁,将leaf挂载到curnode变量指向节点相应的子节点指针位置,最后将curnode变量指向节点解锁,跳转到第六步;

第四步,如果curnode变量指向节点存在相应子节点,将curnode变量指向节点解锁的同时将curnode变量设为curnode变量指向节点对应的子节点,返回第二步;

第五步,如果curnode变量指向节点不存在相应子节点,先将curnode变量指向节点加锁,创建内部节点inode,并将inode节点挂载到curnode变量指向节点相应子节点指针位置,最后将curnode变量指向节点解锁的同时将curnode变量指向节点置为inode节点,返回第二步;

第六步,结束并返回。

2.根据权利要求1所述的内存数据库KV存储引擎索引的创建方法,其特征在于:所述双向链表按照CockroachDB定义的key排序规则进行排序,而不是基于字节序的排序规则。

3.根据权利要求1所述的内存数据库KV存储引擎索引的创建方法,其特征在于:所述ART树插入是在ART树上创建该记录对应的叶子节点,且ART树使用乐观锁机制,每次curnode变量指向节点解锁失败都返回第一步开始重新执行。

4.根据权利要求3所述的内存数据库KV存储引擎索引的创建方法,其特征在于:用curnode变量表示当前处理节点,ART树获取大于某key的节点算法,包括以下步骤:

第一步,将curnode变量设为ART树根节点;

第二步,将curnode变量指向节点以及curnode变量指向节点所在层数作为key值的byte数组下缀得到的byte值存入栈中,并将curnode变量指向节点加锁;

第三步,如果curnode变量指向节点为叶子节点,比较叶子节点key值与查询key值的大小,如果叶子节点key值大于查询key值,则解锁curnode变量指向节点并返回该叶子节点,流程结束;否则,跳转到第六步;

第四步,如果curnode变量指向节点所在层数与key值byte数组长度一致,则跳转到第六步;

第五步,判断curnode变量指向节点中是否存在key值的相应前缀,即curnode变量指向节点所在层数作为key值的byte数组下缀,得到的byte值;

如果curnode变量指向节点存在相应前缀,将curnode变量指向节点解锁的同时将curnode变量设为curnode变量指向节点对应的子节点,返回第二步;

如果curnode变量指向节点不存在相应前缀,将curnode变量指向节点以及curnode变量指向节点所在层数作为key值的byte数组下缀得到的byte值存入栈中,解锁curnode变量指向节点;

第六步,从栈中弹出curnode变量指向节点和byte值,并将curnode变量指向节点加锁;

第七步,在curnode变量指向节点中查找大于该byte值的子节点,如果没有找到,则curnode变量指向节点解锁并返回第八步;如果找到,则curnode变量指向节点解锁的同时将curnode变量设为curnode变量指向节点的该子节点;

第八步,判断curnode变量指向节点是否为叶子节点,若是,则返回该叶子节点,流程结束;若不是,则返回第七步。

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

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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