一种数据存储方法及装置的制造方法

文档序号:9471078阅读:204来源:国知局
一种数据存储方法及装置的制造方法
【技术领域】
[0001]本申请涉及数据处理领域,特别是涉及一种数据存储方法及装置。
【背景技术】
[0002]随着基于闪存的固态存储技术的发展,固态硬盘(Solid State Disk, SSD)逐渐被引入到存储系统中。因其小粒度随机读性能较高,SSD通常被用于对每秒进行读写(I/O)操作(Input/Output Operat1ns Per Second, I OPS)需求较高的应用场景中。
[0003]另一方面,多路搜索树(B-tree)是一种较常见的数据结构。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。因此,为了进一步提高数据的存取速度,现有技术中对于SSD中的数据,大多采用B-tree的数据结构进行存储。
[0004]在SSD中,更新数据的方式为异地更新。所谓异地更新,是指当一个存储节点中的数据发生变化时,在SSD中会将新的数据存储在另外的存储节点中,然后再删除原来的存储节点中的数据。但是,由于B-tree结构中定义的数据存储的最小节点的数据容量一般为4KB,因此,当发生更新的数据粒度较小(例如只有100B)时,仍然需要对4KB的存储节点进行重新写。由此可见,在SSD中采用B-tree的数据结构,导致了对小粒度数据进行更新时产生了写放大问题。
[0005]众所周知,SSD的读写速度快,但寿命较短。SSD中的每个存储节点的写入次数是有限的。因此,现有技术中的数据存储方法中,对小粒度数据进行更新时产生的写放大问题,会严重影响SSD的使用寿命。

【发明内容】

[0006]本申请的目的是提供一种数据存储方法及装置,能够通过将数据以LSM-tree的方式缓存在磁性硬盘中,解决对小粒度数据进行更新时产生的写放大问题,延长SSD的使用寿命。
[0007]为实现上述目的,本申请提供了如下方案:
[0008]根据本申请的第一方面的第一种可能的实现方式,本申请提供一种数据存储方法,所述方法包括:
[0009]从内存中获取需要存储至固态硬盘中的数据;
[0010]将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
[0011]对所述磁性硬盘中缓存的数据执行合并操作;
[0012]当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据存储至所述固态硬盘中。
[0013]结合第一方面的第二种可能的实现方式,对所述磁性硬盘中缓存的数据执行合并操作,具体包括:
[0014]确定所述磁性硬盘中缓存的数据的键名以及版本号;
[0015]在具有相同键名的数据中,确定最新生成的数据对应的最新版本号;
[0016]保留所述最新版本号对应的数据;
[0017]删除另外的版本号对应的数据。
[0018]结合第一方面的第三种可能的实现方式,所述将合并后的数据存储至所述固态硬盘中,具体包括:
[0019]将合并后的数据写入所述内存;
[0020]将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
[0021]结合第一方面的第三种可能的实现方式的第一种具体实现方式,所述将合并后的数据写入所述内存之前,还包括:
[0022]判断所述内存中是否已经存有所述合并后的数据;
[0023]如果是,则直接将所述内存中存有的所述合并后的数据存储至所述固态硬盘中;
[0024]否则,执行将合并后的数据写入所述内存的步骤。
[0025]结合第一方面的第四种可能的实现方式,所述将合并后的数据存储至所述固态硬盘中之前,还包括:
[0026]判断所述磁性硬盘的空闲带宽是否大于预设阈值;
[0027]如果是,则将合并后的数据以排序的字符串表为单位存储至所述固态硬盘中;
[0028]否则,继续执行将所述数据以日志结构合并树的数据结构缓存至磁性硬盘的步骤。
[0029]结合第一方面的第五种可能的实现方式,所述将合并后的数据存储至所述固态硬盘中之前,还包括:
[0030]在所述合并后的数据中,确定更新频率小于预设频率的数据;
[0031]所述将合并后的数据存储至所述固态硬盘中,具体包括:
[0032]将所述更新频率小于预设频率的数据存储至所述固态硬盘中。
[0033]结合第一方面的五种可能的实现方式中的任意一种,所述合并后的数据以多路搜索树的数据结构存储在所述固态硬盘中。
[0034]结合第一方面的五种可能的实现方式中的任意一种,所述日志结构合并树的索引持久存储于所述磁性硬盘中。
[0035]根据本申请的第二方面的第一种可能的实现方式,本申请提供一种数据存储装置,所述装置包括:
[0036]数据获取单元,用于从内存中获取需要存储至固态硬盘中的数据;
[0037]缓存单元,用于将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
[0038]合并单元,用于对所述磁性硬盘中缓存的数据执行合并操作;
[0039]存储迁移单元,用于当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据存储至所述固态硬盘中。
[0040]结合第二方面的第二种可能的实现方式,所述合并单元,具体用于:
[0041]确定所述磁性硬盘中缓存的数据的键名以及版本号;
[0042]在具有相同键名的数据中,确定最新生成的数据对应的最新版本号;
[0043]保留所述最新版本号对应的数据;
[0044]删除另外的版本号对应的数据。
[0045]结合第二方面的第三种可能的实现方式,所述存储迁移单元,具体用于:
[0046]将合并后的数据写入所述内存;
[0047]将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
[0048]结合第二方面的第三种可能的实现方式的第一种具体的实现方式,第一判断单元,用于在将合并后的数据写入所述内存之前,判断所述内存中是否已经存有所述合并后的数据;
[0049]所述存储迁移单元,用于当所述第一判断单元的判断结果为是时,直接将所述内存中存有的所述合并后的数据存储至所述固态硬盘中;
[0050]当所述第一判断单元的判断结果为是时,执行将合并后的数据写入所述内存的步骤。
[0051]结合第二方面的第四种可能的实现方式,还包括:
[0052]第二判断单元,用于在将合并后的数据存储至所述固态硬盘中之前,判断所述磁性硬盘的空闲带宽是否大于预设阈值;
[0053]所述存储迁移单元,用于当所述第二判断单元的判断结果为是时,则将合并后的数据以排序的字符串表为单位存储至所述固态硬盘中;
[0054]当所述第二判断单元的判断结果为否时,继续执行将所述数据以日志结构合并树的数据结构缓存至磁性硬盘的步骤。
[0055]结合第二方面的第五种可能的实现方式,还包括:
[0056]数据确定单元,用于在将合并后的数据存储至所述固态硬盘中之前,在所述合并后的数据中,确定更新频率小于预设频率的数据;
[0057]所述存储迁移单元,具体用于:
[0058]将所述更新频率小于预设频率的数据存储至所述固态硬盘中。
[0059]结合第二方面的五种可能的实现方式中的任意一种,所述合并后的数据以多路搜索树的数据结构存储在所述固态硬盘中。
[0060]根据本申请提供的具体实施例,本申请公开了以下技术效果:
[0061]本申请公开的数据存储方法或装置,通过将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;对所述磁性硬盘中缓存的数据执行合并操作;将合并后的数据存储至所述固态硬盘中;可以采用磁性硬盘承载小粒度数据的更新过程,并且,由于对所述磁性硬盘中缓存的数据执行了合并操作,当某个键名的数据先后生成了多个不同版本的数据时,最终可以在磁性硬盘中合并成一个版本的数据,从而使得原本对于固态硬盘的多次写入过程,可以简化为一次写入过程,解决了对小粒度数据进行更新时产生的写放大问题,可以延长SSD的使用寿命。
【附图说明】
[0062]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0063]图1为本发明的数据存储方法实施例1的流
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1