CN114356877A - 一种基于持久内存的日志结构合并树分级存储方法及系统 - Google Patents
一种基于持久内存的日志结构合并树分级存储方法及系统 Download PDFInfo
- Publication number
- CN114356877A CN114356877A CN202111659487.0A CN202111659487A CN114356877A CN 114356877 A CN114356877 A CN 114356877A CN 202111659487 A CN202111659487 A CN 202111659487A CN 114356877 A CN114356877 A CN 114356877A
- Authority
- CN
- China
- Prior art keywords
- persistent memory
- data
- memory
- tree
- space
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于持久内存的日志结构合并树分级存储方法及系统,属于内存数据存储技术领域。本发明的基于持久内存的日志结构合并树分级存储方法基于持久内存分配器、文件二级索引、动态键值分离,将日志结构合并树分级存储在普通内存、持久内存和固态硬盘,普通内存保留核心关键元数据,预写日志WAL和LSM‑Tree L0‑L2层数据记录在持久内存中,L3‑L6层文件数据存放在固态硬盘中。该发明的基于持久内存的日志结构合并树分级存储方法能够充分发挥持久内存低延迟和硬盘大容量的特性,提高数据合并和数据访问效率,具有很好的推广应用价值。
Description
技术领域
本发明涉及内存数据存储技术领域,具体提供一种基于持久内存的日志结构合并树分级存储方法及系统。
背景技术
LSM-Tree全称是Log Structured Merge Tree,是一种分层,有序,面向写多读少场景的数据结构,其核心思想是充分了利用了硬盘批量顺序写要远比随机写性能高的特点,广泛应用于NoSQL系统,如HBase、RocksDB、Cassandra等。LSM-Tree基于上述的实现将随机写转化为顺序写,从而获得非常优秀的写性能,而作为代价带来了大量的重复写入。写放大意味着更多的读写,影响数据库系统的持续写入的带宽,同时加速硬盘尤其是固态盘的寿命衰减。所以解决写放大就成了一个很重要的问题。
针对日志结构合并树LSM-Tree结构存在数据写放大的问题,现有技术中,第一种是Key-Value分离技术,即LSM-Tree结构内存储Key和Value的地址,将Value另存他处,降低合并操作时value重写开销。该方案在value比key大很多的情况下效果显著,value分离带来的IO随机访问对范围查询非常不友好,同时无效value数据的垃圾回收GC效率低下,尤其在更新密集型负载中。总之Key-Value分离技术适用于写多、value大且查询请求多点查而较少范围查询的场景。第二种是Lazy Compaction技术,主要就是减少Compaction来改善写放大,该方法适合写多读少的场景,同时占用磁盘空间比较大,成本上处于劣势,不用于商业产品应用。总之,现有的LSM-Tree优化都是基于固态硬盘或机械硬盘平衡读写开销和写放大展开,针对特定场景可带来性能提升但不具有普适性。
持久内存是一种新型的具有字节寻址能力的内存级存储器件,具有读写延迟低、带宽高、数据持久化、能耗低等特点,持久内存不仅具有同DRAM相近的读写性能,同时又能提供类似传统磁盘等外存类似的持久性。混合利用持久内存低延迟与固态硬盘大容量的特性,构建低延迟且高吞吐的高效键值存储方法具有重要意义。
发明内容
本发明的技术任务是针对上述存在的问题,提供一种能够充分发挥持久内存低延迟和硬盘大容量的特性,提高数据合并和数据访问效率的基于持久内存的日志结构合并树分级存储方法。
本发明进一步的技术任务是提供一种基于持久内存的日志结构合并树分级存储系统。
为实现上述目的,本发明提供了如下技术方案:
一种基于持久内存的日志结构合并树分级存储方法,该方法基于持久内存分配器、文件二级索引、动态键值分离,将日志结构合并树分级存储在普通内存、持久内存和固态硬盘,普通内存保留核心关键元数据,预写日志WAL和LSM-Tree L0-L2层数据记录在持久内存中,L3-L6层文件数据存放在固态硬盘中。
作为优选,将LSM-Tree结构根据数据访问热度、用户访问等待开销划分数据分布。
作为优选,持久内存分配器管理持久内存空间,为每种类型的数据文件构建内存池提供预分配空间。
作为优选,所述持久内存分配器负责空间分配顺序、空间分配并发、空间分配统计和空间阀值触发后台任务。
作为优选,文件二级索引结构用于记录LSM-Tree各层SST文件的Key范围及前缀布隆过滤器信息。
作为优选,动态键值分离阀值根据用户配置策略及持久内存空间状态,动态调整键值分离阀值,支持不同存储介质内采用不同键值分离策略。
一种基于持久内存的日志结构合并树分级存储系统,包括持久内存分配器模块、文件二级索引模块、动态键值分离模块,将日志结构合并树分级存储在普通内存、持久内存和固态硬盘,普通内存保留核心关键元数据,预写日志WAL和LSM-Tree L0-L2层数据记录在持久内存中,L3-L6层文件数据存放在固态硬盘中。
作为优选,持久内存分配器模块管理持久内存空间,为每种类型的数据文件构建内存池提供预分配空间,负责空间分配顺序、空间分配并发、空间分配统计和空间阀值触发后台任务。
作为优选,文件二级索引模块用于记录LSM-Tree各层SST文件的Key范围及前缀布隆过滤器信息。
作为优选,动态键值分离模块根据用户配置策略及持久内存空间状态,动态调整键值分离阀值,支持不同存储介质内采用不同键值分离策略。
与现有技术相比,本发明的基于持久内存的日志结构合并树分级存储方法具有以下突出的有益效果:
(一)引入持久内存,将LSM-Tree结构根据数据访问热度、用户访问等待开销等特征重新划分数据分布,充分发挥持久内存低延迟和硬盘大容量的特性,提高数据合并和数据访问效率;
(二)持久内存的空间分配器,为预写日志WAL和LSM-Tree L0-L2层数据划分专用内存池管理,两类数据优先使用内存池预分的专用内存,提高空间分配效率,方便内存使用状态管理;
(三)LSM-Tree的各层文件二级索引结构,用于统计各层SST文件的Key范围及前缀布隆过滤器信息,提高数据访问效率的同时也为数据合并处理提供参考信息;
(四)可动态调整触发键值分离的阈值,支持不同存储介质内采用不同的键值分离策略,解决传统键值分离方法的使用场景局限性问题;
(五)通过对持久内存和固态硬盘内LSM-Tree各层数据定期合并,跨介质数据回刷时可直接将数据与下级介质内基层数据合并,间接减少数据合并次数,解决数据逐级合并写放大的问题。
附图说明
图1是本发明所述基于持久内存的日志结构合并树分级存储方法的LSM-Tree结构分级存储示意图;
图2是本发明所述基于持久内存的日志结构合并树分级存储方法的LSM-Tree结构分级存储业务处理示意图;
图3是本发明所述基于持久内存的日志结构合并树分级存储方法的持久内存空间分配器拓扑图;
图4是本发明所述基于持久内存的日志结构合并树分级存储方法的持久内存分配器空间分配流程示意图;
图5是本发明所述基于持久内存的日志结构合并树分级存储方法的SST文件数据定期合并及数据回刷示意图。
具体实施方式
下面将结合附图和实施例,对本发明的基于持久内存的日志结构合并树分级存储方法及系统作进一步详细说明。
实施例
如图1所示,本发明的基于持久内存的日志结构合并树分级存储方法基于持久内存分配器、文件二级索引、动态键值分离,将日志结构合并树分级存储在普通内存、持久内存和固态硬盘,普通内存保留核心关键元数据,预写日志WAL和LSM-Tree L0-L2层数据记录在持久内存中,L3-L6层文件数据存放在固态硬盘中。
如图1所示,将持久内存作为DRAM和固态硬盘的缓冲层,在其内存放预写日志WAL,缩短预写日志任务延迟,减小WAL写在用户写请求路径上的时间占比;同时,存放热点数据即LSM-Tree L0-L2层SST文件数据,缩短关键读写请求的访问延迟。
在普通内存DRAM内增加一项索引结构,记录各层级SST文件的索引信息。该索引信息有两个用处:减少无效的文件访问提高读请求效率,根据索引结构内记录的SST文件信息分析合并处理收益以提高合并效率。
固态硬盘内仅存放LSM-Tree L3-L6层SST文件数据,充分发挥固态硬盘大容量的特点。
本发明设计的日志结构合并树(LSM-Tree)数据分布,业务处理实现具体如图2所示:
(1)写请求处理,首先执行预写日志写入持久内存,然后将待写入数据插入到普通内存的memtable中;
(2)读请求处理,优先访问memtable或immemtable内是否有符合要求的数据,若有则返回;否则访问普通内存记录的索引结构确认待查询数据可能存在的位置(具体到SST文件),然后优先在持久内存中查询,再访问固态硬盘内的文件数据;
(3)为减少额外的数据访问,索引信息构建发生在持久内存及固态硬盘内SST文件访问过程中,即存储引擎数据刚恢复但无任何LSM-Tree数据访问时,索引信息也为空;
(4)启动两个后台线程分别对应持久内存和固态硬盘内SST文件数据的合并任务,定期对两个存储介质内的SST文件数据进行合并处理,注意,定期合并处理不跨存储介质;
(5)持久内存内L2层文件数据向固态硬盘的回刷时机,当持久内存空间使用率超过阈值(默认75%)或L2层文件数据量超过阈值(传统LSM默认配置策略)或引信息内记录的L2层文件和固态硬盘内文件数据重叠度超过阈值(默认20%),三者条件满足其一,则触发持久内存内L2层文件数据向固态硬盘的合并任务;
(6)若LSM-Tree结构支持键值分离,因L2层数据向固态硬盘内合并时涉及存储介质的改变故无法跨介质记录value指针信息,所以持久内存和固态硬盘内的键值分离阈值允许不相同;默认设置键值分离仅发生在持久内存中,数据回刷到固态硬盘时不再进行键值分离,保证范围扫描场景及GC效率的需要。
持久内存的空间分配为预写日志WAL和LSM-Tree L0-L2层数据划分专用内存池管理,两类数据优先使用内存池预分的专用内存,当空间耗尽时再从共享内存中分配空间。如图3和图4所示:
(1)持久内存空间分配器创建4个专用内存池,分别为WAL和L0-L2 SST文件预留空间;若支持键值分离,则分离的值数据保存在共享内存中;
(2)各内存池间空间分配互不干扰,可并发分配不同类型的空间;
(3)内存空间分配器设计统计信息,用于记录持久内存的空间使用情况,为键值分离阈值和SST文件数据合并触发提供参考信息。
持久内存和固态硬盘内LSM-Tree各层数据定期合并,故普通内存数据回刷到持久内存和持久内存数据回刷到固态硬盘时,可以直接将数据与各介质内的基层SST文件直接合并,减少逐层合并的写放大。以固态硬盘内定期合并处理为例,如图5所示:
(1)固态硬盘内数据,L3-L5层SST文件数据定期回刷到L6层;
(2)由于持久内存数据向固态硬盘回刷的频率低于固态硬盘内各层数据定期合并频率,故持久内存数据回刷时,大概率可将数据直接与L6层数据进行合并处理;
(3)若持久内存数据向固态硬盘回刷时固态硬盘内数据未完成完整的定期合并,那么将持久内存的数据与固态硬盘内非空的最小层级合并;如当前固态硬盘内L3-L4层为空,L5-L6层非空,则将持久内存的数据与固态硬盘内L5层数据进行合并;
(4)如此图所示,可明显减少直接将数据回刷到L3层,后续再逐级合并到L4、L5、L6层带来的写放大;
(5)基于本发明新增的SST文件索引结构,索引信息记录在内存中,可对冲掉数据合并到底层后冷热数据分离度降低带来的读访问延迟增加。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (10)
1.一种基于持久内存的日志结构合并树分级存储方法,其特征在于:该方法基于持久内存分配器、文件二级索引、动态键值分离,将日志结构合并树分级存储在普通内存、持久内存和固态硬盘,普通内存保留核心关键元数据,预写日志WAL和LSM-Tree L0-L2层数据记录在持久内存中,L3-L6层文件数据存放在固态硬盘中。
2.根据权利要求1所述的基于持久内存的日志结构合并树分级存储方法,其特征在于:将LSM-Tree结构根据数据访问热度、用户访问等待开销划分数据分布。
3.根据权利要求2所述的基于持久内存的日志结构合并树分级存储方法,其特征在于:持久内存分配器管理持久内存空间,为每种类型的数据文件构建内存池提供预分配空间。
4.根据权利要求3所述的基于持久内存的日志结构合并树分级存储方法,其特征在于:所述持久内存分配器负责空间分配顺序、空间分配并发、空间分配统计和空间阀值触发后台任务。
5.根据权利要求4所述的基于持久内存的日志结构合并树分级存储方法,其特征在于:文件二级索引结构用于记录LSM-Tree各层SST文件的Key范围及前缀布隆过滤器信息。
6.根据权利要求5所述的基于持久内存的日志结构合并树分级存储方法,其特征在于:动态键值分离阀值根据用户配置策略及持久内存空间状态,动态调整键值分离阀值,支持不同存储介质内采用不同键值分离策略。
7.一种基于持久内存的日志结构合并树分级存储系统,其特征在于:包括持久内存分配器模块、文件二级索引模块、动态键值分离模块,将日志结构合并树分级存储在普通内存、持久内存和固态硬盘,普通内存保留核心关键元数据,预写日志WAL和LSM-Tree L0-L2层数据记录在持久内存中,L3-L6层文件数据存放在固态硬盘中。
8.根据权利要求7所述的基于持久内存的日志结构合并树分级存储系统,其特征在于:持久内存分配器模块管理持久内存空间,为每种类型的数据文件构建内存池提供预分配空间,负责空间分配顺序、空间分配并发、空间分配统计和空间阀值触发后台任务。
9.根据权利要求8所述的基于持久内存的日志结构合并树分级存储系统,其特征在于:文件二级索引模块用于记录LSM-Tree各层SST文件的Key范围及前缀布隆过滤器信息。
10.根据权利要求9所述的基于持久内存的日志结构合并树分级存储系统,其特征在于:动态键值分离模块根据用户配置策略及持久内存空间状态,动态调整键值分离阀值,支持不同存储介质内采用不同键值分离策略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111659487.0A CN114356877A (zh) | 2021-12-30 | 2021-12-30 | 一种基于持久内存的日志结构合并树分级存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111659487.0A CN114356877A (zh) | 2021-12-30 | 2021-12-30 | 一种基于持久内存的日志结构合并树分级存储方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114356877A true CN114356877A (zh) | 2022-04-15 |
Family
ID=81104738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111659487.0A Pending CN114356877A (zh) | 2021-12-30 | 2021-12-30 | 一种基于持久内存的日志结构合并树分级存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356877A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168317A (zh) * | 2022-07-29 | 2022-10-11 | 北京志凌海纳科技有限公司 | 一种lsm树存储引擎构建方法和系统 |
CN116048396A (zh) * | 2022-12-30 | 2023-05-02 | 蜂巢科技(南通)有限公司 | 基于日志结构化合并树的数据存储装置和存储控制方法 |
CN116414304A (zh) * | 2022-12-30 | 2023-07-11 | 蜂巢科技(南通)有限公司 | 基于日志结构化合并树的数据存储装置和存储控制方法 |
WO2023216783A1 (zh) * | 2022-05-13 | 2023-11-16 | 支付宝(杭州)信息技术有限公司 | 日志结构的安全数据存储方法及装置 |
CN117131012A (zh) * | 2023-08-28 | 2023-11-28 | 中国科学院软件研究所 | 一种可持久化和可扩展的轻量级多版本有序键值存储系统 |
CN117311645A (zh) * | 2023-11-24 | 2023-12-29 | 武汉纺织大学 | 一种lsm存储元数据读放大的优化方法 |
-
2021
- 2021-12-30 CN CN202111659487.0A patent/CN114356877A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023216783A1 (zh) * | 2022-05-13 | 2023-11-16 | 支付宝(杭州)信息技术有限公司 | 日志结构的安全数据存储方法及装置 |
CN115168317A (zh) * | 2022-07-29 | 2022-10-11 | 北京志凌海纳科技有限公司 | 一种lsm树存储引擎构建方法和系统 |
CN116048396A (zh) * | 2022-12-30 | 2023-05-02 | 蜂巢科技(南通)有限公司 | 基于日志结构化合并树的数据存储装置和存储控制方法 |
CN116414304A (zh) * | 2022-12-30 | 2023-07-11 | 蜂巢科技(南通)有限公司 | 基于日志结构化合并树的数据存储装置和存储控制方法 |
CN116048396B (zh) * | 2022-12-30 | 2024-03-08 | 蜂巢科技(南通)有限公司 | 基于日志结构化合并树的数据存储装置和存储控制方法 |
CN116414304B (zh) * | 2022-12-30 | 2024-03-12 | 蜂巢科技(南通)有限公司 | 基于日志结构化合并树的数据存储装置和存储控制方法 |
CN117131012A (zh) * | 2023-08-28 | 2023-11-28 | 中国科学院软件研究所 | 一种可持久化和可扩展的轻量级多版本有序键值存储系统 |
CN117131012B (zh) * | 2023-08-28 | 2024-04-16 | 中国科学院软件研究所 | 一种可持久化和可扩展的轻量级多版本有序键值存储系统 |
CN117311645A (zh) * | 2023-11-24 | 2023-12-29 | 武汉纺织大学 | 一种lsm存储元数据读放大的优化方法 |
CN117311645B (zh) * | 2023-11-24 | 2024-02-06 | 武汉纺织大学 | 一种lsm存储元数据读放大的优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114356877A (zh) | 一种基于持久内存的日志结构合并树分级存储方法及系统 | |
CN106708427B (zh) | 一种适用于键值对数据的存储方法 | |
CN110347336A (zh) | 一种基于nvm与ssd混合存储结构的键值存储系统 | |
US9329995B2 (en) | Memory device and operating method thereof | |
US8225029B2 (en) | Data storage processing method, data searching method and devices thereof | |
CN107066393A (zh) | 提高地址映射表中映射信息密度的方法 | |
US20140223089A1 (en) | Method and device for storing data in a flash memory using address mapping for supporting various block sizes | |
US20120303928A1 (en) | Implementing enhanced deterministic memory allocation for indirection tables for persistent media | |
JP4135747B2 (ja) | データ処理装置及びフラッシュメモリへのアクセス方法 | |
CN102200892B (zh) | 一种基于动态raid系统的扩容方法 | |
CN106095342A (zh) | 一种动态可变长条带的瓦记录磁盘阵列构建方法及系统 | |
CN110109927A (zh) | 基于LSM树的Oracle数据库数据处理方法 | |
CN110968269A (zh) | 基于scm与ssd的键值存储系统及读写请求处理方法 | |
CN108089825A (zh) | 一种基于分布式集群的存储系统 | |
CN105653720A (zh) | 一种可灵活配置的数据库分层存储优化方法 | |
KR20210027625A (ko) | 데이터 저장장치의 주소 맵핑 테이블 운용 방법 | |
CN114416646A (zh) | 一种层级存储系统的数据处理方法及装置 | |
CN114996275A (zh) | 一种基于多树转换机制的键值存储方法 | |
CN102520885A (zh) | 一种混合硬盘的数据管理系统 | |
CN101034416A (zh) | 一种利用文件分配表进行文件寻道的方法及系统架构 | |
CN110716940B (zh) | 一种增量式数据存取系统 | |
CN108563586A (zh) | 一种分离固态盘中垃圾回收数据与用户数据的方法 | |
CN108897618B (zh) | 一种异构内存架构下基于任务感知的资源分配方法 | |
CN116126743A (zh) | 一种基于持久化内存文件系统的磨损感知空间分配方法 | |
CN112559384B (zh) | 一种基于非易失存储器的混合固态盘动态分区方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221130 Address after: Room 305-22, Building 2, No. 1158 Zhangdong Road and No. 1059 Dangui Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 200120 Applicant after: Shanghai Yunxi Technology Co.,Ltd. Address before: Building S02, 1036 Gaoxin Langchao Road, Jinan, Shandong 250100 Applicant before: Shandong Inspur Scientific Research Institute Co.,Ltd. |
|
TA01 | Transfer of patent application right |