一种基于学习索引的LSM-Tree存储引擎读放大问题优化方法技术

技术编号:38139846 阅读:13 留言:0更新日期:2023-07-08 09:53
本发明专利技术属于存储索引技术领域,提供一种基于学习索引的LSM

【技术实现步骤摘要】
一种基于学习索引的LSM

Tree存储引擎读放大问题优化方法


[0001]本专利技术属于存储索引
,涉及结合机器学习的存储索引技术,具体提供一种基于学习索引的LSM

Tree存储引擎读放大问题优化方法。

技术介绍

[0002]索引技术是数据库系统或存储系统中用于加快数据存取的数据引擎技术,它在提升存储文件的数据存取性能上起到至关重要的作用;在系统数据存储量飞速增长的大数据时代,传统索引存在所需的存储空间开销大、多层检索性能慢等问题。
[0003]近年来,以LevelDB和RocksDB为代表的LSM

tree(log

structured merge tree)存储引擎凭借其良好的写性能被应用于存储系统中,LSM

Tree存储引擎适合于密集写负载应用系统的数据存储,但它存在着读放大的缺点。读放大问题是指在检索数据时,需要一层一层地查找,造成额外的磁盘I/O操作,尤其在范围查询时,读放大现象很明显;当LSM

Tree存储引擎的SSTable中使用稀疏索引时,它会给存储引擎带来的读放大问题,使得上层的数据查询涉及过多的无用I/O处理。由此可见,读放大问题的主要来源于:1)在SSTable元数据中的多层查找时,会进行二分查找,在过程中访问无关的SSTable文件造成多余的磁盘读取;2)在SSTable文件内搜索键的过程中,会读取许多不存在该查询键的磁盘块,造成读放大;如何合理解决LSM/>‑
Tree的读放大问题成了一个热门方向。学习索引是一种利用机器学习技术的索引方法,它学习存储系统的数据分布和查询负载特征,生成键

值索引映射函数,使其用于数据查询检索,从而降低索引的空间代价并提升查询性能。LSM

Tree大部分持久化内容不会在短时间内发生变动,可以很好的适应学习索引一次构建的特性,但如何在LSM

Tree中应用学习索引,优化存储引擎,并解决读放大问题成为本专利技术专利技术的研究重点。

技术实现思路

[0004]本专利技术的目的在于针对LSM

Tree存储引擎的读放大问题,提出一种基于学习索引的LSM

Tree存储引擎读放大问题的优化方法;该方法基于学习索引,将其应用于LSM

Tree的元数据检索和SSTable文件查找,从根本上减小读取SSTable文件次数和元数据查询范围,从而降低查询开销,从而解决LSM

Tree的读放大问题。
[0005]为实现上述目的,本专利技术采用的技术方案为:
[0006]一种基于学习索引的LSM

Tree存储引擎读放大问题优化方法,其特征在于,包括以下步骤:
[0007]构建SSTable文件,SSTable文件包括:文件头、索引块、布隆过滤器块及文件数据块;SSTable文件的文件数据块中一个entry为<key><value>,key为整数型键的键值,value为用户存储值;将键值对数据(key,EntryIndex)放入文件数据块的Entry目录中,EntryIndex为entry的序号;
[0008]构建SSTable文件的索引块,SSTable文件的索引块采用SSTable学习索引,SSTable学习索引为递归PLR模型,递归PLR模型为多层模型,每一个模型节点由一个根线段
数量为1的PLR模型组成;
[0009]构建层级学习索引,设置层级变化以Version为单位,多个Version用双向链表的形式组织;每个Version中记录每一层SSTable文件的元数据,SSTable文件的元数据包含SSTable文件的编号、大小、最大键、最小键;Version由Buffer Level与多个LearnedLevel存储,每个LearnedLevel设置一个递归PLR模型,所有递归PLR模型共同构成层级学习索引。
[0010]进一步的,Version中Buffer Level存储新的插入键,Buffer Level与多个LearnedLevel的大小依次递增,且Buffer Level与多个LearnedLevel之间依次递归合并;对于新的插入键,先插入到BufferLevel中去,当BufferLevel已满时,与下层LearnedLevel进行递归合并,并基于递归合并后数据构建递归PLR模型。
[0011]进一步的,SSTable学习索引与层级学习索引中,递归PLR模型的构建过程为:以键值对数据(key,EntryIndex)为原始数据集、或以SSTable文件的元数据为原始数据集,根据PLR算法构建底层PLR模型,其中误差界限为递归误差界限δ;检查该层PLR模型的节点数量是否为1,若不为1,则将该层PLR模型中每个模型的第一个键值对数据作为新的数据集,再次进行PLR模型构建,其中误差界限为递归误差界限δ

;直到顶层的PLR模型节点数量为1,输出递归PLR模型。
[0012]基于上述技术方案,本专利技术的有益效果在于:
[0013]本专利技术提供一种基于学习索引的LSM

Tree存储引擎读放大问题的优化方法,用以优化解决LSM

Tree存储引擎的读放大问题,具有如下优点:
[0014]1)本专利技术利用键值分离方法改进SSTable文件记录的排列组织方式,在键值分离的基础上,将磁盘块的键值存储项entry大小固定且紧密排列,使其能够应用于学习索引;并将学习索引和SSTable一同序列化,学习索引减少了实际的磁盘读取次数,实现了更快的SSTable查找性能;
[0015]2)本专利技术将SSTable文件的稀疏索引替换为SSTable学习索引,利用层级学习索引加速SSTable元数据的检索;
[0016]3)本专利技术在两个学习索引中,利用误差有界的PLR模型作为底层模型,使用递归结构使得简单的模型也能表示复杂的数据分布,得到递归PLR模型,即递归学习索引;
[0017]4)本专利技术在层级学习索引中,在递归学习索引之上的缓冲区使得学习索引能够支持动态插入,仅在缓冲区空间满时进行模型的构建,可以达到更好的性能;在插入时,判断缓冲区是否已满,缓冲区满时和下层PLR模型进行合并,重训练为新的PLR模型,否则,不进行PLR模型构建;在预测时,先查询缓冲区,再查询已构建PLR模型的数据,实现层级索引的动态插入功能;
[0018]5)本专利技术采用基于最优PLR算法的PLR模型,最优PLR算法可以在最大误差范围内拟合数据流成为线段,且保证线段数量最小;
[0019]6)因为SSTable文件是在磁盘上的持久化文件,学习索引需要支持序列化到磁盘之上;本专利技术在SSTable学习索引序列化中,将每一层的所有PLR模型均转化本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于学习索引的LSM

Tree存储引擎读放大问题优化方法,其特征在于,包括以下步骤:构建SSTable文件,SSTable文件包括:文件头、索引块、布隆过滤器块及文件数据块;SSTable文件的文件数据块中一个entry为<key><value>,key为整数型键的键,value为用户存储值;将键值对数据(key,EntryIndex)放入文件数据块的Entry目录中,EntryIndex为entry的序号;构建SSTable文件的索引块,SSTable文件的索引块采用SSTable学习索引,SSTable学习索引为递归PLR模型,递归PLR模型为多层模型,每一个模型节点由根线段数量为1的PLR模型组成;构建层级学习索引,设置层级变化以Version为单位,多个Version用双向链表的形式组织;每个Version中记录每一层SSTable文件的元数据,SSTable文件的元数据包含SSTable文件的编号、大小、最大键、最小键;Version由Buffer Level与多个LearnedLevel存储,每个LearnedLevel设置一个递归PLR模型,所有递归PLR模型共同构成层级学习索引...

【专利技术属性】
技术研发人员:毛誉陆鑫
申请(专利权)人:电子科技大学
类型:发明
国别省市:

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

1