CN117908755A - 一种基于非易失性内存的键值存储写优化方法 - Google Patents
一种基于非易失性内存的键值存储写优化方法 Download PDFInfo
- Publication number
- CN117908755A CN117908755A CN202211239115.7A CN202211239115A CN117908755A CN 117908755 A CN117908755 A CN 117908755A CN 202211239115 A CN202211239115 A CN 202211239115A CN 117908755 A CN117908755 A CN 117908755A
- Authority
- CN
- China
- Prior art keywords
- persistent memory
- memory table
- data
- key
- key value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000005457 optimization Methods 0.000 title claims abstract description 12
- 230000002085 persistent effect Effects 0.000 claims abstract description 178
- 230000006835 compression Effects 0.000 claims abstract description 21
- 238000007906 compression Methods 0.000 claims abstract description 21
- 230000003321 amplification Effects 0.000 claims abstract description 11
- 238000003199 nucleic acid amplification method Methods 0.000 claims abstract description 11
- 239000007787 solid Substances 0.000 claims abstract description 10
- 238000013523 data management Methods 0.000 claims abstract description 5
- 230000008520 organization Effects 0.000 claims description 7
- 238000003780 insertion Methods 0.000 claims description 5
- 230000037431 insertion Effects 0.000 claims description 5
- 238000012216 screening Methods 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 230000001360 synchronised effect Effects 0.000 claims description 2
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000001680 brushing effect Effects 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于非易失性内存的键值存储写优化方法,包括非易失性内存友好的缓存层:将日志结构合并树按照层进行划分,顶部若干层作为非易失性内的缓存树,在非易失性内存中使用持久内存表作为数据管理单元,并使用支持多版本并发控制的持久内存跳表对各层持久内存表进行索引;轻量级数据刷写算法:将键值对数据同步写入持久内存和易失性内存,实现高速数据刷写;列表压缩算法:仅通过重建索引对持久内存表归并压缩,避免重写数据;基于最近最少使用的缓存溢出策略:充分利用数据局部性以降低固态硬盘写入量。本发明充分利用非易失性内存特性优化了日志结构合并树键值存储的写性能,降低了写放大并减少了因固态硬盘性能瓶颈导致的写停滞。
Description
本发明涉及键值存储领域,具体的涉及一种键值存储写优化方法,尤其是涉及一种基于非易失性内存的键值存储写优化方法。
背景技术
键值存储被广泛应用于从个人终端设备到大型分布式云服务器的各种应用程序,当前已成为数据基础设施一个重要的组成部分,常被用于处理实时的随机数据访问、管理元数据以及充当更低层级的存储系统的缓存层等。随着应用数据量的扩大以及更多新型存储技术的出现,键值存储得到了更深远的发展和更广泛的使用。
日志结构合并树(LSM树)是被广泛应用于现代键值存储的数据结构。它对数据进行异地更新从而将随机读写转化为顺序读写,可提供较好的数据写入性能。LSM树中所有的键值对请求(包括插入、更新、删除)都通过顺序添加日志条目来实现,随后需要在后台定期定量地对日志条目进行归并整理。
当前的LSM设计存在写停滞和写放大问题。
写停滞问题主要来源于在大量写入的工作流当中,后台线程无法及时将LSM树较上层的SSTable归并整理到底层,导致无法及时为LSM树上层腾出空间以接收新的ImmuTable数据刷入,此时需要暂停全部数据写入,直到后台线程为新SSTable的刷写腾出空间。
写放大问题主要存在于LSM树的后台归并整理当中。现有LSM树归并整理受限于固态硬盘(SSD)的高延迟和仅支持以4KB块为粒度进行读取的限制,必须首先将所有参与归并整理的SSTable的数据全部加载到易失性内存(DRAM)当中,在DRAM当中进行归并排序并去除冗余数据后再写回SSD,所以每次归并整理必须重写所有参与的SSTable。且由于LSM树各层容量逐层扩大,对单个SSTable的更新需要传播到下一层中的多个有重叠键范围的SSTable。导致归并整理的效率随着层数增加进一步降低、写放大更加严重。
非易失性内存(NVM)提供与DRAM相当的读写延迟,以及与SSD相似的数据持久存储能力。NVM拥有比SSD更高的读写寿命,并且支持以字节为粒度进行数据读写,这允许我们在其中构建与DRAM内部类似的数据结构,以改进当前面向SSD设计的LSM树,进一步提升其写性能。
发明内容
针对现有技术的缺陷,本发明的目的是提供一种基于非易失性内存的键值存储写优化方法。
根据本发明提供的一种基于非易失性内存的键值存储写优化方法,包括:
非易失性内存(NVM)友好的缓存层组织方式:将日志结构合并树(LSM树)按照层进行划分,将较热的顶部若干层存储在NVM中作为缓存层。为更好地组织缓存层数据,在用持久内存表作为NVM内的基本数据管理单元,并使用基于多版本并发控制的持久内存跳表对各层的持久内存表进行索引;
轻量级数据刷写算法:为可变内存表(MemTable)绑定一个持久内存表,利用持久内存表取代传统写前日志,通过执行同步的MemTable插入和持久内存表刷写实现数据高速刷写;
列表压缩算法:仅通过重建索引对持久内存表归并压缩,避免在生成新持久内存表时重写数据导致写放大;
基于最近最久未使用(LRU)的缓存溢出策略:利用全局LRU链表筛选最近最久未被更新的持久内存表写入固态硬盘,充分利用日志结构合并树内部数据局部性以降低固态硬盘写入量。
优选的,所述非易失性内存友好的缓存层组织方式包括:
组成部分A1:基于LSM树天然的分层特点,将容量较小但被频繁访问的LSM树顶部若干层存储在NVM中作为缓存层,将容量较大但不被频繁访问的LSM树底部若干层存储在SSD中,以提供更大的总数据库容量。利用高性能的NVM处理大部分数据读写请求,降低SSD的读写压力,并通过NVM缓存缩小SSD与DRAM之间的性能差距。
组成部分A2:在非易失性内存中使用持久内存表替代传统有序字符串表(SSTable),持久内存表将键值对数据以单个键值对为粒度、任意顺序存储在NVM内的双向链表当中。为实现对无序双向链表的高速随机检索,为每个持久内存表构造一个偏移量数组作为键值对节点的索引。偏移量数组中的每个项记录一个键值对节点距离持久内存池起始地址的偏移量。各键值对节点的偏移量按照键从小到大的顺序存储在连续的地址空间中。可通过对该偏移量数组进行二分随机检索任意的键值对。
组成部分A3:使用基于多版本并发控制的持久内存跳表对各层的持久内存表进行索引,无需在DRAM中完整保留各个版本的持久内存表视图,降低了控制控制多版本持久内存表视图的开销。其中第0层持久内存表的索引跳表使用持久内存表的版本序号作为索引键,其余层使用每个持久内存表中的最大键作为索引键;
优选的,所述轻量级数据刷写算法步骤包括:
步骤B1:客户端请求插入新键值对;
步骤B2:将新键值对附加到持久内存表内键值对双向链表尾部;
步骤B3:将新键值对插入到MemTable;
步骤B4:检查MemTable容量是否达到上限;
步骤B5:若MemTable容量未达到上限,本轮数据插入结束;否则,将MemTable切换为ImmuTable,新建下一个MemTable以及与其一对一绑定的持久内存表;
步骤B6:扫描基于跳表的ImmuTable最底层链表索引,为持久内存表生成偏移量索引;
步骤B7:将持久内存表插入到第0层索引跳表,完成该ImmuTable到持久内存表的完整刷写步骤。
优选的,所述列表压缩算法步骤包括:
步骤C1:从超出容量上限的NVM内部LSM树层当中随机选取一个持久内存表;
步骤C2:在步骤C1中超出容量上限层的下一层当中选中所有与B1中选取的持久内存表有重叠键范围的所有持久内存表;
步骤C3:将输入持久内存表的键值对双向链表首尾连接形成输出表的新键值对双向链表
步骤C4:按键从到大的顺序扫描各输入持久内存表的偏移量索引,对这些偏移最索引进行归并排序;
步骤C5:对于步骤C4中的偏移量索引扫描过程,如果检查到重复的键值对,将对应键值对从输出表的键值对双向链表中移除,并重新链接回输入表;
步骤C6:对于步骤C5中的偏移量索引扫描过程,如果获取到一个非重复的较新版本的键值对,将它的偏移量写入到输出持久内存表的偏移量索引当中;
步骤C7:若多个输入持久内存表的数据经过去重后剩余数据超出单个持久内存表的容量上限,需要对输出持久内存表的键值对双向链表进行分组和切割,分别链接到多个持久内存表当中,使得多个输出持久内存表各自在键值对双向链表中包含所有的数据,并且相互之间没有重叠的键范围。优选地,所述基于全局LRU的缓存溢出策略步骤包括:
步骤D1:NVM内的每个持久内存表通过一个LRU双向链表组织,每个新生成的持久内存表被视作最热的表,插入到该LRU链表的头部。
步骤D2:每当NVM内部空间不足,从上述LRU链表尾部选取最冷的持久内存表。若选取的持久内存表位于NVM中的最底层,则将它归并压缩到SSD当中;否则将该持久内存表作为列表压缩算法的输入,压缩到NVM中的下一层。
步骤D3:重复步骤D2,直到为NVM腾出足够的存储空间。
根据本发明提供的一种基于非易失性内存的键值存储写优化方法,包括:
非易失性内存友好的缓存层组织方式,将LSM树划分为缓存树和存储树,在NVM内利用持久内存表取代SSTable,并用支持多版本并发控制的持久内存跳表组织NVM内各层的持久内存表;
轻量级数据刷写算法:利用持久内存表取代传统写前日志,支持数据从DRAM向NVM的低延迟数据刷写;
列表压缩算法:仅通过重建索引对持久内存表归并压缩,避免重写数据导致的写放大;
基于LRU的缓存溢出策略:利用全局LRU选取最不频繁更新的持久内存表压缩到SSD,充分利用LSM树内部数据局部性以降低SSD写入量。
与现有技术相比,本发明具有如下的有益效果:
1、对LSM树冷热数据使用不同的方式进行管理,利用有限的非易失性内存缓存层实现整体更接近非易失性内存的键值存储性能表现。
2、持久内存刷写速度快。本发明同步执行MemTable的插入和持久内存的刷写,并省略现有技术使用的SSD内的写前日志。在将ImmuTable刷写到NVM时仅需通过一轮链表遍历生成偏移量数组,而无需刷写实际键值对数据,极大降低了持久内存刷写耗时;
3、非易失性内存写放大低。本发明提供的列表压缩算法充分利用NVM的可字节寻址特性,无需在归并压缩时重写任何键值对数据,极大降低NVM写入量;
4、SSD读写量低。本发明利用NVM处理大部分热数据的读写,仅使用SSD存储不被频繁更新的冷数据,尽可能减少了SSD读写量,同时缓解了因SSD性能瓶颈导致的写停滞。
附图说明
图1为本发明的总体框架图。
图2为本发明具体实施例的持久内存表结构示意图。
图3为本发明具体实施例的多版本并发控制持久内存跳表交互步骤示意图。
图4为本发明具体实施例的轻量级数据刷入步骤示意图。
图5为本发明具体实施例的列表压缩数据归并整理步骤示意图。
具体实施方式
下面结合附图和具体实施例,进一步阐述本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
根据本发明提供的一种基于非易失性内存的键值存储写优化方法,如图1所示,包括:
非易失性内存友好的缓存层组织:将LSM划分为两大组成部分,较热的LSM树顶部若干层存储在LSM树中作为缓存层,其余层存储在SSD中作为常规存储层。为更好地组织缓存层数据,在NVM内使用持久内存表替代传统SSTable,并使用基于多版本并发控制的持久内存跳表对各层的持久内存表进行索引;
轻量级数据刷写算法:每当在DRAM中创建新MemTable时,在NVM内新建一个持久内存表,并将其与MernTable绑定。在向LSM树键值存储插入键值对时,利用持久内存表取代传统WAL日志,同步地执行MemTable的插入和持久内存表中键值对数据的刷写,在MemTable容量达到上限时可以以极低的开销完成从ImmuTable到持久内存表的刷写。
列表压缩算法:在键值对保持无序且使用链表索引的基础上,仅需要重建索引即可完成对持久内存表归并压缩,避免在生成新持久内存表时重写数据导致写放大;
基规LRU的缓存溢出策略:使用全局LRU链表组织非易失性内存内所有持久内存表,利用全局LRU筛选最近最久未被更新的持久内存表溢出到SSD。
具体的所述非易失性内存友好的缓存层组织,包括以下组成部分:
组成部分A1:基于LSM树天然的分层特点,将容量较小但被频繁访问的LSM树顶部若干层存储在NVM中作为缓存层,将容量较大但不被频繁访问的LSM树底部若干层存储在SSD中,以提供更大的总数据库容量。利用高性能的NVM处理大部分数据读写请求,降低SSD的读写压力,并通过NVM缓存缩小SSD与DRAM之间的性能差距。
组成部分A2:如图2所示,在非易失性内存中使用持久内存表替代传统SSTable,持久内存表将键值对数据以单个键值对为粒度、任意顺序存储在NVM内的双向链表当中。为实现对无序双向链表的高速随机检索,为每个持久内存表构造一个偏移量数组作为键值对节点的索引。各键值对节点的偏移量按照键从小到大的顺序存储在连续的地址空间中。可通过对该偏移量数组进行二分随机检索任意的键值对。
组成部分A3:使用支持多版本并发控制的持久内存跳表对各层的持久内存表进行索引,无需在DRAM中完整保留各个版本的持久内存表视图,降低了控制控制多版本持久内存表视图的开销。其中第0层持久内存表的索引跳表使用持久内存表的版本序号作为索引键,其余层使用每个持久内存表中的最大键作为索引键。该持久内存索引跳表支持多版本并发控制与安全内存回收。每个节点拥有三个时间戳,分别表示该节点的生效时间、逻辑删除时间和物理删除时间。任意一个访问持久内存跳表的线程需要引用其开始读取时的全局时间戳,可通过全局时间戳的引用计数判断依赖于每个时间点持久内存表集合视图的读线程数量。全局时间戳通过互斥锁同步多线程的并发访问。
为更好地说明持久索引跳表多版本并发控制与安全内存回收的实现原理,参照图3进行说明。1为一个读线程引用全局时间戳并判定某个持久内存节点是否属于它所引用的持久内存表集合快照。2为写线程逻辑删除某个节点,后台压缩线程可通过修改节点的逻辑删除时间戳实现节点的逻辑删除。3为写线程物理删除某个节点,当不存在任何读线程依赖于某个已被逻辑删除的节点时,可通过原子地修改该节点前驱节点的下一跳指针实现对节点的物理删除。4为写线程安全释放一个节点,为了实现安全内存回收,将一个节点被物理删除的时间记录在其物理删除时间戳当中,当不存在任何读线程引用早于该时间戳的全局时间时,可以确保不存在任何读线程可能读取此节点的数据,此节点的内存可以被安全回收。
具体的,所述轻量级数据刷写算法,如图4所示,包括:
步骤B1:客户端请求插入新键值对;
步骤B2:将新键值对附加到持久内存表内键值对双向链表尾部;
步骤B3:将新键值对插入到MemTable;
步骤B4:检查MemTable容量是否达到上限;
步骤B5:若MemTable容量未达到上限,本轮数据插入结束;否则,将MemTable切换为ImmuTable,新建下一个MemTable以及与其一对一绑定的持久内存表;
步骤B6:扫描基于跳表的ImmuTable最底层链表索引,为持久内存表生成偏移量索引;
步骤B7:将持久内存表插入到第0层索引跳表,此后可释放DRAM内的ImmuTable,完成该ImmuTable到持久内存表的完整刷写步骤。
具体的,对于步骤B2,需要为新插入的键值对在NVM中分配空间、将具体键值对数据写入NVM。此后,需要修改一对双向链表中的指针,将该键值对节点链接到与MemTable对应的持久内存表键值对双向链表尾部。以上全部过程需包含在同一个持久内存事务范围内,以确保持久不会因为操作过程中的意外中断导致持久内存泄漏或键值对节点内数据的不一致状态。此外,由于具有崩溃一致性的持久内存双向链表足以在崩溃恢复过程中提供恢复DRAM内MemTable的全部信息,仅需要在崩溃重启时扫描持久内存表内的双向链表并将键值对重新插入MemTable即可重建崩溃前的MemTable。因此,我们可以省略现有技术中写入SSD内写前日志的步骤,节约了管理写前日志的开销。
具体的,对于步骤B6,ImmuTable在DRAM中以跳表的形式组织,所以其最底层索引可以当作一个有序跳表进行遍历。遍历到的所有键值对的顺序就是经过排序后的键值对顺序。本发明依赖DRAM中的跳表对键值对进行排序,而无需在NVM内构建动态索引结构,减小了对NVM的随机读写量。持久内存表偏移量的生成依赖持久内存事务进行空间分配和数据的刷写。
具体地,所述列表压缩算法步骤,如图5所示,包括:
步骤C1:从超出容量上限的NVM内部LSM树层当中随机选取一个持久内存表;
步骤C2:在步骤Cl中超出容量上限层的下一层当中选中所有与B1中选取的持久内存表有重叠键范围的所有持久内存表;
步骤C3:将输入持久内存表的键值对双向链表首尾连接形成输出表的新键值对双向链表
步骤C4:按键从到大的顺序扫描各输入持久内存表的偏移量索引,对这些偏移量索引进行归并排序;
步骤C5:对于步骤C4中的偏移量索引扫描过程,如果检查到重复的键值对,将对应键值对从输出表的键值对双向链表中移除,并重新链接回输入表;
步骤C6:对于步骤C5中的偏移量索引扫描过程,如果获取到一个非重复的较新版本的键值对,将它的偏移量写入到输出持久内存表的偏移量索引当中;
步骤C7:若多个输入持久内存表的数据经过去重后剩余数据超出单个持久内存表的容量上限,需要对输出持久内存表的键值对双向链表进行分组和切割,分别链接到多个持久内存表当中,使得多个输出持久内存表各自在键值对双向链表中包含所有的数据,并且相互之间没有重叠的键范围。
具体的,对于步骤C5,在完成一次列表压缩后,仅有较旧版本的键值对被保留在输入持久内存表的键值对双向链表当中,但是所有输入持久内存表依然可以通过其原有的偏移量索引检索全部的键值对,因为键值对在内存中存储的偏移量不会在列表压缩过程中被改变。
具体的,所述列表压缩算法从步骤C3至C7需在同一个持久内存事务范围内实现,以避免在压缩持久内存表的过程当中发生崩溃导致内存泄露或持久内存表中数据的丢失或混淆。
具体的,所述轻量级数据刷写算法和列表压缩算法流程中所需要的持久内存事务通过PMDK(一种持久内存开发工具包)实现。PMDK在持久内存事务中综合运用了重做日志和撤销日志,并可在崩溃后重新打开内存池的初始化过程中根据持久保存的日志自动将NVM内的全部数据恢复到一致的状态。
具体的,所述基于LRU的缓存溢出策略步骤,包括:
步骤D1:NVM内的每个持久内存表通过一个LRU双向链表组织,每个新生成的持久内存表被视作最热的表,插入到该LRU链表的头部。
步骤D2:每当NVM内部空间不足,从上述LRU链表尾部选取最冷的持久内存表。若选取的持久内存表位于NVM中的最底层,则将它归并压缩到SSD当中;否则将该持久内存表作为列表压缩算法的输入,压缩到NVM中的下一层。
步骤D3:重复步骤D2,直到为NVM腾出足够的存储空间。
根据本发明提供的一种基于非易失性内存的键值存储写优化方法,包括:
非易失性内存友好的缓存层组织,将LSM树划分为缓存树和存储树,在非易失性内存中使用持久内存表作为数据管理单元,并用支持多版本并发控制的持久内存跳表组织非易失性内存内各层的持久内存表;
轻量级数据刷写算法:将数据同步写入易失性内存和非易失性内存,实现高速数据刷写;
列表压缩算法:仅通过重建索引对持久内存表归并压缩,避免重写数据导致的写放大;
基于LRU的缓存溢出策略:利用全局LRU选取最不频繁更新的持久内存表压缩到SSD,充分利用LSM树内部数据局部性以降低SSD写入量。
在本申请的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不、能理解为对本申请的限制。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (5)
1.一种基于非易失性内存的键值存储写优化方法,其特征在于,包括:
非易失性内存友好的缓存层:将日志结构合并树按照层进行划分,顶部若干层用作非易失性内存缓存层。为更好地组织缓存层数据,在非易失性内存内使用持久内存表作为数据管理单元,并使用持久内存跳表对各层的持久内存表进行索引;
轻量级数据刷写算法:为每个可变内存表绑定一个一对一的持久内存表,通过执行同步的键值对插入可变内存表和刷写持久内存表实现数据从易失性内存向非易失性内存的高速刷写;
列表压缩算法:仅通过重建索引对持久内存表归并压缩,避免在生成新持久内存表时重写数据导致写放大;
基于最近最久未使用的缓存溢出策略:利用全局最近最久未使用链表筛选最近最久未被更新的持久内存表写入固态硬盘,充分利用日志结构合并树内部数据局部性以降低固态硬盘写入量。
2.根据权利要求1所述的一种基于非易失性内存的键值存储写优化方法,其特征在于,非易失性内存友好的缓存层:
组成部分A1:基于日志结构合并树(LSM树)天然的分层特点,将容量较小但被频繁访问的LSM树顶部若干层存储在非易失性内存(NVM)中作为缓存层,将容量较大但不被频繁访问的LSM树底部若干层存储在固态硬盘(SSD)中,以提供更大的总数据库容量。利用高性能的NVM处理大部分数据读写请求,降低SSD的读写压力,并通过NVM缓存缩小SSD与易失性内存(DRAM)之间的性能差距。
组成部分A2:在NVM中使用持久内存表替代传统有序字符串表(SSTable),持久内存表将键值对数据以单个键值对为粒度、任意顺序存储在NVM内的双向链表当中。为实现对无序双向链表的高速随机检索,为每个持久内存表构造一个偏移量数组作为键值对节点的索引。偏移量数组中的每个项记录一个键值对节点距离持久内存池起始地址的偏移量。各键值对节点的偏移量按照键从小到大的顺序存储在连续的地址空间中。可通过对该偏移量数组进行二分随机检索任意的键值对。
组成部分A3:使用基于多版本并发控制的持久内存跳表对各层的持久内存表进行索引,无需在DRAM中完整保留各个版本的持久内存表视图,降低了控制控制多版本持久内存表视图的开销。其中第0层持久内存表的索引跳表使用持久内存表的版本序号作为索引键,其余层使用每个持久内存表中的最大键作为索引键。
3.根据权利要求1所述的一种基于非易失性内存的键值存储写优化方法,其特征在于,轻量级数据刷写算法:
步骤B1:客户端请求插入新键值对;
步骤B2:将新键值对附加到持久内存表内键值对双向链表尾部;
步骤B3:将新键值对插入到可变内存表(MemTable);
步骤B4:检查MemTable容量是否达到上限;
步骤B5:若MemTable容量未达到上限,本轮数据插入结束;否则,将MemTable切换为不可变内存表(ImmuTable),新建下一个MemTable以及与其一对一绑定的持久内存表;
步骤B6:扫描基于跳表的ImmuTable最底层链表索引,为持久内存表生成偏移量索引;
步骤B7:将持久内存表插入到第0层索引跳表,完成该ImmuTable到持久内存表的完整刷写步骤。
4.根据权利要求1所述的一种基于非易失性内存的键值存储写优化方法,其特征在于,列表压缩算法:
步骤C1:从超出容量上限的NVM内部LSM树层当中随机选取一个持久内存表;
步骤C2:在步骤C1中超出容量上限层的下一层当中选中所有与B1中选取的持久内存表有重叠键范围的所有持久内存表;
步骤C3:将输入持久内存表的键值对双向链表首尾连接形成输出表的新键值对双向链表
步骤C4:按键从到大的顺序扫描各输入持久内存表的偏移量索引,对这些偏移量索引进行归并排序;
步骤C5:对于步骤C4中的偏移量索引扫描过程,如果检查到重复的键值对,将对应键值对从输出表的键值对双向链表中移除,并重新链接回输入表;
步骤C6:对于步骤C5中的偏移量索引扫描过程,如果获取到一个非重复的较新版本的键值对,将它的偏移量写入到输出持久内存表的偏移量索引当中;
步骤C7:若多个输入持久内存表的数据经过去重后剩余数据超出单个持久内存表的容量上限,需要对输出持久内存表的键值对双向链表进行分组和切割,分别链接到多个持久内存表当中,使得多个输出持久内存表各自在键值对双向链表中组织其内部包含的键值对数据,并且多个输出持久内存表之间没有重叠的键范围。
5.根据权利要求1所述的一种基于非易失性内存的键值存储写优化方法,其特征在于基于全局最近最久未使用(LRU)的缓存溢出策略:
步骤D1:NVM内的每个持久内存表通过一个LRU双向链表组织,每个新生成的持久内存表被视作最热的表,插入到该LRU链表的头部。
步骤D2:每当NVM内部空间不足,从上述LRU链表尾部选取最冷的持久内存表。若选取的持久内存表位于NVM中的最底层,则将它归并压缩到SSD当中;否则将该持久内存表作为列表压缩算法的输入,压缩到NVM中的下一层。
步骤D3:重复步骤D2,直到为NVM腾出足够的存储空间。
一种基于非易失性内存的键值存储写优化方法,其特征在于,包括:
非易失性内存友好的缓存层组织,将日志结构合并树划分为缓存树和存储树,在非易失性内存中利用持久内存表作为数据管理单元,并用支持多版本并发控制的持久内存跳表索引各层持久内存表;
轻量级数据刷写算法:同步执行可变内存表刷入和持久内存表刷写,实现高速数据刷写;
列表压缩算法:仅通过重建索引对持久内存表归并压缩,避免重写数据导致的写放大;
基于最近最久未使用的缓存溢出策略:利用全局最近最久未使用链表选取最不频繁更新的持久内存表压缩到固态硬盘,充分利用数据局部性以降低固态硬盘写入量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211239115.7A CN117908755A (zh) | 2022-10-11 | 2022-10-11 | 一种基于非易失性内存的键值存储写优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211239115.7A CN117908755A (zh) | 2022-10-11 | 2022-10-11 | 一种基于非易失性内存的键值存储写优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117908755A true CN117908755A (zh) | 2024-04-19 |
Family
ID=90685688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211239115.7A Pending CN117908755A (zh) | 2022-10-11 | 2022-10-11 | 一种基于非易失性内存的键值存储写优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117908755A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118170769A (zh) * | 2024-05-14 | 2024-06-11 | 杭州芯晓电子科技有限公司 | 用于超大规模集成电路自动化设计的数据存储系统及方法 |
CN118394674A (zh) * | 2024-06-25 | 2024-07-26 | 吉林大学 | 一种基于新型持久内存的文件系统加速方法 |
-
2022
- 2022-10-11 CN CN202211239115.7A patent/CN117908755A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118170769A (zh) * | 2024-05-14 | 2024-06-11 | 杭州芯晓电子科技有限公司 | 用于超大规模集成电路自动化设计的数据存储系统及方法 |
CN118170769B (zh) * | 2024-05-14 | 2024-07-30 | 杭州芯晓电子科技有限公司 | 用于超大规模集成电路自动化设计的数据存储系统及方法 |
CN118394674A (zh) * | 2024-06-25 | 2024-07-26 | 吉林大学 | 一种基于新型持久内存的文件系统加速方法 |
CN118394674B (zh) * | 2024-06-25 | 2024-09-17 | 吉林大学 | 一种基于新型持久内存的文件系统加速方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10496283B2 (en) | Adaptive prefix tree based order partitioned data storage system | |
US9449005B2 (en) | Metadata storage system and management method for cluster file system | |
EP3159810B1 (en) | Improved secondary data structures for storage class memory (scm) enabled main-memory databases | |
US10120869B2 (en) | Method and apparatus for fault-tolerant memory management | |
CN103744961B (zh) | 用可重构的文件系统目录树提高非易失性存储寿命的方法 | |
CN105117415B (zh) | 一种优化的ssd数据更新方法 | |
CN117908755A (zh) | 一种基于非易失性内存的键值存储写优化方法 | |
CN110347336A (zh) | 一种基于nvm与ssd混合存储结构的键值存储系统 | |
US20220382760A1 (en) | High-performance key-value store | |
US20220382651A1 (en) | Fast recovery and replication of key-value stores | |
CN111221776A (zh) | 面向非易失性内存的文件系统的实现方法、系统及介质 | |
WO2007024419A2 (en) | Database heap management system with variable page size and fixed instruction set address resolution | |
Yan et al. | Revisiting the design of LSM-tree based OLTP storage engine with persistent memory | |
Menon et al. | CaSSanDra: An SSD boosted key-value store | |
WO2021208239A1 (zh) | 一种低延迟的文件系统地址空间管理方法、系统及介质 | |
US11741073B2 (en) | Granularly timestamped concurrency control for key-value store | |
KR20210123236A (ko) | 키-값 장치들을 위한 키-값 저장소 아키텍처 | |
CN116204130A (zh) | 一种键值存储系统和键值存储系统的管理方法 | |
US11829291B2 (en) | Garbage collection of tree structure with page mappings | |
US20120317384A1 (en) | Data storage method | |
KR100745163B1 (ko) | 동적 매핑 테이블을 이용한 플래시 메모리 관리방법 | |
Duffy et al. | Dotori: A key-value ssd based kv store | |
Jiao et al. | BetrFS: a compleat file system for commodity SSDs | |
CN116340276A (zh) | 一种键值存储的压缩合并方法及系统 | |
Jiang et al. | Improving Write Performance for LSM-tree-based Key-Value Stores with NV-Cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
DD01 | Delivery of document by public notice | ||
DD01 | Delivery of document by public notice |
Addressee: Cai Miao Document name: Notification of Qualified Preliminary Examination of Invention Patent Application |
|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |