掌桥专利:专业的专利平台
掌桥专利
首页

一种基于日志结构合并树的数据重删及管理系统

文献发布时间:2024-04-18 20:01:30


一种基于日志结构合并树的数据重删及管理系统

技术领域

本发明涉及数据管理领域,尤其是涉及一种基于日志结构合并树的数据重删及管理系统。

背景技术

日志结构合并树(Log-Structured Merge-Tree,LSMT)是一种广为流行的持久性键值存储的索引结构,它将所有的写入或修改操作都首先缓存在内存中,接着转化为磁盘上的顺序写,充分利用了磁盘的写带宽,有良好的写性能。

重复数据删除(Deduplication)是一种数据压缩技术,其通过指纹识别相同的数据,通过对已经存储过的相同数据进行引用,达到在磁盘上只存一份相同数据的效果,降低存储成本和网络流量。相比于本地压缩,它可以进一步减少需要存储的数据量。

在信息时代,各行各业的数据量呈爆发式增长趋势,报告显示,到2025年全球数据量将达到175ZB,数据增长的速度超过了硬件成本下降的速度。键值存储是一种重要的基础设施,可以作为数据库底层的存储引擎。那么,如何在其中进行数据去重,来降低硬件成本,同时在去重后维持其原有的低延迟、高吞吐的特点,就是本领域技术人员的亟待解决的问题。

现有的一些在日志结构合并树中设计的重删方法,对所有键值对进行全局重删,并将键和值进行物理上的分离。然而,进行全局重删需要在内存中保存所有非重复值的索引,存储开销和索引开销较大;同时键值分离也导致键和值无法协同管理,额外对值的垃圾回收会造成大量开销,且无法提供高效的查询、更新和删除等功能。所以,为了在日志结构树中进行重删来节省硬件成本,同时维持原系统的低延迟和高吞吐的特点,需要根据日志结构树的特点重新设计。

发明内容

本发明的目的在于解决现有技术中的问题,提供一种更适合日志结构合并树的数据重删方法和重删后的数据管理系统。

本发明解决其技术问题所采用的技术方案是:提供一种基于日志结构合并树的数据重删及管理系统,其特征在于,所述系统数据为KV数据,KV数据包括Key键和Value值,初始Key键为OrgKey键,初始Value值为OrgVal值,所述系统有两种管理数据的结构,分别为:

日志结构合并树LSMT结构,用于保存所述系统的初始数据、进行重删操作以及处理用户的操作请求,用户的操作请求包括写入请求、查询请求和修改请求;重删操作指对具有重复值的多个数据,保留一个数据作为未重删数据,其它数据作为重删数据,未重删数据不作处理,重删数据的Value值替换为对未重删数据的引用,未重删数据被引用的次数通过数据被引用次数DedupCnt表示;

值文件表vFT结构,用于保存被日志结构合并树LSMT结构在compaction过程中删除但文件被引用次数DedupRefCnt不为零的有序字符串表SSTable,值文件表vFT结构用于保存数据的文件为值有序字符串表vSSTable;其中,有序字符串表SSTable的文件被引用次数DedupRefCnt为该有序字符串表SSTable中所有未重删数据的数据被引用次数DedupCnt的总和。

优选的,日志结构合并树LSMT结构中,进行重删操作的具体实现为:

检测KV数据是否出现重复的Value值,若检测到重复的Value值,则对Value值重复的多个KV数据,保留一个KV数据作为未重删数据,其它KV数据作为重删数据;未重删数据不作处理,重删数据的Value值由OrgVal值替换为被重删值DedupVal,被重删值DedupVal包含对未重删数据的Value值的索引信息;

所述日志结构合并树LSMT还缓存所述重删过程中指纹信息的相关索引,指纹信息缓存使用最近最少使用算法LRU维护。

优选的,日志结构合并树LSMT进行两次重删,分别为:

一次重删,将内存上的数据持久化到磁盘上时进行,具体为:所述系统对不可变内存表im-memtable的数据进行一次重删,重删后的数据存入磁盘,生成有序字符串表SSTable,同时将相关指纹信息存入生成的有序字符串表SSTable中;

二次重删,在所述系统对多个有序字符串表SSTable进行compaction压实操作的过程中进行,具体为:将部分有序字符串表SSTable读出,并根据其内部保存的相关指纹信息,对多个有序字符串表SSTable间的键值对KV数据进行二次重删。

优选的,所述系统处理用户的查询请求时,当查询请求为点查询请求,根据用户发送的Key键在日志结构合并树LSMT中查找对应的Value值;若读取到的Value值为OrgVal值,则直接返回Value值;若读取到的Value值为被重删值DedupVal,则根据索引信息读取对应的未重删数据的Value值。

优选的,所述系统处理用户的查询请求时,当查询请求为范围查询请求,根据用户发送的Key键范围在日志结构合并树LSMT中查找对应的多个Value值;若读取到的Value值为OrgVal值,则直接返回Value值;若读取到的Value值为被重删值DedupVal,则根据索引信息读取对应的未重删数据的Value值;若查询到的DedupVal有多个,则将DedupVal放入读请求队列RQ中,使用多线程并发读取其对应的未重删KV数据的Value值。

优选的,所述系统处理用户的修改请求时,若修改的Value值为OrgVal值,则根据其数据被引用次数DedupCnt决定如何修改;若修改的Value值为DedupVal值,则直接修改该数据,并对其被修改之前引用的未重删数据的数据被引用次数DedupCnt作减1操作;修改请求在compaction过程中完成。

优选的,修改请求包括更新请求和删除请求。

优选的,值文件表vFT结合文件被引用次数DedupRefCnt与最近最少使用K次算法LRU-K在内存中缓存部分值有序字符串表vSSTable中的数据,加速数据查询。

优选的,值文件表vFT在总大小超过预设上限时进行垃圾回收,具体为:选择文件被引用次数DedupRefCnt最多的N个值有序字符串表vSSTable进行垃圾回收,生成新的值有序字符串表vSSTable,删除旧的值有序字符串表vSSTable;值文件表vFT的总大小上限和N均为可配置值。本发明具有如下有益效果:

1、通过对重复数据进行删除,减少了数据量,从而减少了compaction的次数,从而减少了其对前台写入的阻塞,提高写入性能的同时降低了数据存储的硬件成本;

2、通过将重删所需的指纹信息保存在SSTable内减少了数据重删技术的索引内存开销;

3、通过compaction过程中的重删技术,减少了需要写入的数据量,进而减少基于日志结构合并树的所述系统的写放大;

4、通过DedupVal的索引方式和vFT结构,提供了高效的重删后查询和修改功能;vFT的垃圾回收可以进一步减少磁盘空间占用,同时减少DedupVal的读放大。

以下结合附图及实施例对本发明作进一步详细说明,但本发明不局限于实施例。

附图说明

图1为本发明实施例的系统结构图;

图2为本发明实施例的两次数据重删过程的示意图;

图3为本发明实施例处理用户查询请求的示意图;

图4为本发明实施例处理用户修改请求的示意图;

图5为本发明实施例的vFT的结构示意图。

具体实施方式

参见图1所示,为本发明实施例的系统结构图,包括日志结构合并树LSMT和值文件表vFT这两种结构,用于管理不同被引用情况的文件;其中,日志结构合并树LSMT管理的文件SSTable和值文件表vFT管理的文件vSSTable使用相同格式。

日志结构合并树LSMT的内存包括buffer和cache,buffer部分包括可变内存表memtable和不可变内存表im-memtable,承担用户的写入和修改请求;cache部分为用于加速用户查询请求的缓存,cache部分还包括在重删过程中用于缓存Value值到其FP指纹的映射(即通过Value可以快速获取其FP)的LRU FPCache,所述LRU FPCache可以加速重删过程。

值文件表vFT的内存同样分为两部分,一部分储存vFT元数据,包括vSSTable数量等基本信息;另一部分为vFT cache,用于缓存部分数据,加速用户对于vSSTable的读取。

磁盘部分从SSTable到vSSTable的箭头上表示的是文件从日志结构合并树LSMT到值文件表vFT的转换条件:即SSTable的数据不再被LSMT拥有(体现为RefCnt=0)但是仍然被重删后的数据所引用(体现为文件被引用次数DedupRefCnt>0)。

参见图2所示,是本发明实施例的两次数据重删的示意图。

第一次重删是对im-memtable重删,之后将该im-memtable表相关的FP到OrgKey键的索引保存在持久化的SSTable中。所述系统在后台将im-memtable持久化为磁盘上的SSTable,在建立SSTable的过程中对表内KV数据进行重删,并将相关指纹信息存入SSTable内。LSMT中的im-memtable不可被新的请求修改。

第二次重删是在后台对多个SSTable进行compaction的过程中,对所有被选中的SSTable进行重删,重删过程整合其内部的所有FP索引项,若同一个FP与多个OrgKey相关,则表明出现了多个OrgVal,仅保留一份,将其保留在总引用次数DedupRefCnt最大的SSTable中

所述重删过程在内存中缓存FP信息的相关索引,FP缓存使用LRU算法维护。所述重删过程维护Value到FP的索引缓存,减少OrgVal的指纹计算次数,加速重删过程。其中,所述索引缓存根据索引项的访问热度信息决定缓存满时的淘汰数据项。

所述重删过程检测对Value值重复的多个KV数据,保留一个KV数据作为未重删数据,其它KV数据作为重删数据;未重删数据不作处理,重删数据的Value值由OrgVal值替换为被重删值DedupVal,所述被重删值DedupVal为对未重删数据的Value值的索引信息。

DedupVal保存的是一个索引信息,通过该索引信息可以找到其OrgVal值。具体的,DedupVal的结构为:唯一fn+OrgKey,此处唯一fn表示每一个SSTable或vSSTable的全局唯一序号,而OrgKey则是与其Value值重复的未重删数据的Key键。

参见图3所示,为本发明实施例处理用户查询请求的示意图。

具体地,所述系统在处理点查询请求时,根据Key键查找Value值:

首先在cache部分查找,若找到Key键对应的Value值则直接返回,否则继续在SSTable里查询。在SSTable里查询时,若找不到该Key键则返回该Key不存在的结果,否则读出该Key键对应的Value值;若该Value值为OrgVal值则直接返回,若为DedupVal值则对其进行解析,在对应的文件中查找其保存的OrgKey;所述解析具体为:先解析fn,若解析出的fn不存在,则在vFT中根据OrgKey查找。因为在vSSTable被删除后,DedupVal中的fn无效,需要通过其中的OrgKey恢复,且为了减少需要寻找的vSSTable个数,按照fn从大到小的顺序查找;若fn存在,则直接在相应文件中读出OrgKey对应的OrgValue。

具体的,对于范围查询请求,在LSMT中获取所有相关Key对应的Value,将所有DedupVal放入RQ,每个DedupVal使用一个线程从LSMT或vFT中恢复。可以理解的是,为了充分利用多核处理器和SSTable只读的特点,对RQ内的DedupVal使用多个线程恢复。

参见图4所示,为本发明实施例处理用户修改请求的示意图。修改请求包括对某一KV对的Value更新或将该KV对删除,具体为:所述系统在LSMT的compaction过程中处理修改请求,此时需要在其对应的OrgVal处对OrgKey的引用次数减1,检查其OrgKey的引用次数是否为1,决定是否将其删除。

具体的,所述系统处理更新请求时,若请求对OrgVal更新,则检查其数据被引用次数DedupCnt,决定是否保留在原SSTable内;若请求对DedupVal更新,则直接更新,并对其更新前引用的未重删数据的数据被引用次数DedupCnt减1。

具体的,所述系统处理删除请求时,在LSMT写入KV对,其中Value标识该Key被删除。在compaction过程中,若对OrgVal删除,则根据数据被引用情况决定是否将原SSTable保留;若删除DedupVal,则对其被删除前引用的未重删数据的数据被引用次数DedupCnt减1。

参见图5所示,为本发明实施例的vFT结构设计的示意图,所述系统中的SSTable最初被LSMT管理,由于compaction过程,部分SSTable被LSMT删除,将其中DedupRefCnt不为零的SSTable存入vFT,为与LSMT中的文件区别,其管理文件称为vSSTable(value SortedString Table,保存原值的有序字符串表),二者格式相同。vSSTable中的有效数据均为被LSMT删除或修改、但仍然被部分DedupVal所引用的KV对。

对于所述用户的查询请求,其中的vSSTable不具有局部性,为加快请求完成速度,vFT结合DedupRefCnt与LRU-K算法在内存中的cache缓存部分数据。

所述vFT中的元数据(metadata)保存目前所有vSSTable的总大小、预先设置的最大文件容量上限、每个vSSTable被引用次数。所述vFT根据预设的大小限制决定vcompaction时机,在vcompaction时根据DedupRefCnt选择被引用最多的若干个vSSTable进行垃圾回收,生成新的vSSTable,以减少查询需要读取的vSSTable数量。具体地,在vFT中根据被引用次数排序,选择被引用最多的若干个vSSTable读出,采用compaction类似的方式归并排序,删除不被引用的键值对,结合被引用次数和Key的排序方式生成新的vSSTable。其中,被选中进行垃圾回收的vSSTable个数可手动配置,也可以根据当前空闲资源量与vFT总大小确定;新生成的vSSTable与LSMT中的文件使用相同的全局fn分配方式,每一个vSSTable的fn唯一。

可见,本发明一种基于日志结构合并树的数据重删及管理系统,是一种日志结构合并树友好的数据重删方法,结合了日志结构合并树的特点和限制,设计更适合于日志结构合并树的数据重删方法,能够同时保证高效的数据写入、查询、更新和删除操作、降低存储成本、减少写放大,提供了一种日志结构合并树友好且完善全面的数据重删方式和一种重删后的数据管理方式。

以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 汽轮机叶片颤振监测装置及装置安装方法和装置监测方法
  • 监测装置及安装监测装置的方法
  • 监测装置及安装监测装置的方法
  • 一种作物育种进程的监测方法、监测系统及监测装置
  • 软件性能监测方法以及装置
  • 软件性能监测方法及装置
技术分类

06120116561814