一种基于LSM-Tree的分层索引数据管理方法及系统技术方案

技术编号:30425767 阅读:12 留言:0更新日期:2021-10-24 16:58
本发明专利技术涉及一种基于LSM

【技术实现步骤摘要】
一种基于LSM

Tree的分层索引数据管理方法及系统


[0001]本专利技术涉及数据库
,具体涉及一种基于LSM

Tree的分层索引数据管理方法及系统。

技术介绍

[0002]LSM

Tree(Log Structured Merge Trees)数据组织方式被应用于多种数据库,如LevelDB, HBase等,LSM

Tree相较B+树或其他索引存储实现方式,提供了更好的写性能,主要是将海量键值(Key

Value)的随机读写实现为内存随机读写、顺序刷盘和定期归并,充分利用磁盘顺序写性能高于随机写的特性,极大提升了数据写入的能力。
[0003]但是,LSM

Tree的读取效率并不高,当需要读取指定健(Key)的数据时,先从内存中的MemTable和Immutable MemTable中查找,如果没有找到,则继续从Level 0层开始,找不到就从更高层的SSTable文件中查找,如果查找失败,说明整个LSM

Tree中都不存在这个Key的数据。如果中间在任何一个地方找到这个Key的数据,那么按照这个路径找到的数据都是最新的。
[0004]每一层的SSTable文件的Key值范围是不重复的,所以只需要查找其中一个SSTable 文件即可确定指定Key的数据是否存在于这一层中。在各层SSTable中查找Key值的过程是相对独立,为此查询指定的Key时需要遍历多层,可能引起多次的内存访问,影响LSM
‑ꢀ
Tree读性能。
[0005]因此,如何提高采用LSM

Tree数据结构的数据库的键值系统的读性能,优化索引查询搜索路径,缩短读请求的响应时间成为一个亟待解决的问题。

技术实现思路

[0006]为了解决上述技术问题,本专利技术提供一种基于LSM

Tree的分层索引数据管理方法及系统。
[0007]本专利技术技术解决方案为:一种基于LSM

Tree的分层索引数据管理方法,包括:
[0008]步骤S1:分离LSM

Tree中LRU链表块缓存中的索引块和数据块,建立单独的索引块数据;
[0009]步骤S2:根据所述索引块数据,在LSM

Tree中不同层的索引块之间建立跳表结构;
[0010]步骤S3:利用所述跳表结构,实现对LSM

Tree的索引进行分层查询。
[0011]本专利技术与现有技术相比,具有以下优点:
[0012]本专利技术公开了一种基于LSM

Tree的分层索引数据管理方法,采取了分离存储索引块和数据块、设计内存索引数据结构、设计分层加速查询策略和维护内存索引结构的操作步骤;在处理读请求时,采用细粒度的索引结构和跨层加速策略,与原有的LSM

Tree 索引数据管理方式相比,在保证键值系统写性能的前提下,优化了索引查询搜索路径,缩短了读请求的平均响应时间,提高了键值系统的读性能。
附图说明
[0013]图1为本专利技术实施例中一种基于LSM

Tree的分层索引数据管理方法的流程图;
[0014]图2为本专利技术实施例中LevelDB的数据分布结构示意图;
[0015]图3为本专利技术实施例中LevelDB读取数据的流程示意图;
[0016]图4为本专利技术实施例中LevelDB现有的数据缓存数据结构示意图;
[0017]图5为本专利技术实施例中LevelDB改进的数据缓存数据结构示意图;
[0018]图6为本专利技术实施例中一种基于LSM

Tree的分层索引数据管理方法中步骤S2:根据索引块数据,在LSM

Tree中不同层的索引块之间建立跳表结构的流程图;
[0019]图7为本专利技术实施例中L0层更新全局索引的流程示意图;
[0020]图8为本专利技术实施例中L1~Lk利用各层间跳表进行搜索的流程示意图;
[0021]图9为本专利技术实施例中分层加速策略的例子;
[0022]图10为本专利技术实施例中另一种基于LSM

Tree的分层索引数据管理方法的流程图;
[0023]图11为本专利技术实施例中一种智能排序候选框的目标跟踪系统的结构框图;
[0024]图12为本专利技术实施例中另一种智能排序候选框的目标跟踪系统的结构框图。
具体实施方式
[0025]本专利技术提供了一种基于LSM

Tree的分层索引数据管理方法,通过对索引分层的数据管理方式,提高采用LSM

Tree数据结构的数据库的键值系统的读性能,优化索引查询搜索路径,缩短读请求的响应时间。
[0026]为了使本专利技术的目的、技术方案及优点更加清楚,以下通过具体实施,并结合附图,对本专利技术进一步详细说明。
[0027]实施例一
[0028]如图1所示,本专利技术实施例提供的一种基于LSM

Tree的分层索引数据管理方法,包括下述步骤:
[0029]步骤S1:分离LSM

Tree中LRU链表块缓存中的索引块和数据块,建立单独的索引块数据;
[0030]步骤S2:根据索引块数据,在LSM

Tree中不同层的索引之间建立跳表结构;
[0031]步骤S3:利用跳表结构,实现对LSM

Tree的索引进行分层查询。
[0032]以采用LSM

Tree存储结构的LevelDB为例,LSM

tree有三种文件形式,第一种是内存中的正常接收写入请求的Memtable。当Memtable大小超过阈值,将其冻结并成为第二种文件,即存于内存的不可修改的Immutable Memtable。当把Immutable Memtable写入磁盘时,则成为第三种文件即SSTable(Sorted String Table)。SSTable分为L0~Lk层,当L0层文件大小之和超过阈值,则选择L0层文件写入下一层L1层,即与L1层文件发成合并(Compaction)。当L1层文件大小之和超过阈值,则选择L1层中文件与其下一层L2层文件发生合并。以此类推,直到合并到最底层Lk层。发生合并之后,使得L1到Lk层的每一层上的SSTable 都是在Key上全局有序的,而L0层由于不发生合并操作,因此该层各个SSTable的Key 值范围是有重叠。如图2所示,L0层中第一个SSTable的Key值从1到38,而第二个SSTable 的Key值是从9到67,二者Key值范围是有重叠的。L1~Lk层中的各个SSTable的Key值范围互不重叠,而且是全局有序的。
[0033]如图3所示,展示了Lev本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于LSM

Tree的分层索引数据管理方法,其特征在于,包括:步骤S1:分离LSM

Tree中LRU链表块缓存中的索引块和数据块,建立单独的索引块数据;步骤S2:根据所述索引块数据,在LSM

Tree中不同层的索引块之间建立跳表结构;步骤S3:利用所述跳表结构,实现对LSM

Tree的索引进行分层查询。2.根据权利要求1所述的基于LSM

Tree的分层索引数据管理方法,其特征在于,所述步骤S1:分离LSM

Tree中LRU链表块缓存中的索引块和数据块,建立单独的索引块数据,具体包括:将所述索引块从所述链表块缓存中分离出来,建立单独的索引块数据,每条所述索引块数据存放本层索引块的键值、本层的下一索引块以及下层的索引块。3.根据权利要求1所述的基于LSM

Tree的分层索引数据管理方法,其特征在于,所述步骤S2:根据所述索引块数据,在LSM

Tree中不同层的索引块之间建立跳表结构,具体包括:步骤S21:对LSM

Tree中L0层中的索引块,根据其搜索热度,构建最新热度的索引排序链表;步骤S22:对LSM
‑...

【专利技术属性】
技术研发人员:李永坤左泽刘朕许胤龙
申请(专利权)人:中国科学技术大学
类型:发明
国别省市:

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

1