一种键值存储系统中文件压实的方法和装置制造方法及图纸

技术编号:14662675 阅读:84 留言:0更新日期:2017-02-17 09:57
本发明专利技术实施例公开了一种键值存储系统中文件压实的方法和装置,涉及数据处理技术领域,用以减少执行压实操作时所需要占用的I/O带宽和内存资源,从而使得在执行压实操作的过程中,不影响执行其他操作的速率,以提升用户体验。本发明专利技术实施例提供的方法包括:根据待压实SSTable对应的Delete Log,对待压实SSTable进行压实,生成新的SSTable;其中,该Delete Log中记录有待压实SSTable中保存的键值存储KV-Store系统中的非最新Value所对应的Key,该新的SSTable中不包含该Delete Log中的Key对应的Key-Value对;删除待压实SSTable。

【技术实现步骤摘要】

本专利技术涉及数据处理
,尤其涉及一种KV-Store(Key-ValueStore,键值存储)系统中文件压实的方法和装置。
技术介绍
KV-Store系统被广泛应用于大数据存储与处理中,其数据模型以Key-Value(键-值)对为基本单位;其提供的基本的操作包括GET(读)操作和PUT(写)操作。服务器执行PUT操作的过程通常包括:先将Key-Value对写入内存中的MemTable(MemoryTable,内存表)中;当MemTable已满时,在外部存储(简称外存,例如磁盘等)中创建一个SSTable(SortedStringTable,有序字符串表),然后将MemTable中的Key-Value对排序写入该SSTable中,PUT操作在用Key-Value对的新值代替旧值的时候,并不对仍然保存在外存的某个SSTable中的旧值进行删除;依次类推,随着PUT操作的增多,外存中可以包含一个或多个SSTable,其中包含的不断积累的大量被替代的旧值也会带来空间占用和影响性能的问题。后续通过Compaction(压实)机制归并全部或部分SSTable,以去除同一Key对应的非最新Value所对应的Key-Value对,从而实现节省存储空间的目的。目前,Compaction一般为多文件压实,即实现多个SSTable之间的归并;具体可以分为MajorCompaction(全部压实)和MinorCompaction(部分压实)。其中,MajorCompaction是指一次归并所有SSTable,MinorCompaction是指一次归并部分SSTable。利用上述提供的方法执行压实操作时,需要同时读取多个待压实SSTable中的数据,这需要占用很大的I/O带宽和内存资源;这样,在利用上述提供的方法执行压实操作的同时,能够预留给其他操作的资源较少,使得执行其他操作的速率会很慢,从而影响用户的使用。
技术实现思路
本专利技术的实施例提供一种键值存储系统中文件压实的方法和装置,用以减少执行压实操作时所需要占用的I/O带宽和内存资源,从而使得在执行压实操作的过程中,不影响执行其他操作的速率,以提升用户体验。为达到上述目的,本专利技术的实施例采用如下技术方案:第一方面,提供一种键值存储KV-Store系统中文件压实的方法,包括:根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable;其中,所述DeleteLog中记录有所述待压实SSTable中保存的所述KV-Store系统中的非最新值Value所对应的键Key,所述新的SSTable中不包含所述DeleteLog中的Key对应的Key-Value对;删除所述待压实SSTable。结合第一方面,在第一种可能的实现方式中,在所述根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable之前,所述方法还包括:在所述待压实SSTable中,确定所述KV-Store系统中的非最新Value所对应的Key,作为目标Key;在所述DeleteLog中记录所述目标Key。结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述在所述DeleteLog中记录所述目标Key,包括:在确定所述DeleteLog中不包含所述目标Key时,在所述DeleteLog中记录所述目标Key。结合第一方面、第一方面的一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,所述根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable,包括:拷贝所述待压实SSTable中的、且不属于所述DeleteLog中的Key对应的Key-Value,生成新的SSTable。结合第一方面,在第四种可能的实现方式中,在所述根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable之前,所述方法还包括:接收携带有待查找Key的读GET操作;在根据所述GET操作获取到所述待查找Key对应的最新Value后,确定所述待查找Key对应的次新Value所在的SSTable,在所述确定的SSTable对应的DeleteLog中记录所述待查找Key。结合第一方面,在第五种可能的实现方式中,所述KV-Store系统应用于增量存储场景,在所述根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable之前,所述方法还包括:接收携带有待查找键Key的读GET操作;在根据所述GET操作获取到所述待查找Key对应的最新Value后,确定所述待查找Key对应的最新Value所在的SSTable,在所述确定的SSTable对应的DeleteLog中记录所述待查找Key;接收携带有所述待查找Key的PUT操作。结合第一方面的第四种可能的实现方式或第五种可能的实现方式,在第六种可能的实现方式中,所述在所述确定的SSTable对应的DeleteLog中记录所述待查找Key,包括:在所述确定的SSTable对应的DeleteLog中不包含所述待查找Key时,在所述确定的SSTable对应的DeleteLog中记录所述待查找Key。结合第一方面,在第七种可能的实现方式中,所述根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable,包括:当待压实有序字符串表SSTable对应的待删除日志DeleteLog中的Key的数量大于或等于预设阈值时,根据所述DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable。结合第一方面,在第八种可能的实现方式中,所述待压实SSTable对应一个布隆过滤器BloomFilter,所述BloomFilter中记录有所述DeleteLog中的Key,所述方法还包括:当所述KV-Store系统所在的服务器故障恢复后,将所述BloomFilter的初始值设置为空;或,在所述KV-Store系统为分布式存储系统、且所述DeleteLog为本地DeleteLog时,当所述KV-Store系统所在的服务器故障恢复后,根据全局DeleteLog中记录的Key确定所述BloomFilter的初始值;其中,所述全局DeleteLog中记录有所述本地DeleteLog中的Key。第二方面,提供一种服务器,包括键值存储KV-Store系统,所述服务器还包括:压实单元,用于根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable;其中,所述DeleteLog中记录有所述待压实SSTable中保存的所述KV-Store系统中的非最新值Value所对应的键Key,所述新的SSTable中不包含所述DeleteLog中的Key对应的Key-Value对;删除单元,用于删本文档来自技高网
...
一种键值存储系统中文件压实的方法和装置

【技术保护点】
一种键值存储KV‑Store系统中文件压实的方法,其特征在于,包括:根据待压实有序字符串表SSTable对应的待删除日志Delete Log,对所述待压实SSTable进行压实,生成新的SSTable;其中,所述Delete Log中记录有所述待压实SSTable中保存的所述KV‑Store系统中的非最新值Value所对应的键Key,所述新的SSTable中不包含所述Delete Log中的Key对应的Key‑Value对;删除所述待压实SSTable。

【技术特征摘要】
1.一种键值存储KV-Store系统中文件压实的方法,其特征在于,包括:根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable;其中,所述DeleteLog中记录有所述待压实SSTable中保存的所述KV-Store系统中的非最新值Value所对应的键Key,所述新的SSTable中不包含所述DeleteLog中的Key对应的Key-Value对;删除所述待压实SSTable。2.根据权利要求1所述的方法,其特征在于,在所述根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable之前,所述方法还包括:在所述待压实SSTable中,确定所述KV-Store系统中的非最新Value所对应的Key,作为目标Key;在所述DeleteLog中记录所述目标Key。3.根据权利要求2所述的方法,其特征在于,所述在所述DeleteLog中记录所述目标Key,包括:在确定所述DeleteLog中不包含所述目标Key时,在所述DeleteLog中记录所述目标Key。4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable,包括:拷贝所述待压实SSTable中的、且不属于所述DeleteLog中的Key对应的Key-Value,生成新的SSTable。5.根据权利要求1所述的方法,其特征在于,在所述根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable之前,所述方法还包括:接收携带有待查找Key的读GET操作;在根据所述GET操作获取到所述待查找Key对应的最新Value后,确定所述待查找Key对应的次新Value所在的SSTable,在所述确定的SSTable对应的DeleteLog中记录所述待查找Key。6.根据权利要求1所述的方法,其特征在于,所述KV-Store系统应用于增量存储场景,在所述根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable之前,所述方法还包括:接收携带有待查找键Key的读GET操作;在根据所述GET操作获取到所述待查找Key对应的最新Value后,确定所述待查找Key对应的最新Value所在的SSTable,在所述确定的SSTable对应的DeleteLog中记录所述待查找Key;接收携带有所述待查找Key的写PUT操作。7.根据权利要求5或6所述的方法,其特征在于,所述在所述确定的SSTable对应的DeleteLog中记录所述待查找Key,包括:在所述确定的SSTable对应的DeleteLog中不包含所述待查找Key时,在所述确定的SSTable对应的DeleteLog中记录所述待查找Key。8.根据权利要求1所述的方法,其特征在于,所述根据待压实有序字符串表SSTable对应的待删除日志DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable,包括:当待压实有序字符串表SSTable对应的待删除日志DeleteLog中的Key的数量大于或等于预设阈值时,根据所述DeleteLog,对所述待压实SSTable进行压实,生成新的SSTable。9.根据权利要求1所述的方法,其特征在于,所述待压实SSTable对应一个布隆过滤器BloomFilter,所述BloomFilter中记录有所述DeleteLog中的Key,所述方法还包括:当所述KV-Store系统所在的服务器故障恢复后,将所述BloomFilter的初始值设置为空;或,在所述KV-Store系统为分布式存储系统、且所述DeleteLog为本
\t地D...

【专利技术属性】
技术研发人员:陈世敏朱良昌张军
申请(专利权)人:华为技术有限公司中国科学院计算技术研究所
类型:发明
国别省市:广东;44

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

1