一种基于NVM与SSD混合存储结构的键值存储系统技术方案

技术编号:22329740 阅读:61 留言:0更新日期:2019-10-19 12:12
本发明专利技术公开了一种基于NVM与SSD混合存储结构的键值存储系统,属于数据存储技术领域。本发明专利技术提出NVM与SSD混合存储的键值存储系统,在NVM上使用多个RangeTab结构来组织LSM‑Tree的第0层键值数据,传统LSM‑Tree结构的0层中各SSTable键范围是无序的,且键范围允许重叠,合并时因为较大的键范围容易读写更多的数据量,增加合并操作的时延,而本发明专利技术在第0层使用RangeTab结构重新组织键值数据,将多个RangeTab映射到不同且互不重叠的键范围中,Memtable键值数据由键范围将键值数据写入相应的RangeTab结构中,以缩短该层结构数据的合并时延;通过适当增加RangeTab结构的数量来增大所有RangeTab的数据容量。在相邻层容量之比保持不变的条件下,本发明专利技术每层能够容纳更多的数据量,LSM‑Tree结构层数减少,系统合并的次数也会降低。

A key value storage system based on NVM and SSD hybrid storage structure

【技术实现步骤摘要】
一种基于NVM与SSD混合存储结构的键值存储系统
本专利技术属于数据存储
,更具体地,涉及一种基于NVM与SSD混合存储结构的键值存储系统。
技术介绍
使用LSM-Tree(日志结构合并树,LogStructuredMerged-Tree)作为存储引擎的有LevelDB、HBase与RocksDB等,该类数据存储引擎将写入的数据有序插入到内存中已排好序的跳表结构中,同时在内存中数据量达到足够多时就会将其批量写入持久化的存储介质,能为系统带来足够优秀的写性能,另外在向内存写入数据之前在持久化介质中追加写日志的操作可以保证数据的可靠性,防止系统断电时内存数据丢失等,但是LSM-Tree在将相邻层数据合并写到下层时存在较为明显的数据写放大问题。针对LSM-Tree的键值系统存在数据写放大的问题,现有技术中,第一种是直接降低LSM-Tree的层次来降低系统的写放大,该方法虽然能够减少数据写入系统的整体写放大次数,但是也会使得相邻层的写放大系数逐渐增大,具体地,相邻层数据之间的合并时参与的数据量会变得异常庞大而无法控制,在写入键值数据库的数据量足够多时,系统的写入操作由于合并耗时过长而长时间阻塞。第二种是在不修改LSM-Tree结构的基础上对数据读写做些优化,比如使用多线程并行读取不同层的数据加快读操作以及使用新型的非易失存储介质(Non-VolatileMemory,NVM)与DRAM交替存储Memtable中的键值数据等,这些方法能够提升部分读写性能,而最终写放大系数仍然没有显著降低。第三种是使用NVM存储Memtable数据,例如NoveLSM方案中,使用NVM和DRAM两类存储介质轮流作为Memtable数据存储的介质,并且设置NVM中Memtable数据大小为4GB(默认DRAM的Memtable为64MB),这样可以降低系统因Memtable数据尚未写入固态硬盘(SolidStateDisk,SSD)而导致的阻塞时间。同时该方案对NVM介质中Memtable跳表结构进行了字节寻址访问的优化,提升数据写入的速度;为了提高读流程效率,使用双线程分别在Memtable和SSTable((SortedStringSSTable,有序字符串表))文件中并行查找数据。该方案通过增大NVM的容量来存储更多的Memtable数据,合并过程中L0层数据量明显高于下层SSTable文件的数据量,能够减少L0层合并的写放大比例,但是写入NVM的4GB键值数据会使得后续其它层合并的数据量骤增,系统写性能的曲线波动幅度更大,可能会导致系统更长的阻塞时间而无法对外提供正常服务。
技术实现思路
针对现有技术的缺陷,本专利技术的目的在于解决现有技术无法兼顾读写性能和降低系统写放大的技术问题。为实现上述目的,本专利技术实施例提供了一种基于NVM与SSD混合存储结构的键值存储系统,所述键值存储系统采用LSM-Tree结构作为存储引擎,由上到下分为:内存,负责存储上层应用插入或更新到键值存储系统的最新键值数据于表Memtable中,若Memtable大小达到第一阈值,将其转变成只读状态的表Immutable后,将其键值数据写入到NVM;NVM,负责使用RangeTab结构来组织LSM-Tree结构L0层的键值数据,每个RangeTab结构容量大小相等,将各个RangeTab映射到不同且互不重叠的键范围,Immutable键值数据由键范围将键值数据写入相应的RangeTab结构中;若NVM中所有RangeTab结构的键值数据达到第二阈值,选取部分RangeTab结构与SSD中L1层中键范围有重叠的所有SSTable文件合并到L1层;SSD,负责存储LSM-Tree结构L1层以及所有下层SSTable文件数据,若Li层SSTable文件数量达到第三阈值,将Li层的部分SSTable文件合并到Li+1层,i≥1。具体地,所述RangeTab结构分成三部分:Metadata区、Index区与Data区;Metadata区用于记录RangeTab的元数据;Index区包含cur和seq,cur用于记录定位到Data区的索引信息,seq初始值为0,在RangeTab每次写入数据时其值自动累加1,而当键值数据全部合并到下层后其值又重新设置为0;Data区只负责存储键值数据。具体地,所述RangeTab结构分成三部分:Metadata区、Index区与Data区;Metadata区用于记录RangeTab的元数据;Index区包含cur和seq,cur用于记录定位到Data区的索引信息,seq初始值为0,在RangeTab每次写入数据时其值自动累加1,而当键值数据全部合并到下层后其值又重新设置为0;Data区只负责存储键值数据。具体地,所述Data区由多个物理地址相连的Chunk组成,每个Chunk记录着键值数据内容Chunkdata、数据的大小Chunksize、数量、相对偏移地址这些元数据信息,每个Chunk的Chunkdata内存储的所有键值对有序排列,然后依次记录每条键值对的相对偏移地址,最后记录该Chunk中键值对的数量。具体地,使用哈希地址空间结构记录NVM上RangeTab结构存储的每个key的偏移地址,将含有足够多键值数据的每相邻若干个Chunk分成一组,以组为单位分批次构造哈希映射;查找某个Chunk内的键值对时使用哈希映射,在哈希地址空间中索引到键值数据的偏移地址,由偏移地址在Chunk结构中找到键值数据。具体地,在Immutable键值数据写到NVM之前,将key前缀相同的多个键值对以Chunk结构组织起来,每个Chunk内按照key的大小有序排列,然后根据key的前缀映射到有相同前缀的RangeTab,并将数据追加写到该RangeTab的Data区内最后一个Chunk的末尾。具体地,NVM上的数据合并到SSD上L1层时,选取部分RangeTab结构,具体如下:(1)若存在某个RangeTab存储的数据量与该RangeTab容量的比值超过阈值β,则对这些RangeTab按照数据量与总容量的比值从高到低排序,依次从比值最高的RangeTab开始将数据合并到下层;(2)对于那些数据量与容量的比值达到阈值α的RangeTab,计算各个RangeTab的数据量与相邻下层存在键范围重叠的SSTable数据量的比值,并选取其中比值最大的RangeTab参与合并;(3)当所有RangeTab数据与容量比值的平均值大于μ,只考虑数据量与容量的比值小于α但均大于μ的RangeTab,随机选取键范围相邻且数据量尽可能多的多个RangeTab一起参与合并,且这些RangeTab总数据量与单个RangeTab容量比值不超过阈值γ;(4)如果不满足前三个条件,则RangeTab不会触发合并,0<μ<α<β<1。具体地,采用双缓存区结构,每个RangeTab在初始化分配Data区空间时,先分配一块物理空间,当一个缓冲区因为数据写满而进行合并流程时,动态分配一块同样大小的新物理空间,Chunk数据在新缓冲区完成写入过程,当合并流程结束后前一个缓冲区释放,只留下新缓冲区。总体而言,通过本专利技术所构思的以上技术方案与现有技术相比,具有以下本文档来自技高网
...

【技术保护点】
1.一种基于NVM与SSD混合存储结构的键值存储系统,其特征在于,所述键值存储系统采用LSM‑Tree结构作为存储引擎,由上到下分为:内存,负责存储上层应用插入或更新到键值存储系统的最新键值数据于表Memtable中,若Memtable大小达到第一阈值,将其转变成只读状态的表Immutable后,将其键值数据写入到NVM;NVM,负责使用RangeTab结构来组织LSM‑Tree结构L0层的键值数据,每个RangeTab结构容量大小相等,将各个RangeTab映射到不同且互不重叠的键范围,Immutable键值数据由键范围将键值数据写入相应的RangeTab结构中;若NVM中所有RangeTab结构的键值数据达到第二阈值,选取部分RangeTab结构与SSD中L1层中键范围有重叠的所有SSTable文件合并到L1层;SSD,负责存储LSM‑Tree结构L1层以及所有下层SSTable文件数据,若Li层SSTable文件数量达到第三阈值,将Li层的部分SSTable文件合并到Li+1层,i≥1。

【技术特征摘要】
1.一种基于NVM与SSD混合存储结构的键值存储系统,其特征在于,所述键值存储系统采用LSM-Tree结构作为存储引擎,由上到下分为:内存,负责存储上层应用插入或更新到键值存储系统的最新键值数据于表Memtable中,若Memtable大小达到第一阈值,将其转变成只读状态的表Immutable后,将其键值数据写入到NVM;NVM,负责使用RangeTab结构来组织LSM-Tree结构L0层的键值数据,每个RangeTab结构容量大小相等,将各个RangeTab映射到不同且互不重叠的键范围,Immutable键值数据由键范围将键值数据写入相应的RangeTab结构中;若NVM中所有RangeTab结构的键值数据达到第二阈值,选取部分RangeTab结构与SSD中L1层中键范围有重叠的所有SSTable文件合并到L1层;SSD,负责存储LSM-Tree结构L1层以及所有下层SSTable文件数据,若Li层SSTable文件数量达到第三阈值,将Li层的部分SSTable文件合并到Li+1层,i≥1。2.如权利要求1所述的键值存储系统,其特征在于,所述RangeTab结构分成三部分:Metadata区、Index区与Data区;Metadata区用于记录RangeTab的元数据;Index区包含cur和seq,cur用于记录定位到Data区的索引信息,seq初始值为0,在RangeTab每次写入数据时其值自动累加1,而当键值数据全部合并到下层后其值又重新设置为0;Data区只负责存储键值数据。3.如权利要求2所述的键值存储系统,其特征在于,所述Data区由多个物理地址相连的Chunk组成,每个Chunk记录着键值数据内容Chunkdata、数据的大小Chunksize、数量、相对偏移地址这些元数据信息,每个Chunk的Chunkdata内存储的所有键值对有序排列,然后依次记录每条键值对的相对偏移地址,最后记录该Chunk中键值对的数量。4.如权利要求1至3任一项所述的键值存储系统,其特征在于,使用哈希地址空间结构记录NVM上RangeTab结构...

【专利技术属性】
技术研发人员:万继光谢长生胡皓胜程志龙王中华
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1