当前位置: 首页 > 专利查询>山东大学专利>正文

基于LSM-Tree的压缩日志缓存方法及装置制造方法及图纸

技术编号:25835111 阅读:47 留言:0更新日期:2020-10-02 14:16
本发明专利技术公开了一种基于LSM‑Tree的压缩日志缓存方法及装置,基于LSM‑tree在LevelDB的实现,提出了多层压缩日志缓存(Compact Log Buffer)架构,保留了LevelDB原有的LSM结构的优点,结合LSM‑tree的日志归并树结构,在原有日志结构之外设计了用于管理压缩过程(Compaction)的日志缓存,从而实现了对“major Compaction”的分层控制和统一管理,有效的缓解了当前基于LSM‑tree结构的存储方案固有的写放大问题。由于本发明专利技术提出的日志缓存方案维护成本极低,占用的内存和磁盘资源相对写入数据可以忽略不计,因此本发明专利技术的额外开销极低,可以有效的控制企业运行时的存储成本。

【技术实现步骤摘要】
基于LSM-Tree的压缩日志缓存方法及装置
本公开属于大规模存储系统的
,涉及一种基于LSM-Tree的压缩日志缓存方法及装置。
技术介绍
本部分的陈述仅仅是提供了与本公开相关的
技术介绍
信息,不必然构成在先技术。大规模存储系统是一个面向海量数据存储的计算机系统,随着数据规模的膨胀和分布式实现的要求,Key-Value存储方案在面对海量数据时表现出来的高效和快速使其越来越受到大规模存储系统的欢迎,而基于LSM-tree的Key-Value存储方案不但继承了KV方案的优点,而且以“日志结构归并树”(LSM-tree)的结构维护了KV记录的全局有序性,实现了很高的随机写入和不错的随机读取性能。虽然LSM-tree方案有着很耀眼的优势,但专利技术人在研发过程中发现该方案在“逻辑有序”的要求下,对磁盘IO做出了极大的妥协。由于有序性的要求,LSM-tree不得不通过一系列的策略对现存的有序数据进行排序和重新组织,实验证明为了维护一条记录在LSM-tree中的有序性,往往会触发15-20倍的实际磁盘写操作,LSM-tree长久以来面临了压缩造成的写放大(Compact-causedWriteAmplification)问题。LevelDB是一种被广泛认可的LSM-tree存储方案。如图1所示,LevelDB把存储空间分成了K层,每层的容量以10倍(默认状态下)进行递增,以此维护数据在磁盘上的顺序性和时序性,当LevelDB接收一次写操作时,这个写操作首先会被写在LevelDB的内存中的有序写缓存(MemTable,采用跳表实现)中,若缓存写成功,此次写操作立即返回成功;若缓存被写满,内存中会新生成一个可写的缓存接收接下来的写入,而内存中被写满的缓存转为只读,进而通过称为“minorCompaction”的策略以有序表(sstable)为单位直接刷写到磁盘中上述的第0层,完成落盘。随着写操作的不断累积,第0层的数据会超过LevelDB规定的阈值,此时会开始触发被称为“majorCompaction”的过程。此过程首先对当前所有层进行筛选,根据策略筛选出“目标层”即最应被压缩的层(leveli),从该层中选中一个或多个有序表(sstable);或者通过未命中标记(相对于读操作的优化)选中某层内的特定有序表,通过上述两种策略总能确定某一层的某个或多个有序表作为输入的一部分;接下来,根据选中有序表的关键字范围,从当前层的下一层(leveli+1)中选中与之关键字范围(KeyRange)重叠的所有有序表,至此一次“majorCompaction”的输入已经全部确定。随后,将选定的输入进行一次多路归并排序,将生成数据依次写入新的有序表,并依次放到当前层的下一层(leveli+1),并删除所有的输入有序表,即参与多路归并排序的过期有序表,至此一次“majorCompaction”结束。从LevelDB的实现机制可以看出,一条写入的记录从写入内存写缓存到刷写到第0层的有序表之前(即内存中的操作)这一阶段中是没有任何的写放大的,但LevelDB后台的“majorCompaction”策略会不断的对磁盘层面的有序表进行管理和组织,这个过程造成了极大的磁盘带宽占用,按照正常的策略,一旦出现达到阈值的数据层,后台的“majorCompaction”就会被不断地触发。更糟的是一条写入记录可能影响不止一次的压缩过程(Compaction),之前的研究表明LevelDB全局的写放大比例至少为1:50。由此可见,这种为了保证数据有序和均匀的策略是以牺牲大量磁盘资源为代价的。另外,为了保证后台的压缩过程正常进行,当写入数据流过于密集造成内存写缓存和磁盘管理进程难以招架时,LevelDB必须以一定程度上牺牲写入速度来换取后台操作的正常运行,当磁盘的数据规模十分庞大,这种牺牲的代价就会变得十分高昂。LevelDB由于其优秀的读写性能在很多领域被企业和机构广泛的应用,一些研究人员尝试通过修改压缩阈值或者用更高性能的存储设备来设法规避上述的问题,这些尝试在一些定制的领域面对一些特定的用户数据流时尚能起到作用,但并没有实质上解决写放大的问题,一旦用户数据流改变或者数据规模扩大到难以应对的局面,这种规避性质的策略会有失效的风险,甚至造成更大程度上的写放大和性能降级。
技术实现思路
针对现有技术中存在的不足,本公开的一个或多个实施例提供了一种基于LSM-Tree的压缩日志缓存方法及装置,基于LSM-tree在LevelDB的实现,提出了多层压缩日志缓存(CompactLogBuffer)架构,保留了LevelDB原有的LSM结构的优点,结合LSM-tree的日志归并树结构,在原有日志结构之外设计了用于管理压缩过程(Compaction)的日志缓存,从而实现了对“majorCompaction”的分层控制和统一管理,有效的缓解了当前基于LSM-tree结构的存储方案固有的写放大问题。由于本专利技术提出的日志缓存方案维护成本极低,占用的内存和磁盘资源相对写入数据可以忽略不计,因此本公开的额外开销极低,可以有效的控制企业运行时的存储成本。根据本公开的一个或多个实施例的一个方面,提供一种基于LSM-Tree的压缩日志缓存方法。一种基于LSM-Tree的压缩日志缓存方法,该方法包括:当一次压缩被触发且挑选出目标层的有序表和下一层的重叠有序表时,将其以有序表为单位加入到对应层预设的缓存区中;当缓存区的数据到达预设阈值时,进入下一步;挑选缓存区的有序表作为压缩过程的输入进行多路并归操作,输出的有序表作为写入磁盘的数据层成员,回收缓存区剩余的有序表。进一步地,在该方法中,在每层数据层中均预设一个缓存区和该缓存区的阈值,各数据层的缓存区的预设阈值与相应数据层的大小成固定比例。进一步地,在该方法中,在有序表被加入缓存区的同时,生成对应的存储在内存Log单元中的该文件的元信息;所述Log单元在内存中设置,用于维护缓存区内有序表的元信息以及维护其有序性;所述元信息为LevelDB原有的元信息和权重信息;所述LevelDB原有的元信息包括文件编号、引用数和关键字范围。进一步地,在该方法中,所述Log单元以二维数组的方式实现,所述Log单元每一维代表一层数据层的缓存区有序表元数据;读操作访问所述Log单元时依次对每层内的有序表元数据进行判断,得出目标有序表进行实际读取。进一步地,在该方法中,所述被挑选为缓存区的有序表作为压缩过程的输入的概率与所述权重信息成正比。进一步地,在该方法中,所述挑选缓存区的有序表作为压缩过程的输入的具体方法步骤包括:当第i层对应的缓存区的数据到达预设阈值时,优先选择第i-1层内的有序表进行筛选,选择第i-1层内综合权重最大的有序表,并根据该表选出第i层与当前有序表关键字重叠的表,将所有选中的有序表权重相加,得出本次压缩的第一备选权重;第i层权重最大的有序表和第i+1层关键字范围与其重合的有序表的总权重作为第二备选权重;...

【技术保护点】
1.一种基于LSM-Tree的压缩日志缓存方法,其特征在于,该方法包括:/n当一次压缩被触发且挑选出目标层的有序表和下一层的重叠有序表时,将其以有序表为单位加入到对应层预设的缓存区中;当缓存区的数据到达预设阈值时,进入下一步;/n挑选缓存区的有序表作为压缩过程的输入进行多路并归操作,输出的有序表作为写入磁盘的数据层成员,回收缓存区剩余的有序表。/n

【技术特征摘要】
1.一种基于LSM-Tree的压缩日志缓存方法,其特征在于,该方法包括:
当一次压缩被触发且挑选出目标层的有序表和下一层的重叠有序表时,将其以有序表为单位加入到对应层预设的缓存区中;当缓存区的数据到达预设阈值时,进入下一步;
挑选缓存区的有序表作为压缩过程的输入进行多路并归操作,输出的有序表作为写入磁盘的数据层成员,回收缓存区剩余的有序表。


2.如权利要求1所述的一种基于LSM-Tree的压缩日志缓存方法,其特征在于,在该方法中,在每层数据层中均预设一个缓存区和该缓存区的阈值,各数据层的缓存区的预设阈值与相应数据层的大小成固定比例。


3.如权利要求1所述的一种基于LSM-Tree的压缩日志缓存方法,其特征在于,在该方法中,在有序表被加入缓存区的同时,生成对应的存储在内存Log单元中的该文件的元信息;
所述Log单元在内存中设置,用于维护缓存区内有序表的元信息以及维护其有序性;
所述元信息为LevelDB原有的元信息和权重信息;所述LevelDB原有的元信息包括文件编号、引用数和关键字范围。


4.如权利要求3所述的一种基于LSM-Tree的压缩日志缓存方法,其特征在于,在该方法中,所述Log单元以二维数组的方式实现,所述Log单元每一维代表一层数据层的缓存区有序表元数据;
读操作访问所述Log单元时依次对每层内的有序表元数据进行判断,得出目标有序表进行实际读取。


5.如权利要求3所述的一种基于LSM-Tree的压缩日志缓存方法,其特征在于,在该方法中,所述被挑选为缓存区的有序表作为压缩过程的输入的概率与所述权重信息成正比。


6.如权利要求3所述的一种基于LSM-Tree的压缩日志缓存方法,其特征在于,在该方法中,所述挑选缓存区的有序表作为压缩过程的输入的具体方法步骤包括:
当第i层对应的缓存区的数据到达预设阈值时,优先选择第i-1层内的有序表进行筛选,...

【专利技术属性】
技术研发人员:贾智平黄克诚刘珂吴海伟
申请(专利权)人:山东大学国网江苏省电力有限公司国家电网有限公司
类型:发明
国别省市:山东;37

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

1