基于持久性内存的键值对存储系统及方法

专利2026-08-24  13


本发明涉及计算机科学数据库,尤其涉及一种基于持久性内存(pm,persistent memory)的键值对存储系统及方法。


背景技术:

1、新兴的持久性内存具有低延迟,高容量以及数据掉电不丢失的特性,大大提高了键值对存储系统的性能。图1使用唯一商业可用的pm(即intel optane dcpmm)作为示例来说明持久性内存的架构。与dram类似,pm被封装在内存总线上,并以64b缓存行粒度处理请求。对pm的写请求首先会落到pm内部的写合并缓冲区(xpbuffer),然后再被转换为256b的数据单元写入到底层的存储介质中。因此,键值对存储系统中的小数据的随机插入操作面临着严重的写放大问题。当键值对数据小于256b且随机写入时,每次写入都会被放大成256b的数据写入到pm存储介质中,从而降低整个键值对存储系统的插入性能。


技术实现思路

1、为了解决持久性内存中键值对数据随机插入带来的写放大问题,本发明提出一种基于持久性内存的键值对存储系统及方法。

2、本发明采用的技术方案是:

3、一种基于持久性内存的键值对存储方法,包括:

4、在dram中设置若干缓冲结点和索引层;在pm中设置数据存储区和写前日志存储区;其中每个缓冲结点设置有指向位于持久性内存pm中的数据存储区的指针、用于记录未写入到数据存储区的键值对数据数量的计数器和用于存储键值对数据的槽位;

5、当有键值对需要存储插入时,通过索引层查找到对应数据存储区以及对应的缓冲结点;读取对应的缓冲结点中计数器的值,判断计数器的值是否等于缓冲结点存储键值对数据的总容量,若是,则说明无空闲槽位,将缓冲结点中已有的键值对数据和待插入的键值对数据一起刷新到数据存储区中,完成插入;若否,在写前日志存储区为待插入的键值对数据插入一条写前日志,所述写前日志包含键值对数据信息和时间戳;将待插入的键值对数据插入到第一个空闲槽位中并计数器加一,完成插入;

6、在键值对存储期间,定期或不定期清理回收写前日志存储区的存储空间。

7、本发明通过在细粒度的dram缓冲结点中汇聚插入数据来减少键值对数据带来的pm写入次数;同时通过选择性的写日志技术(对于缓冲节点满时的那次插入操作,不记录其键值对数据以减少日志次数)以及局部感知的日志回收技术来减少写前日志带来的pm写入次数。

8、进一步地,所述每个缓冲结点还设有用于日志回收过程的日志位图,所述日志位图用于存储对应槽位插入键值对数据时的当前全局日志标志。

9、进一步地,在键值对存储期间,依据日志位图定期清理回收写前日志存储区的存储空间,具体如下:

10、翻转全局日志标志;

11、记录当前写前日志的结尾位置,根据此位置将写前日志划分为old-logs和new-logs两种类型;

12、搜索所有缓冲结点,将槽位小于等于计数器且其日志位图中对应的位不等于当前全局日志标志的键值对数据添加一条写前日志到new-logs中,并翻转对应槽位的日志位图中的位为当前全局日志标志;

13、清理回收原来的old-logs的存储空间。

14、进一步地,依据当前写前日志存储区中存储的数据情况判断是否开始回收写前日志存储区的存储空间,其中,若当前写前日志存储区中存储的还缓存在缓冲结点的数据占比小于20%时开始回收写前日志存储区的存储空间。

15、进一步地,每个缓冲结点存储键值对数据的总容量小于256b。

16、进一步地,所述全局日志标志在0与1之间切换。

17、一种基于持久性内存的键值对存储系统,用于实现所述基于持久性内存的键值对存储方法,包括:

18、动态随机存储器(dram,dynamic random access memory),所述dram中设置若干缓冲结点和索引层;每个缓冲结点设置有指向位于pm中的数据存储区的指针、用于记录未写入到数据存储区的键值对数据数量的计数器和用于存储键值对数据的槽位;

19、持久性内存(pm,persistent memory),所述pm中设置有数据存储区和写前日志存储区;

20、键值对写入单元,用于当有键值对需要存储插入时,通过索引层查找到对应数据存储区以及对应的缓冲结点;读取对应的缓冲结点中计数器的值,判断计数器的值是否等于缓冲结点存储键值对数据的总容量,若是,则说明无空闲槽位,将缓冲结点中已有的键值对数据和待插入的键值对数据一起刷新到数据存储区中,完成插入;若否,在写前日志存储区为待插入的键值对数据插入一条写前日志,所述写前日志包含键值对数据信息和时间戳;将待插入的键值对数据插入到第一个空闲槽位中并计数器加一,完成插入;

21、写前日志清理回收单元,用于在键值对存储期间,定期或不定期清理回收写前日志存储区的存储空间。

22、本发明的有益效果是:本发明使用细粒度的dram缓冲结点减少键值对数据带来的pm写入次数,使用选择性的写日志技术以及局部感知的日志回收技术减少写前日志带来的pm写入次数,从而降低持久性键值对存储系统插入过程中的写放大,提高整个存储系统的性能。



技术特征:

1.一种基于持久性内存的键值对存储方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述每个缓冲结点还设有用于日志回收过程的日志位图,所述日志位图用于存储对应槽位插入键值对数据时的当前全局日志标志。

3.根据权利要求2所述的方法,其特征在于,在键值对存储期间,依据日志位图定期清理回收写前日志存储区的存储空间,具体如下:

4.根据权利要求1所述的方法,其特征在于,依据当前写前日志存储区中存储的数据情况判断是否开始回收写前日志存储区的存储空间,其中,若当前写前日志存储区中存储的还缓存在缓冲结点的数据占比小于20%时开始回收写前日志存储区的存储空间。

5.根据权利要求1所述的方法,其特征在于,每个缓冲结点存储键值对数据的总容量小于256b。

6.根据权利要求1所述的方法,其特征在于,所述全局日志标志在0与1之间切换。

7.一种基于持久性内存的键值对存储系统,其特征在于,用于实现权利要求1-6任一项所述基于持久性内存的键值对存储方法,包括:


技术总结
本发明提出一种基于持久性内存的键值对存储系统及方法,本发明系统包括DRAM、PM、键值对写入单元、写前日志清理回收单元四部分,其中在DRAM中设置若干缓冲结点和索引层;在PM中设置数据存储区和写前日志存储区;所述缓冲结点用于汇聚写入数据,在缓冲结点满时再进行持久化写入至PM中的数据存储区;所述PM中的写前日志存储区维护一个写前日志,用于保证系统的崩溃一致性。键值对写入单元用于执行键值对写入操作,在DRAM缓冲结点中汇聚写入数据,在缓冲区满时进行持久化写入;本发明通过选择性的写日志技术以及局部感知的日志回收技术来减少写前日志带来的PM写入次数,从而提高系统插入性能。

技术研发人员:何水兵,汪佳磊,李振鑫,党政,洪佩怡,汪睿
受保护的技术使用者:浙江大学
技术研发日:
技术公布日:2024/6/26
转载请注明原文地址:https://doc.8miu.com/read-1833358.html

最新回复(0)