[发明专利]一种利用哈希减少写停顿的键值存储方法有效
申请号: | 202110854214.5 | 申请日: | 2021-07-27 |
公开(公告)号: | CN113553476B | 公开(公告)日: | 2023-05-26 |
发明(设计)人: | 马振禹;陈珊珊;高隽;安文涛;陈思晔 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G06F16/901 | 分类号: | G06F16/901;G06F16/903 |
代理公司: | 苏州和氏璧知识产权代理事务所(普通合伙) 32390 | 代理人: | 李晓星 |
地址: | 210023 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 利用 减少 停顿 键值 存储 方法 | ||
1.一种利用哈希减少写停顿的键值存储方法,其特征在于:包括如下步骤1)LSM树存储:HSKV遵循HashKV的基础,使用KV分离,只在LSM树中存储键和元数据,用于索引KV对,同时将值存储在称为值存储的单独区域中,在KV分离之上,HSKV三个核心设计元素,实现高效的储值管理;
2)存储管理:Mem Segments(Write cache):我们将Mem Segments的每一列称为memsegment,将insert/update的KV对,利用哈希散列到对应的mem segment末尾,当memsegment大小达到阈值时,对其进行KV分离,将key与元数据单独保留成为Mem Table加入LSM-Tree,将整个mem segment直接添加到对应的段组中;
KV/KP缓存:与Mem segments类似,KV/KP缓存每一列称之为K segment,在其中我们缓存散列值相同的KV/KP,并且根据KV对的热度,动态的替换KV/KP缓存数据,以此实现加速查询;
Segment Table:记录main segment,log segment的指针以及垃圾回收标志位,用以后续的添加,以及判断该段是否正在进行垃圾回收,是否可以查询该段;
LSM-tree:与普通的LSM-tree操作相同,只是根据值大小,动态决定是否存储值;
Value store:Main segments长度固定,当Main segments满时,从Log segments扩展一段到表尾,并记录到segment table中;Log segments用来动态的分配给各个段,Colddata log存储冷数据,GC策略与WiscKey中的vLog类似;
对于每一个insert/update的KV对,将其散列到Mem segments的某一列中,并将其添加至该列表尾;当某一列大小达到阈值,我们将其取出进行KV分离,将Key以及元数据,布隆过滤器存入Mem Table中压入L0层,将mem segment的整列作为一个log segment加入对应的段组;如果对应的main segment为空,则优先加入main segment,否则申请一个新的logsegment加入该段并写入数据;并及时更新对应Group所拥有的log segment,我们将这种main segment与log segment组成的段称为Segment Table,这里改进了HashKV的SegmentTable管理策略。
2.根据权利要求1所述的一种利用哈希减少写停顿的键值存储方法,其特征在于,所述HSKV三个核心设计元素为:更改写缓存结构、加入KV/KP缓存机制和优化段表。
3.根据权利要求2所述的一种利用哈希减少写停顿的键值存储方法,其特征在于,所述更改写缓存结构:将Write cache改为Mem Segments可以优化写速度,原有的MemTable由于需要KV分离,导致需要每次写入时,对KV对依次进行分离并计算所属Main segment进行写入,导致无法顺序写入;在内存中将Write cache改为Mem Segments,Mem Segments的长度与main segment长度相同,HashKV默认100,且由100个mem segment(顺序表)构成;由于每个main segment大小为1MB,所以默认配置下Mem Segments在内存中占用100MB空间。
4.根据权利要求2所述的一种利用哈希减少写停顿的键值存储方法,其特征在于,所述加入KV/KP缓存机制:由于存在读放大,查询速度会大大降低,为了提升查询性能,在选择性KV分离的基础上,将比较热的KV对进行缓存,且根据其值的尺寸,选择缓存值还是指向值的指针,这样可以优化查询的速度,减少读停顿。
5.根据权利要求2所述的一种利用哈希减少写停顿的键值存储方法,其特征在于,所述优化段表:HashKV在GC时,会造成写停顿,在GC时,如果mem segment满,允许继续向main/log segment写入,这样就可以减少写停顿。
6.根据权利要求1所述的一种利用哈希减少写停顿的键值存储方法,其特征在于,所述键的查询算法为:Get(key)
def Get(key):
#查询memtable
value=query(key,memtable)
if value:
return value
#查询KV/KP缓存
value=query(key,cache)
if value:
return value
#查询LSM-Tree
type,value=query(key,LSM-Tree)#小尺寸KV存储在LSM-Tree中
if type==value:
return value
#LSM-Tree中存在则查询value store
elif type==exist:
value=query(key,segment table)
return value。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110854214.5/1.html,转载请声明来源钻瓜专利网。