[发明专利]一种使用非易失性内存介质的键值对持久存储方法及系统有效
申请号: | 201710834389.3 | 申请日: | 2017-09-15 |
公开(公告)号: | CN107728937B | 公开(公告)日: | 2020-09-04 |
发明(设计)人: | 黄林鹏;朱燕民;沈艳艳;刘昊 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F11/10 |
代理公司: | 上海汉声知识产权代理有限公司 31236 | 代理人: | 郭国中 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 使用 非易失性 内存 介质 键值 持久 存储 方法 系统 | ||
1.一种使用非易失性内存介质的键值对持久存储方法,其特征在于,同时使用易失性内存介质和非易失性内存介质构建持久键值存储系统,并包括步骤:
易失性内存介质构建步骤:在易失性内存介质中构建静态散列表接收来自客户端的读写访问请求;
非易失性内存介质构建步骤:在非易失性内存介质中构建动态散列表存储键值对的元数据和键值对在数据区的内存偏移地址,在非易失性内存中的动态散列表之后构建数据存储区,存放键值对大小、键值对数据和键值对校验和;
数据一致性保障步骤:使用结合键值对校验和的检查点的机制,维护持久键值存储系统的数据一致性;
所述静态散列表大小固定,每一个散列表中含有2^16个桶,每个桶中含有四个存储单元,每个存储单元中含有64位的键的散列值、键值对在非易失性内存存储区中64位的内存偏移地址和32位的键值对校验和;
所述静态散列表中的散列算法采用两个散列函数的布谷鸟散列算法,当静态散列表的基本填满时,对该静态散列表进行固定操作,固定后的静态散列表将通过合并线程和位于非易失性内存中动态散列表进行合并,完成动态扩展;
所述动态散列表的初始大小和一个静态散列表相同,含有2^16个桶,每个桶中含有四个存储单元,每个存储单元中含有一个1位的标志位,该标志位标识该存储单元是否已被占用,一个64位的键的散列值,一个64位的键值对在非易失性内存存储区中的内存偏移地址和一个32位的键值对校验和;
所述结合键值对校验和的检查点的机制包括:
在完成每次静态散列表合并时,向动态散列表中原本存放内存偏移地址和校验和的部位,存放一个固定内容的值和一个递升版本号用来记录本次合并操作的完成,并在系统恢复或重启时,根据最新的检查点回溯比对键值对校验和,找出校验和不一致的键值对并且丢弃,从而维护系统的数据一致性。
2.一种使用非易失性内存介质的键值对持久存储系统,其特征在于,包括
易失性内存介质:包括静态散列表,接收来自客户端的读写访问请求;
非易失性内存介质:包括动态散列表,存储键值对的元数据和键值对在数据区的内存偏移地址,在所述动态散列表之后还包括数据存储区,存放键值对大小、键值对数据和键值对校验和;
数据一致性保障模块:使用结合键值对校验和的检查点的机制,维护持久键值存储系统的数据一致性;
所述静态散列表大小固定,每一个散列表中含有2^16个桶,每个桶中含有四个存储单元,每个存储单元中含有64位的键的散列值、键值对在非易失性内存存储区中64位的内存偏移地址和32位的键值对校验和;
所述静态散列表中的散列算法采用两个散列函数的布谷鸟散列算法,当静态散列表的基本填满时,对该静态散列表进行固定操作,固定后的静态散列表将通过合并线程和位于非易失性内存中动态散列表进行合并,完成动态扩展;
所述动态散列表的初始大小和一个静态散列表相同,含有2^16个桶,每个桶中含有四个存储单元,每个存储单元中含有一个1位的标志位,该标志位标识该存储单元是否已被占用,一个64位的键的散列值,一个64位的键值对在非易失性内存存储区中的内存偏移地址和一个32位的键值对校验和;
所述结合键值对校验和的检查点的机制包括:
在完成每次静态散列表合并时,向动态散列表中原本存放内存偏移地址和校验和的部位,存放一个固定内容的值和一个递升版本号用来记录本次合并操作的完成,并在系统恢复或重启时,根据最新的检查点回溯比对键值对校验和,找出校验和不一致的键值对并且丢弃,从而维护系统的数据一致性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710834389.3/1.html,转载请声明来源钻瓜专利网。