一种RocksDB存储大值数据的方法与流程

文档序号:24809801发布日期:2021-04-23 18:01阅读:来源:国知局

技术特征:
1.一种rocksdb存储大值数据的方法,其特征在于,通过自定义hdfs表构建器将大值数据从kv中分离出来,单独存储到hdfs文件,sst中只存储key+hdfs文件路径;通过自定义hdfs文件收集器及扩展事件监听器来监听压缩合并事件,在压缩合并过程,比较输入、输出sst的kv数据的文件集合来删除hdfs文件。2.根据权利要求1所述的方法,其特征在于,通过使用tablepropertiescollector(表属性收集器)

hdfs文件收集器来收集每个sst中有多少value是存放在hdfs上以及它们的文件路径,并将收集到的hdfs文件路径构建为一个文件集合。3.根据权利要求2所述的方法,其特征在于,扩展事件监听器来监听压缩合并的事件,通过比较压缩合并过程中输入、输出sst文件的文件集合来决定哪些hdfs文件是需要删除的,采用2个文件集合异或方式选出待删除的hdfs文件,再通过hdfs文件系统接口删除这些大value值所存储的文件。4.根据权利要求3所述的方法,其特征在于,kv数据的写请求首先写入wal中,保证数据不丢失;然后再写入内存表中,当内存表数据达到所设定的阈值后,需要将内存表数据持久化到磁盘的sst文件,在将kv数据写入磁盘时判断kv数据中的value值是否大于阈值,如果大于阈值,则将大值value分离出来作为独立文件存储到hdfs;sst文件compaction时清理被标记删除的kv键值对,此时需要从hdfs把文件删除。5.根据权利要求4所述的方法,其特征在于,数据写入rocksdb支持用户使用自定义的表构建器将内存表的kv数据持久化,默认使用sst表构建器类将kv数据写入sst文件格式。使用hdfs表构建器,该构建器封装了sst表构建器类对sst文件的写操作和hdfs文件写操作。6.根据权利要求5所述的方法,其特征在于,当需要持久化kv数据时,hdfs表构建器首先判断value值大小是否超过所设定的阈值,如果没有超过阈值,则直接调用原sst表构建器将key

value数据写入sst文件;如果超过阈值,则判定为是大值value,首先要调用hdfs rpc客户端在hdfs文件系统创建一个唯一的文件,将大值value的内容写入该hdfs文件;hdfs文件写入成功后,将该hdfs文件路径作为新的kv数据,新key是原来的key,而新value则是原value值的引用
‑“
hdfs文件路径”,然后使用sst表构建器将这个新的kv数据写入sst文件,减小写入sst文件的数据量。7.根据权利要求6所述的方法,其特征在于,在后期sst文件压缩、合并过程中,对新生成的kv进行处理,而存储在hdfs上的文件不需要合并,删除即可。8.根据权利要求3所述的方法,其特征在于,kv数据读取在读取kv数据时,首先会从sst文件中读取key

value数据,并判断该kv数据的value值类型,如果是普通value值则直接返回该kv数据;如果value是hdfs文件路径,则使用hdfs客户端通过hdfs文件系统接口读取该文件的内容,以文件内容作为新的value值,组成kv数据
返回给客户端。9.根据权利要求3所述的方法,其特征在于,数据删除rocksdb所有的更新操作都是以追加的方式写入sst文件,kv数据的更新会作为新的版本写入文件,kv的删除则是对kv标记为“删除”,然后在压缩合并时对已经标记为“删除”的数据和旧版本的历史数据执行物理删除;采用大值value分离之后,收集压缩合并过程中所清理的key+path集合,然后删除hdfs文件系统上的这些文件。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1