一种LSM树的优化方法、装置及计算机设备制造方法及图纸

技术编号:19425194 阅读:33 留言:0更新日期:2018-11-14 10:37
公开了一种LSM树的优化方法、装置及计算机设备,该方法包括:确定出LSM树中,所指向的数据已被删除的目标叶子节点;在所述LSM树的动态数据中,为所述目标叶子节点添加删除标记。

【技术实现步骤摘要】
一种LSM树的优化方法、装置及计算机设备
本说明书实施例涉及数据处理
,尤其涉及一种LSM树的优化方法、装置及计算机设备。
技术介绍
LSM树(Log-StructuredMergeTree,日志结构的合并树)是一种基于硬盘的数据结构,其包括动态数据与静态数据,动态数据和静态数据存储的是数据的修改增量。在访问LSM树的过程中,依次读取其动态数据和静态数据,将所读取到的结果进行合并,以得到最终的读取结果。由于LSM树保存的是数据的修改增量,从而当LSM树中保存有大量的用于表示数据已被删除的修改增量时,在进行数据读取过程中,需要遍历大量的无用数据,才能读取到有效的数据,这也就导致数据的读取性能下降。
技术实现思路
针对上述技术问题,本说明书实施例提供一种LSM树的优化方法、装置及,技术方案如下:根据本说明书实施例的第一方面,提供一种LSM树的优化方法,所述方法包括:确定出LSM树中,所指向的数据已被删除的目标叶子节点;在所述LSM树的动态数据中,为所述目标叶子节点添加删除标记。根据本说明书实施例的第二方面,提供一种LSM树的优化装置,所述装置包括:目标确定模块,用于确定出LSM树中,所指向的数据已被删除的目标叶子节点;第一添加模块,用于在所述LSM树的动态数据中,为所述目标叶子节点添加删除标记。根据本说明书实施例的第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现本说明书实施例提供的LSM树的优化方法。本说明书实施例所提供的技术方案,通过确定出LSM树中,所指向的数据已被删除的目标叶子节点,在该LSM树的动态数据中,为所确定出的目标叶子节点添加删除标记,由于在对LSM树进行数据访问时,首先访问LSM树的动态数据,再访问LSM树的静态数据,从而在动态数据中,为那些所指向的数据已被删除的目标叶子节点添加删除标记,可以实现在访问动态数据时,直接跳过具有删除标记的叶子节点,从而提高数据访问效率,进一步,在访问静态数据时,也无需重复访问具有删除标记的叶子节点,从而提高数据访问效率。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。附图说明为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1为LSM树的一种示例;图2为本说明书一示例性实施例提供的一种LSM树的优化方法的实施例流程图;图3为LSM树的静态数据的一种示例;图4为在LSM树的动态数据中添加删除标记的一种示例;图5为在LSM树的动态数据中添加删除标记的另一种示例;图6为本说明书一示例性实施例提供的一种LSM树的优化装置的实施例框图;图7示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图。具体实施方式为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。LSM树是一种基于硬盘的数据结构,其代表数据库包括Hbase、NessDB、LevelDB等。LSM树的存储引擎和B+树的存储引擎一样,同样支持增、删、读、改、顺序扫描操作,而且其通过批量存储技术可以有效规避磁盘随机写入问题,具体的,其核心思路是,假定内存足够大,因此,不需要每次有数据更新就必须将数据写入磁盘中,而可以先将最新的数据驻留在内存中,等到内存中的数据达到指定的大小限制后,再使用归并排序的方式将内存中的数据合并追加到磁盘队尾,基于此,也就可以将LSM树所存储的数据分为静态数据和动态数据,其中,动态数据是指内存中的数据,静态数据中的数据是指存储于持久化介质上,例如磁盘中的数据。本领域技术人员可以理解的是,LSM树中存储的是数据的修改增量,也就是数据的变更信息。例如,如图1所示,为LSM树的一种示例。在访问LSM树的过程中,需要依次读取其动态数据和静态数据,将所读取到的结果进行合并,以得到最终的读取结果。目前,在访问LSM的过程中,存在两个问题:其一:当频繁地在动态数据中插入用于表示数据已被删除的修改增量时,也即动态数据中保存了大量的删除记录时,在访问动态数据时,需要遍历大量无用的数据,导致数据的读取性能下降。例如,假设通过索引键范围[1,50]查找数据,而如图1所示,在索引键范围[1,50]内存在大量的已被删除的数据,例如索引键为3至8的叶子节点所指向的数据,索引键为15至31的叶子节点所指向的数据,以及索引键为32和索引键为49的叶子节点所指向的数据,那么,在现有技术中,仍需要逐个遍历叶子节点,最终才能得到索引键为9至14,以及索引键为33至48的叶子节点所指向的数据。其二:在访问静态数据时,依旧需要遍历大量无用的数据,导致数据的查询性能下降。例如,在访问图1所示例的静态数据时,依旧需要逐个遍历索引键为3至99的叶子节点所指向的数据,并无法跳过所指向的数据已被删除的叶子节点。基于此,本说明书实施例提供一种LSM树的优化方法,在该方法中,考虑到在访问LSM树时,先访问其动态数据,再访问其静态数据,从而在LSM树的动态数据中,为所指向的数据已被删除的叶子节点添加用于表示数据已被删除的删除标记,以实现后续在访问LSM树时,若在动态数据中查找到带有删除标记的叶子节点,则直接跳过该叶子节点,并且,后续在查找静态数据时,也不再查找具有相同索引键的叶子节点,从而提升数据查询性能。如下,示出下述实施例对上述LSM树的优化方法进行详细说明:请参见图2,为本说明书一示例性实施例提供的一种LSM树的优化方法的实施例流程图,该方法包括以下步骤:步骤202:确定出LSM树中,所指向的数据已被删除的目标叶子节点。在本说明书实施例中,可以分别针对动态数据和静态数据,确定出所指向的数据已被删除的叶子节点,为了描述方便,将所确定出的,也即所指向的数据已被删除的叶子节点称为目标叶子节点。如下,分别从动态数据和静态数据两方面进行说明:首先,动态数据:以图1所示例的动态数据为例,假设通过索引键范围[1,50]查找数据,在查询过程中,可以检测到多个索引键连续的叶子节点所指向的数据已被删除,例如,索引键为3至8的叶子节点,索引键为15至31的叶子节点,那么,则可以将这些叶子节点确定为目标叶子节点。其次,静态数据:以图3所示例的静态数据为例,假设通过索引键范围[1,50]查找数据,在查询过程中,可以检测到多个索引键连续的叶子节点所指向的数据已被删除,例如,索引键为3至15的叶子节点,那么,则可以将这些叶子节点确定为目标叶子节点。步骤204:在LSM树的动态数据中,为目标叶子节点添加删除标记。在本步骤中,仍分别从动态数据和静态数据两方面进行说明:首先,动态数据:基于上述步骤202中的相关举例,在动态数据中所确定本文档来自技高网...

【技术保护点】
1.一种LSM树的优化方法,所述方法包括:确定出LSM树中,所指向的数据已被删除的目标叶子节点;在所述LSM树的动态数据中,为所述目标叶子节点添加删除标记。

【技术特征摘要】
1.一种LSM树的优化方法,所述方法包括:确定出LSM树中,所指向的数据已被删除的目标叶子节点;在所述LSM树的动态数据中,为所述目标叶子节点添加删除标记。2.根据权利要求1所述的方法,所述方法还包括:在所述LSM树的动态数据中,若检测到任一枝节点下的所有叶子节点均被添加有删除标记,则为所述枝节点添加删除标记。3.根据权利要求1所述的方法,所述确定出LSM树中,所指向的数据已被删除的目标叶子节点,包括:分别针对LSM树的动态数据和静态数据,确定出所指向的数据已被删除,且索引键连续的两个以上目标叶子节点。4.根据权利要求3所述的方法,若针对LSM树的静态数据确定出目标叶子节点,在所述LSM树的动态数据中,为所述目标叶子节点添加删除标记,包括:分别将所确定出的目标叶子节点中,具有最大索引键和最小索引键的两个目标叶子节点插入所述LSM树的动态数据中;在所述LSM树的动态数据中,为所插入的目标叶子节点添加删除标记。5.根据权利要求1所述的方法,在所述LSM树的动态数据中,为所述目标叶子节点添加删除标记之后,所述方法还包括:判断被添加删除标记的目标叶子节点中,具有最大索引键的目标叶子节点所指向的叶子节点的索引键是否与所述最大索引键连续;若不连续,则在所述具有最大索引键的目标叶子节点之后插入虚拟叶子节点,其中,所述虚拟叶子节点的索引键为所述最大索引键加1。6.一种LSM树的优化装置,所述装置包括:目标确定模块,用于确定出L...

【专利技术属性】
技术研发人员:阳振坤席华锋韩富晟肖金亮
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1