一种基于rockadb存储引擎增大内存的方法及系统技术方案

技术编号:32778442 阅读:8 留言:0更新日期:2022-03-23 19:35
本发明专利技术公开了一种基于rockadb存储引擎增大内存的方法及系统,属于云计算存储领域;所述的S1利用内存池和内存池管理机制维护内存中的数据;S2利用自适应基数树索引将内存存储区中的数据替换原有的索引结构;S3利用修改后的预写管理系统对多日志文件进行管理实现其恢复功能;S4将内存存储区的数据进行落盘操作的功能,并对生成的SST文件进行管理;本发明专利技术的目的是提供一种基于rockadb存储引擎增大内存的方法及系统,在增大rocksdb存储引擎中内存的存储数据量的同时,要对rocksdb系统中的各个子系统进行适配和调整,以实现增大内存,提高存储引擎性能的目标。高存储引擎性能的目标。高存储引擎性能的目标。

【技术实现步骤摘要】
一种基于rockadb存储引擎增大内存的方法及系统


[0001]本专利技术公开一种基于rockadb存储引擎增大内存的方法及系统,涉及云计算存储


技术介绍

[0002]在这个高速发展的时代,互联网技术得到进一步发展。信息技术对社会经济有着显著的促进作用,而信息技术中的奠基石则是数据库技术,它是信息存储的载体。传统的磁盘数据库在数据库技术中一直扮演着重要的角色,并且在传统的OLTP场景中也取得了不错的成绩。然而,人们对应用响应速度的要求越来越高,在许多高实时性的场景下,传统的磁盘数据库表现得不尽人意。伴随着内存技术的发展,内存的容量越来越大,价格也越来越低,其优越的存取速度使得内存数据库开始在各种场景中被大量应用。内存容量不断提高,价格不断下跌,操作系统已经可以支持更大的地址空间(计算机进入了64位时代),同时对数据库系统实时响应能力要求日益提高,充分利用内存技术提升数据库性能成为一个热点。
[0003]但是目前内存数据库依旧存在着诸多亟待解决的问题,包括数据安全性、系统快速恢复和疯狂占用内存等问题。同时还要对现在的各个不同系统、不同环境进行适配。为了增大内存以求得更快的存储和读取速度,就不得不考虑易失性内存本身得缺陷,譬如易失性、系统安全性、成本的权衡。
[0004]故先专利技术一种基于rockadb存储引擎增大内存的方法及系统以解决上述问题。

技术实现思路

[0005]本专利技术针对现有技术的问题,提供一种基于rockadb存储引擎增大内存的方法及系统,所采用的技术方案为:一种基于rockadb存储引擎增大内存的方法,所述的方法具体步骤如下:
[0006]S1利用内存池和内存池管理机制维护内存中的数据;
[0007]S2利用自适应基数树索引将内存存储区中的数据替换原有的索引结构;
[0008]S3利用修改后的预写管理系统对多日志文件进行管理实现其恢复功能;
[0009]S4将内存存储区的数据进行落盘操作的功能,并对生成的SST文件进行管理。
[0010]所述S1利用内存池和内存池管理机制维护内存中的数据的具体步骤如下:
[0011]S101通过内存池根据数据库当前的数据量进行自适应;
[0012]S102通过内存存储区对内存池的数据进行存储管理。
[0013]所述S2利用自适应基数树索引将内存存储区中的数据替换原有的索引结构的具体步骤如下:
[0014]S201利用自适应基数树的数据结构作为内存存储区数据的索引;
[0015]S202将内存存储区的每条数据的地址和长度作为自适应基数树索引的叶子节点;
[0016]S203通过索引找到对应的叶子节点,通过叶子节点找到数据;
[0017]S204使用数据库通用的结构对自适应基数树的进行适配。
[0018]所述S3利用修改后的预写管理系统对多日志文件进行管理实现其恢复功能的具体步骤如下:
[0019]S301通过部件改造对多预写日志文件进行管理;
[0020]S302将预写日志系统的全部文件恢复到内存存储区中。
[0021]所述S4将内存存储区的数据进行落盘操作的功能,并对生成的SST文件进行管理的具体步骤如下:
[0022]S401内存存储区中的数据按照顺序落盘到SST并对SST进行切分,将SST加入到level1中;
[0023]S402将增大内存的存储引擎切换为rocksdb存储引擎。
[0024]一种基于rockadb存储引擎增大内存的系统,所述的系统具体包括内存存储模块、ART索引模块、预写日志模块和SST数据落盘模块:
[0025]内存存储模块:利用内存池和内存池管理机制维护内存中的数据;
[0026]ART索引模块:利用自适应基数树索引将内存存储区中的数据替换原有的索引结构;
[0027]预写日志模块:利用修改后的预写管理系统对多日志文件进行管理实现其恢复功能;
[0028]SST数据落盘模块:将内存存储区的数据进行落盘操作的功能,并对生成的SST文件进行管理。
[0029]所述内存存储模块具体包括自适应模块和存储管理模块:
[0030]自适应模块:通过内存池根据数据库当前的数据量进行自适应;
[0031]存储管理模块:通过内存存储区对内存池的数据进行存储管理。
[0032]所述ART索引模块具体包括索引建立模块、节点建立模块、数据索引模块和索引适配模块:
[0033]索引建立模块:利用自适应基数树的数据结构作为内存存储区数据的索引;
[0034]节点建立模块:将内存存储区的每条数据的地址和长度作为自适应基数树索引的叶子节点;
[0035]数据索引模块:通过索引找到对应的叶子节点,通过叶子节点找到数据;
[0036]索引适配模块:使用数据库通用的结构对自适应基数树的进行适配。
[0037]所述预写日志模块具体包括文件管理模块和文件恢复模块:
[0038]文件管理模块:通过部件改造对多预写日志文件进行管理;
[0039]文件恢复模块:将预写日志系统的全部文件恢复到内存存储区中。
[0040]所述SST数据落盘模块具体包括数据切分模块和引擎切换模块:
[0041]数据切分模块:内存存储区中的数据按照顺序落盘到SST并对SST进行切分,将SST加入到level1中;
[0042]引擎切换模块:将增大内存的存储引擎切换为rocksdb存储引擎。
[0043]本专利技术的有益效果为:本专利技术的实现方法所具有的有益效果如下:
[0044]存储引擎中的内存增大,加快了最新数据读取和写入;大量数据缓存在内存中,读取过程中,减少了读文件的次数,可以有效提高存储引擎整体的读性能;缓存在内存中的大
量数据,可以一次性写入到SST,并且生成的多个SST文件可以保证有序性,相比之前生成无序SST文件的情况,可以减少compaction的次数和复杂度,从而间接提高内存引擎的写入速度;
[0045]内存浪费小;利用ART索引结构,可以自适应分配合理的内存空间,不会出现预分配内存导致空间浪费的情况,从而减少内存空间的浪费;
[0046]充分利用了空间局部性和时间局部性;通过内存存储区的缓冲池和缓冲池管理机制,将数据有序、紧凑的存储到相应的缓冲池中,可以有效地利用空间局部性和时间局部性,从而提高存储引擎地加载和存储的性能;
[0047]数据安全且可恢复;通过改造rocksdb存储引擎的logs,实现了多文件的预写日志系统,从而保证内存数据的安全性;
[0048]引擎的可切换性高。由于SST文件格式与之前保持不变,所以SST文件可以很方便的加载到rocksdb存储引擎中。
附图说明
[0049]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于rockadb存储引擎增大内存的方法,其特征是所述的方法具体步骤如下:S1利用内存池和内存池管理机制维护内存中的数据;S2利用自适应基数树索引将内存存储区中的数据替换原有的索引结构;S3利用修改后的预写管理系统对多日志文件进行管理实现其恢复功能;S4将内存存储区的数据进行落盘操作的功能,并对生成的SST文件进行管理。2.根据权利要求1所述的方法,其特征是所述S1利用内存池和内存池管理机制维护内存中的数据的具体步骤如下:S101通过内存池根据数据库当前的数据量进行自适应;S102通过内存存储区对内存池的数据进行存储管理。3.根据权利要求2所述的方法,其特征是所述S2利用自适应基数树索引将内存存储区中的数据替换原有的索引结构的具体步骤如下:S201利用自适应基数树的数据结构作为内存存储区数据的索引;S202将内存存储区的每条数据的地址和长度作为自适应基数树索引的叶子节点;S203通过索引找到对应的叶子节点,通过叶子节点找到数据;S204使用数据库通用的结构对自适应基数树的进行适配。4.根据权利要求3所述的方法,其特征是所述S3利用修改后的预写管理系统对多日志文件进行管理实现其恢复功能的具体步骤如下:S301通过部件改造对多预写日志文件进行管理;S302将预写日志系统的全部文件恢复到内存存储区中。5.根据权利要求4所述的方法,其特征是所述S4将内存存储区的数据进行落盘操作的功能,并对生成的SST文件进行管理的具体步骤如下:S401内存存储区中的数据按照顺序落盘到SST并对SST进行切分,将SST加入到level1中;S402将增大内存的存储引擎切换为rocksdb存储引擎。6.一种基于rockadb存储引擎增大内存的系统,其特征是...

【专利技术属性】
技术研发人员:王泽坤
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

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

1