[发明专利]一种内存数据库KV存储引擎索引的创建方法有效
申请号: | 202011201566.2 | 申请日: | 2020-11-02 |
公开(公告)号: | CN112269786B | 公开(公告)日: | 2023-02-03 |
发明(设计)人: | 梁波;孙思清;张炜刚;贾德星;张晖;高传集 | 申请(专利权)人: | 浪潮云信息技术股份公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/23;G06F16/2458;G06F16/27 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 郗艳荣 |
地址: | 250100 山东省济南市高*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 数据库 kv 存储 引擎 索引 创建 方法 | ||
本发明特别涉及一种内存数据库KV存储引擎索引的创建方法。该内存数据库KV存储引擎索引的创建方法,首先在CockroachDB数据库插入ART树,并在ART树的叶子节点增加双向链表,然后基于ART树获取大于某key的节点,并计算出待插入key值对应的插入位置,将待插入key值对应的节点插入到双向链表中,最后遍历Key值范围即可。该内存数据库KV存储引擎索引的创建方法,通过在ART树的叶子节点增加双向链表,实现了key值范围遍历的快速响应以及对CockroachDB的排序规则的支持;通过ART树使用乐观锁机制、双向链表使用CAS无锁算法的方式保证了插入/查询操作时的高性能以及数据的一致性。
技术领域
本发明涉及数据库技术领域,特别涉及一种内存数据库KV存储引擎索引的创建方法。
背景技术
近年来,随着动态随机存储器(DRAM)容量的上升和单位价格的下降,使大量数据在内存中的存储和处理成为可能,Redis、Memcached等内存数据库管理软件逐渐成熟,应用范围越来越广。
内存数据库(MMDB:Main Memory Database,也叫主存数据库),就是将数据全部或者大部分放在内存中进行操作的数据库管理系统,对查询处理、并发控制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU周期和内存。由于内存数据库与传统的磁盘数据库在设计和架构上都大不相同,所以传统的数据库索引不适用于内存数据库。
CockroachDB是一款开源的分布式数据库,具有NoSQL对海量数据的存储管理能力,又保持了传统数据库支持的ACID和SQL等,还支持跨地域、去中心、高并发、多副本强一致和高可用等特性。支持OLTP场景,同时支持轻量级OLAP场景。
CockroachDB使用rocksdb作为KV存储引擎,rocksdb不是内存存储引擎。如果将CockroachDB改造成内存数据库,需要研发替代rocksdb的KV内存存储引擎。ART树在目前流行的几种内存数据库索引中,具备最好的性能。因此,使用基于ART树构建的KV 内存存储引擎会具备很好的性能优势。
存储引擎主要用作存储数据、为存储的数据建立索引、更新、查询数据等技术的实现方法。KV存储引擎是专门用于存储KV类型表数据的一种存储机制。
KV内存存储引擎是指使用内存作为存储数据介质的KV存储引擎。
ART(Adaptive Radix Tree,自适应基数/前缀树),是以二进制位串为关键字的trie 树,是一种多叉树形结构,同时又类似多层索引表,每个中间节点包含指向多个子节点的指针数组,叶子节点包含指向实际的对象的指针。中间节点根据长度的不同分成若干种不同类型,随着数据的变化而自行调整。
ART树节点所在层数:指从根节点开始每往下一移一层计数加一。根节点为第0层,根节点的子节点们为第1层。
ART树使用字节序作为key的排序规则,而CockroachDB使用自定义的key值排序规则,因此不能直接使用ART树的排序作为输出。并且在CockroachDB中大量使用scan 函数扫描特定范围内的所有key值,并通过迭代器循环获取,ART树的深度遍历不能直接提供对这种操作的支撑。具体来说,如果ART树叶子节点的迭代器使用树的深度遍历算法,需要从根节点到该叶子节点的路径信息。由于ART树不断更新,内部节点可能会扩展前缀成两层内部节点,如果迭代器一直保存着路径的每个内部节点,会导致迭代产生的下一个叶子节点不正确。因此,迭代器每次next时都需要重新计算根节点到叶子节点的路径,但这样产生大量的计算,性能较低。
同时,在高并发的场景下,如何保证并发插入/查询数据一致性和处理性能,都是在创建KV存储引擎索引时亟待解决的难题。
基于上述情况,本发明提出了一种内存数据库KV存储引擎索引的创建方法。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮云信息技术股份公司,未经浪潮云信息技术股份公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011201566.2/2.html,转载请声明来源钻瓜专利网。