一种降低LSMTree写放大的方法和装置的制造方法

文档序号:9200163阅读:547来源:国知局
一种降低LSM Tree写放大的方法和装置的制造方法
【技术领域】
[0001]本发明涉及数据处理领域,尤其涉及一种降低LSM Tree写放大的方法和装置。
【背景技术】
[0002]LSM Tree (Log-structured merge-tree,日志结构合并树)是一种广泛应用于数据存储领域的多层树形数据结构。其为解决随机I/O对持久化存储性能影响的问题,设计了相应的方法,具体为将最上层的数据存放于内存中,其他层次的数据存放于HDD (HardDisk,机械硬盘)/SSD (Solid State Disk,固态硬盘)等持久化设备中,并采用数据异地更新的方式写入数据,由系统的后台进程不断地将数据从低层到高层merge (合并),将key相同的K-V结构中的较旧的版本删除,保留排序的新版本,这样,随着merge的进行,数据就由内存转向持久化设备,再从持久化设备的低层向高层移动,避免了随机I/O直接对持久化设备的影响。
[0003]但是,仅采用数据异地更新的方式写入数据,就需要频繁地删除本地数据,再存储新的数据,使得在覆盖写较多的场景下,多次写入数据时主控写入的数据量远大于实际写入的数据量,引起严重的写放大,导致存储设备的存储性能严重下降,更缩短了其使用寿命O
[0004]针对这一问题,现有技术提供了的方法为,通过建立Multi BF (Multi BloomFilter,多组布隆过滤器),并将各BF设置为固定时间间隔轮流清0,而各BF按照清O时与当前时刻的时间间隔的不同,拥有不同的权重,当数据接口中有数据写入时,使用各BF进行筛选,将第一个被写入数据的key对应的内部标记位为O的BF置1,并找出该key对应的标记为I的BF,将找出的各BF的权重加权得到热度评分,若该热度评分达到预设的阈值,则该key对应的数据被认为是更新频度高的热数据,这样就能够对筛选出的热数据做相应的处理。
[0005]发明人在执行上述方法流程时,发现现有技术方案至少存在如下技术问题:
[0006]由于受到内存大小限制,所能建立的Multi BF的数量有限,而在有数据写入时,若所有Multi BF中该数据的key对应的标记位都被标记为I时,热度评分可能达到最大值,因而无法再将热度评分的阈值设置为更高的数值,进而无法筛选更高更新频度的数据,影响了存储设备的使用性能。

【发明内容】

[0007]本发明的实施例提供一种降低LSM Tree写放大的方法和装置,用于解决由于受到内存大小限制,而使得Multi BF的数量有限,无法将热度评分的阈值设置为更高的数值,导致无法筛选更高更新频度的数据,影响了存储设备的使用性能的问题。
[0008]为达到上述目的,本发明的实施例采用如下技术方案:
[0009]第一方面,本发明提供了一种降低LSM Tree写放大的方法,包括:
[0010]当有数据写入时,查询所述数据的key是否在热度表中;所述key是指key-value存储模式中的数据索引,所述热度表用于记录多个key对应的数据的更新频度;
[0011]若所述数据的key不在所述热度表中,则将所述数据直接写入到持久化设备中;
[0012]若所述数据的key在所述热度表中,则将所述key的counter加I,并判断所述key的counter是否达到热度阈值;所述counter是指key所对应的数据的更新频度,所述热度阈值用于表示所述key对应的数据的更新频度上限;
[0013]若所述key的counter达到热度阈值,将所述key对应的数据写入PRAM设备中进行原地更新;所述原地更新是指在数据存储的位置直接进行更新;
[0014]若所述key的counter未达到热度阈值,则将所述数据直接写入到持久化设备中。
[0015]结合第一方面,在第一方面的第一种可能的实现方式中,在若所述数据的key不在所述热度表中之后,还包括:
[0016]建立多组布隆过滤器Multi BF,并为每个BF设定权重;所述BF用于标记一段时间的写入的数据的key,能够定时对内部的标记位进行清零操作,所述权重用于为需要写入持久化设备的数据的key进行热度评分,与所述BF最近一次清O时刻与当前时刻的时间间隔成正相关关系;
[0017]根据所述数据的key,计算所述key在BF中对应的标记位;
[0018]轮询各BF,查找第一个所述key对应的标记位为O的BF,并将所述标记位置I ;
[0019]根据每个BF的权重对所述数据的key进行热度评分,若所述数据的key的热度评分达到阈值,则判定所述数据为热数据,并在所述热度表中记录所述数据的key,将所述数据的key对应的counter标记为固定数值。
[0020]结合第一方面的第一种可能实现的方式,在第二种可能实现的方式中,在所述热度表中记录所述数据的key,将所述数据的key对应的counter标记为固定数值之外,还包括:
[0021]将所述counter设置为预设周期自动减1,并在所述counter减至O时,将所述counter对应的key移出热度表;
[0022]结合第一方面的第二种可能的实现方式,在第三种可能实现的方式中,在所述热度表中记录所述数据的key,将所述数据的key对应的counter标记为固定数值之后,还包括:
[0023]若所述key的counter减至热度阈值以下,则告知所述PRAM设备所述key的数据已变为冷数据,以使得所述PRAM设备能够累计所述key对应的数据的大小,并当累计的总量达到总量阈值时,触发compact操作,将所述key对应的数据写入持久化设备中。
[0024]第二方面,本发明还提供了一种降低LSM Tree写放大的装置,所述装置包括:
[0025]查询模块,用于当有数据写入时,查询所述数据的key是否在热度表中;所述key是指key-value存储模式中的数据索引,所述热度表用于记录多个key对应的数据的更新频度;
[0026]控制模块,用于在所述数据的key不在所述热度表中时,将所述数据直接写入到持久化设备中;在所述数据的key在所述热度表中时,将所述key的counter加I,并判断所述key的counter是否达到热度阈值;所述counter是指key所对应的数据的更新频度,所述热度阈值用于表示所述key对应的数据的更新频度上限;在所述key的counter达到热度阈值时,将所述key对应的数据写入PRAM设备中进行原地更新;所述原地更新是指在数据存储的位置直接进行更新;在所述key的counter未达到热度阈值时,将所述数据直接写入到持久化设备中。
[0027]结合第二方面,在第二方面的第一种可能的实现方式中,所述装置还包括计算模块:
[0028]控制模块,还用于建立多组布隆过滤器Multi BF,并为每个BF设定权重;所述BF用于标记一段时间的写入的数据的key,能够定时对内部的标记位进行清零操作,所述权重用于为需要写入持久化设备的数据的key进行热度评分,与所述BF最近一次清O时刻与当前时刻的时间间隔成正相关关系;根据每个BF的权重对所述数据的key进行热度评分,在所述数据的key的热度评分达到阈值时,判定所述数据为热数据,并在所述热度表中记录所述数据的key,将所述数据的key对应的counter标记为固定数值;
[0029]计算模块,用于根据所述数据的key,计算所述key在BF中对应的标记位;
[0030]查询模块,还用于轮询各BF,查找第一个所述key对应的标记位为O的BF,并将所述标记位置I。
[0031]结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述控制模块,还用于将所述counter设置为预设周期自动减1,并在所述counter减至O时,将所述counter对应的key移出热度表。
[0032]结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述控制模块,还用于在所述key的counter减至热度阈值以下时,告知所述PRAM设备所述key的数据已变为冷数据,以使得所述PRAM设备能够累计所述key对应的数据的大小,并当累计的总量达到总量阈值时,触发compact操作,将所述key对应的数据写入持久化设备中。
[0033]本发明实施例提供的一种降低LSM Tree写放大的方法和装置,通过在有数据写入时,查询所写入的数据的key是否存在于热度表中,当查询结果为否时,将该数据直接写进持久化设备,否则,则将该key的counter加I,并判断该key的counter是否达到热度阈值,当判断结果为是时,将该key对应的数据写入PRAM设备中进行原地更新,否则将该数据直接写入持久化设备中的方法,通过判断数据的key在在热度表中时,该key所累计的counter是否达到阈值来决定是将数据写入持久化设备中,还是写入PRAM设备中进行原定更新,通过在使用Multi BF进行数据筛选之外,还增加了热度表来继续对数据的热度进行统计,并将筛选出的热度达到阈值的数据写入PRAM设备中进行原地更新,使得数据的热度阈值能够在热度表中进行设置,避免了无法对更新频度较高的数据进行筛选的现象,解决了由于受到内存大小限制,而使得Multi BF的数量有限,无法将热度评分的阈值设置为更高的数值,导致无法筛选更高更新频度的数据,影响了存储设备的使用性能的问题。
【附图说明】
[0034]为了更清
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1