Lsm数据合并排序方法和装置的制造方法

文档序号:9375675阅读:791来源:国知局
Lsm数据合并排序方法和装置的制造方法
【技术领域】
[0001]本发明实施例涉及计算机技术,尤其涉及一种日志结构合并(Log StructuredMerge,以下简称:LSM)数据合并排序方法和装置。
【背景技术】
[0002]LSM是一种有序非本地更新的数据结构,常用于大数据合并排序的数据结构,其主要应用于频繁更新的数据索引,数据频繁更新意味着存储设备中有大量键值(key/value)存在两个或更多版本。
[0003]通常,LSM有7级(level),现有技术中,当某级的数据大小超过预设阈值时,将该级中的某个键范围(key Range)内的排序字符串表(Sorted String Table,以下简称:SSTable)与下一级中的相同的键范围内的SSTable进行合并排序(compact)操作,从而,实现对键值的压缩和排序。SSTable是指在一个键范围内存储的键值的排序表。
[0004]然而,采用现有技术的方法,针对存储设备中同一个键值不能及时删除旧版本,导致存储空间的利用率不高。

【发明内容】

[0005]本发明实施例提供一种LSM数据合并排序方法和装置,以提高存储空间的利用率。
[0006]本发明实施例第一方面提供一种LSM数据合并排序方法,包括:
[0007]获取相邻两级之间键值相似度最高的一对排序字符串表;
[0008]对所述一对排序字符串表进行合并排序操作。
[0009]结合第一方面,在第一种可能的实现方式中,所述获取相邻两级之间键值相似度最闻的一对排序字符串表,包括:
[0010]以预设时间间隔获取相邻两级之间键值相似度最高的一对排序字符串表。
[0011]结合第一方面,在第二种可能的实现方式中,所述获取相邻两级之间键值相似度最闻的一对排序字符串表,包括:
[0012]判断所述相邻两级中的上一级存储的数据大小是否超过预设阈值;
[0013]当所述相邻两级中的上一级存储的数据大小超过预设阈值时,则获取相邻两级之间键值相似度最高的一对排序字符串表。
[0014]结合第一方面或第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,所述对所述一对排序字符串表进行合并排序操作,包括:
[0015]从所述一对排序字符串表的相同的键值中确定旧版本的键值;
[0016]将所述旧版本的键值删除;
[0017]对删除所述旧版本之后的所述一对排序字符串表中的各键值进行排序。
[0018]本发明实施例第二方面提供一种LSM数据合并排序装置,包括:
[0019]获取模块,用于获取相邻两级之间键值相似度最高的一对排序字符串表;
[0020]处理模块,用于对所述一对排序字符串表进行合并排序操作。
[0021]结合第二方面,在第一种可能的实现方式中,所述获取模块具体用于以预设时间I司隔获取相邻两级之间键值相似度最闻的一对排序字符串表。
[0022]结合第二方面,在第二种可能的实现方式中,所述获取模块具体用于判断所述相邻两级中的上一级存储的数据大小是否超过预设阈值;当所述相邻两级中的上一级存储的数据大小超过预设阈值时,则获取相邻两级之间键值相似度最高的一对排序字符串表。
[0023]结合第二方面或第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,所述处理模块具体用于从所述一对排序字符串表的相同的键值中确定旧版本的键值;将所述旧版本的键值删除;对删除所述旧版本之后的所述一对排序字符串表中的各键值进行排序。
[0024]本发明实施例提供的LSM数据合并排序方法和装置,通过利用相邻两级之间SSTable的相似度,对相邻两级中键值相似度最高的一对SSTable进行合并排序操作,因为,键值相似度最高的一对SSTable内存在相同的键值最多,也就是存在键值的旧版本最多,因此,根据键值相似度确定进行合并排序操作的SSTable,能够最早最多的删除旧版本的键值,避免旧版本的键值在存储设备中存储较长时间,占用存储空间,从而,提高存储空间的利用率。
【附图说明】
[0025]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0026]图1为本发明的LSM存储结构示意图;
[0027]图2为本发明LSM数据合并排序方法实施例一的流程示意图;
[0028]图3为本发明LSM数据合并排序方法实施例二的流程示意图;
[0029]图4为本发明LSM数据合并排序装置实施例一的结构示意图;
[0030]图5为本发明LSM数据合并排序装置实施例二的结构示意图。
【具体实施方式】
[0031]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0032]LSM通常有7级,如图1所示,图1为本发明的LSM存储结构示意图,自上而下将每级分别标记为Li,其中,O < i < 6,从第O级到第6级每级的存储空间大小呈递增趋势,也就是,第O级的存储空间最小,第6级的存储空间最大;通常,第O级设置在内存中,也是数据最开始写入的一级,其他各级设置在磁盘中;根据键值将每级划分为多个键范围,例如:每级划分为3个范围,分别为K1-K100,K101-K200, K201-K300,当有键值存入时,存到相应的键值范围内,例如:K15存在Kl-KlOO的键范围内,并且,同一键范围内的键值按序排列;为了便于进行合并排序操作,通常,每级的键范围划分方式相同,例如:L0划分为K1-K100、K101-K200、K201-K300 ;L1 ?L6 也划分为 K1-K100、K101-K200、K201-K300。
[0033]当某级存储的数据大小超过预设阈值时,为了便于描述,将存储的数据大小超过预设阈值的一级称为“待操作级”,将待操作级中的某个键范围内的SSTable与待操作级的下一级的同一键范围内的SSTable进行合并排序(compact)操作;例如:待操作级为L2,待操作级的下一级则为L3,合并排序操作具体为:按照轮询规则确定L2级中待合并的键范围的SSTable,例如为K1-K100的SSTable,则从L3中获取K1-K100的SSTable,在L2的存储空间中,将L2中的Kl-KlOO的SSTable与L3中的K1-K100的SSTable中进行合并排序操作,具体是,从相同的键值中确定一个最新版本,删除所有旧版本,实现对键值的压缩,然后,对各键值进行排序,将压缩排序之后的键值写入到L3的Kl-KlOO的SSTable中。其中,在相同的键值中确定一个最新版本可以根据键值的编号进行确定,上述键值的编号是按照键值存储到存储设备(LO)的先后顺序编排的,通常,存入越晚,编号越大,因此,通常确定相同的键值中编号最大的为最新版本。
[0034]然而,采用上述方法,不能尽早的删除相同的键值中旧版本,旧版本的键值可能会经过多次合并排序操作与新版本的键值层级相距越来越大,因此,新版本的键值要经过多次合并排序操作之后,才能与旧版本的键值进行合并排序,将旧版本的键值删除,因此,相同的键值中旧版本的键值会在存储设备中存在较长时间,会造成存储空间利用率不高。
[0035]为了解决上
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1