System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于动态前缀的层级B+树算法、装置及计算机存储介质制造方法及图纸_技高网

基于动态前缀的层级B+树算法、装置及计算机存储介质制造方法及图纸

技术编号:40561408 阅读:10 留言:0更新日期:2024-03-05 19:24
本发明专利技术公开了基于动态前缀的层级B+树算法、装置及计算机存储介质,所述的算法包括:在进行KV数据写入操作时;查询B+树数据库中各B+树的当前叶子节点,判断是否存在与新写入的KV数据的key具有相同前缀的叶子节点;若判断结果为是,则针对具有相同前缀的叶子节点做节点变换操作,将具有相同前缀的叶子节点变换为公共前缀节点,若判断结果为否,则将新写入的KV数据存储在对应B+树的叶子节点上;基于公共前缀节点生成新的B+树,存储具有相同前缀叶子节点的KV数据和新写入的KV数据。本发明专利技术在B+树中引入公共前缀节点,将KV数据中key的具有相同前缀部分写入一次,即可为具有相同前缀key的KV数据所共同引用,极大的降低了KV数据写入磁盘占用的磁盘空间。

【技术实现步骤摘要】

本专利技术涉及数据存储,具体的涉及基于动态前缀的层级b+树算法、装置及计算机存储介质。


技术介绍

1、b+树数据库:以b+树数据结构来创建的数据库,是一种持久化数据库,能提供高效地写入/查询/更新/删除的能力。

2、磁盘存储领域,b+树数据库是一种支持高性能读写,并支持range查询的技术。b+树数据库存储数据时,key会写入到b+树的索引,而value会写入到内存某一块,同时会在适当时机写入到磁盘中。不同的key会在b+树上生成不同的节点,同一个key则只会使用同一个节点,在数据修改时更新value即可。当key的长度较大,而value较小的时候,磁盘空间大小主要取决于key的长度和key的数量。而此时如果有大量的key是有公共前缀时,这些大量有公共前缀的key写入到磁盘中,对磁盘的空间占用是显著的。

3、有鉴于此,特提出本专利技术专利。


技术实现思路

1、为了解决b+树在key较长且有大量公共前缀的key而value较小的时候,占用磁盘较大的问题,本专利技术提供基于动态前缀的层级b+树算法、装置及计算机存储介质,具体地,采用了如下技术方案:

2、基于动态前缀的层级b+树算法,包括:

3、在进行kv数据写入操作时;

4、查询b+树数据库中各b+树的当前叶子节点,判断是否存在与新写入的kv数据的key具有相同前缀的叶子节点;

5、若判断结果为是,则针对具有相同前缀的叶子节点做节点变换操作,将具有相同前缀的叶子节点变换为公共前缀节点,若判断结果为否,则将新写入的kv数据存储在对应b+树的叶子节点上;

6、基于公共前缀节点生成新的b+树,存储具有相同前缀叶子节点的kv数据和新写入的kv数据。

7、作为本专利技术的可选实施方式,本专利技术的基于动态前缀的层级b+树算法中,所述查询b+树数据库中各b+树的当前叶子节点,判断是否存在与新写入的kv数据的key具有相同前缀的叶子节点包括:

8、预设公共前缀节点中key的字节数为n;

9、获取新写入kv数据中key的前n位字节,查询b+树数据库中各b+树的当前叶子节点的前n位字节,进行比对;

10、若新写入kv数据的key的前n位字节与b+树中当前叶子节点的前n位字节相同,则b+树中存在与新写入的kv数据的key具有相同前缀的叶子节点;

11、可选地,所述的n≥8byte。

12、作为本专利技术的可选实施方式,本专利技术的基于动态前缀的层级b+树算法中,所述针对具有相同前缀的叶子节点做节点变换操作,将具有相同前缀的叶子节点变换为公共前缀节点包括:

13、所述公共前缀节点的key存储叶子节点中的key与新写入kv数据中的key的相同前缀字节部分,所述公共前缀节点存储的value为key的相同前缀字节部分所对应的value;

14、可选地,若key的相同前缀字节部分所对应的value不存在,则公共前缀节点存储的value为0。

15、作为本专利技术的可选实施方式,本专利技术的基于动态前缀的层级b+树算法中,所述基于公共前缀节点生成新的b+树,存储具有相同前缀叶子节点的kv数据和新写入的kv数据包括:

16、基于所述公共前缀节点生成新的b+树;

17、所述新的b+树具有新的根节点,所述具有相同前缀叶子节点基于新的根节点创建新的叶子节点,新的叶子节点的key为除去相同前缀字节后剩余字节部分,value为相同前缀叶子节点的原value;

18、新写入的kv数据基于新的根节点创建叶子节点,叶子节点的key为除去相同前缀字节后剩余字节部分,叶子节点的value为kv数据的value。

19、作为本专利技术的可选实施方式,本专利技术的基于动态前缀的层级b+树算法,包括:

20、在进行kv数据写入操作时;

21、查询b+树数据库中各b+树是否存在与新写入kv数据的key前n位字节相同的公共前缀节点,若存在,则将新写入的kv数据直接存储在公共前缀节点下的b+树中,若不存在,则将新写入的kv数据存储在非公共前缀节点下的b+树对应的叶子节点上。

22、作为本专利技术的可选实施方式,本专利技术的基于动态前缀的层级b+树算法,包括:

23、在进行数据查询操作时;

24、判断查询key的字节长度是否大于等于n;

25、若判断结果为否,则递归查询b+树数据库中第0层b+树的分支节点/叶子节点,并返回查询结果,若判断结果为是,则查询b+树数据库中是否存在与查询key具有相同前缀的公共前缀节点,并基于公共前缀节点下的b+树进行查询,返回查询结果。

26、作为本专利技术的可选实施方式,本专利技术的基于动态前缀的层级b+树算法,包括:

27、若判断查询key的字节长度小于n,则递归查询b+树数据库中第0层b+树的分支节点,若分支节点查询成功,则通过分支节点定位到叶子节点,则将查询到的叶子节点的value数据返回,若分支节点查询失败,则返回查询失败;

28、若判断查询key的字节长度大于等于n,则根据查询key的前n个字符查询是否存在公共前缀节点:若存在公共前缀节点,则判断查询key除去前n个字符后的剩余字符的长度是否为0,若判断结果为是,则返回公共前缀节点对应的value,若判断结果为否,则根据查询key除去前n个字符后的剩余字符部分继续递归查询公共前缀节点下b+树中的分支节点/叶子节点,并返回查询结果;

29、若不存在公共前缀节点,则返回递归查询查询b+树数据库中第0层各b+树的所有叶子节点分支节点/叶子节点,并返回查询结果。

30、作为本专利技术的可选实施方式,本专利技术的基于动态前缀的层级b+树算法,包括:

31、在进行数据删除操作时;

32、根据删除key通过查询操作查询b+树数据库中各b+树的对应节点;

33、如果查询的节点是叶子节点,则删除该叶子节点,然后做b+树的平衡;

34、如果查询的节点是公共前缀节点下b+树的叶子节点,则删除该叶子节点,并检查对应的公共前缀节点下b+树包含的元素数目,如果大于等于2则不操作,如果小于2,则将该公共前缀节点变换调整为所属b+树的叶子节点。

35、本专利技术同时提供一种基于动态前缀的层级b+树装置,包括:

36、数据写入模块,在进行kv数据写入操作时;

37、查询模块,查询b+树数据库中各b+树的当前各叶子节点,判断是否存在与新写入的kv数据的key具有相同前缀的叶子节点;

38、公共前缀节点模块,若判断结果为是,则针对具有相同前缀的叶子节点做节点变换操作,将具有相同前缀的叶子节点变换为公共前缀节点,若判断结果为否,则将新写入的kv数据存储在对应b+树的叶子节点上,基于公共前缀节点生成新的b+树,存储具有相同前缀叶子节点的kv数据和新写入的kv数据。

39、本专利技术同本文档来自技高网...

【技术保护点】

1.基于动态前缀的层级B+树算法,其特征在于,包括:

2.根据权利要求1所述的基于动态前缀的层级B+树算法,其特征在于,所述查询B+树数据库中各B+树的当前叶子节点,判断是否存在与新写入的KV数据的key具有相同前缀的叶子节点包括:

3.根据权利要求2所述的基于动态前缀的层级B+树算法,其特征在于,所述针对具有相同前缀的叶子节点做节点变换操作,将具有相同前缀的叶子节点变换为公共前缀节点包括:

4.根据权利要求3所述的基于动态前缀的层级B+树算法,其特征在于,所述基于公共前缀节点生成新的B+树,存储具有相同前缀叶子节点的KV数据和新写入的KV数据包括:

5.根据权利要求2所述的基于动态前缀的层级B+树算法,其特征在于,包括:

6.根据权利要求2-5任意一项所述的基于动态前缀的层级B+树算法,其特征在于,包括:

7.根据权利要求6所述的基于动态前缀的层级B+树算法,其特征在于,包括:

8.根据权利要求6所述的基于动态前缀的层级B+树算法,其特征在于,包括:

9.基于动态前缀的层级B+树装置,其特征在于,包括:

10.一种计算机可读存储介质,其特征在于,存储有计算机可执行程序,所述计算机可执行程序被执行时,实现如权利要求1-8任意一项所述的基于动态前缀的层级B+树算法。

...

【技术特征摘要】

1.基于动态前缀的层级b+树算法,其特征在于,包括:

2.根据权利要求1所述的基于动态前缀的层级b+树算法,其特征在于,所述查询b+树数据库中各b+树的当前叶子节点,判断是否存在与新写入的kv数据的key具有相同前缀的叶子节点包括:

3.根据权利要求2所述的基于动态前缀的层级b+树算法,其特征在于,所述针对具有相同前缀的叶子节点做节点变换操作,将具有相同前缀的叶子节点变换为公共前缀节点包括:

4.根据权利要求3所述的基于动态前缀的层级b+树算法,其特征在于,所述基于公共前缀节点生成新的b+树,存储具有相同前缀叶子节点的kv数据和新写入的kv数据包括:<...

【专利技术属性】
技术研发人员:洪定乾徐锐波幸福卢文伟刘方
申请(专利权)人:北京云思智学科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1