CN105224237A - 一种数据存储方法及装置 - Google Patents

一种数据存储方法及装置 Download PDF

Info

Publication number
CN105224237A
CN105224237A CN201410226007.5A CN201410226007A CN105224237A CN 105224237 A CN105224237 A CN 105224237A CN 201410226007 A CN201410226007 A CN 201410226007A CN 105224237 A CN105224237 A CN 105224237A
Authority
CN
China
Prior art keywords
data
merging
solid state
stored
disk
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.)
Granted
Application number
CN201410226007.5A
Other languages
English (en)
Other versions
CN105224237B (zh
Inventor
刘扬宽
熊劲
岳银亮
张子刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201410226007.5A priority Critical patent/CN105224237B/zh
Publication of CN105224237A publication Critical patent/CN105224237A/zh
Application granted granted Critical
Publication of CN105224237B publication Critical patent/CN105224237B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本申请提供了一种数据存储方法及装置。所述方法包括:从内存中获取需要存储至固态硬盘中的数据;将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;对所述磁性硬盘中缓存的数据执行合并操作;当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据存储至所述固态硬盘中。采用本申请的方法或装置,可以解决对小粒度数据进行更新时产生的写放大问题,延长固态硬盘的使用寿命。

Description

一种数据存储方法及装置
技术领域
本申请涉及数据处理领域,特别是涉及一种数据存储方法及装置。
背景技术
随着基于闪存的固态存储技术的发展,固态硬盘(SolidStateDisk,SSD)逐渐被引入到存储系统中。因其小粒度随机读性能较高,SSD通常被用于对每秒进行读写(I/O)操作(Input/OutputOperationsPerSecond,IOPS)需求较高的应用场景中。
另一方面,多路搜索树(B-tree)是一种较常见的数据结构。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。因此,为了进一步提高数据的存取速度,现有技术中对于SSD中的数据,大多采用B-tree的数据结构进行存储。
在SSD中,更新数据的方式为异地更新。所谓异地更新,是指当一个存储节点中的数据发生变化时,在SSD中会将新的数据存储在另外的存储节点中,然后再删除原来的存储节点中的数据。但是,由于B-tree结构中定义的数据存储的最小节点的数据容量一般为4KB,因此,当发生更新的数据粒度较小(例如只有100B)时,仍然需要对4KB的存储节点进行重新写。由此可见,在SSD中采用B-tree的数据结构,导致了对小粒度数据进行更新时产生了写放大问题。
众所周知,SSD的读写速度快,但寿命较短。SSD中的每个存储节点的写入次数是有限的。因此,现有技术中的数据存储方法中,对小粒度数据进行更新时产生的写放大问题,会严重影响SSD的使用寿命。
发明内容
本申请的目的是提供一种数据存储方法及装置,能够通过将数据以LSM-tree的方式缓存在磁性硬盘中,解决对小粒度数据进行更新时产生的写放大问题,延长SSD的使用寿命。
为实现上述目的,本申请提供了如下方案:
根据本申请的第一方面的第一种可能的实现方式,本申请提供一种数据存储方法,所述方法包括:
从内存中获取需要存储至固态硬盘中的数据;
将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
对所述磁性硬盘中缓存的数据执行合并操作;
当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据存储至所述固态硬盘中。
结合第一方面的第二种可能的实现方式,对所述磁性硬盘中缓存的数据执行合并操作,具体包括:
确定所述磁性硬盘中缓存的数据的键名以及版本号;
在具有相同键名的数据中,确定最新生成的数据对应的最新版本号;
保留所述最新版本号对应的数据;
删除另外的版本号对应的数据。
结合第一方面的第三种可能的实现方式,所述将合并后的数据存储至所述固态硬盘中,具体包括:
将合并后的数据写入所述内存;
将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
结合第一方面的第三种可能的实现方式的第一种具体实现方式,所述将合并后的数据写入所述内存之前,还包括:
判断所述内存中是否已经存有所述合并后的数据;
如果是,则直接将所述内存中存有的所述合并后的数据存储至所述固态硬盘中;
否则,执行将合并后的数据写入所述内存的步骤。
结合第一方面的第四种可能的实现方式,所述将合并后的数据存储至所述固态硬盘中之前,还包括:
判断所述磁性硬盘的空闲带宽是否大于预设阈值;
如果是,则将合并后的数据以排序的字符串表为单位存储至所述固态硬盘中;
否则,继续执行将所述数据以日志结构合并树的数据结构缓存至磁性硬盘的步骤。
结合第一方面的第五种可能的实现方式,所述将合并后的数据存储至所述固态硬盘中之前,还包括:
在所述合并后的数据中,确定更新频率小于预设频率的数据;
所述将合并后的数据存储至所述固态硬盘中,具体包括:
将所述更新频率小于预设频率的数据存储至所述固态硬盘中。
结合第一方面的五种可能的实现方式中的任意一种,所述合并后的数据以多路搜索树的数据结构存储在所述固态硬盘中。
结合第一方面的五种可能的实现方式中的任意一种,所述日志结构合并树的索引持久存储于所述磁性硬盘中。
根据本申请的第二方面的第一种可能的实现方式,本申请提供一种数据存储装置,所述装置包括:
数据获取单元,用于从内存中获取需要存储至固态硬盘中的数据;
缓存单元,用于将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
合并单元,用于对所述磁性硬盘中缓存的数据执行合并操作;
存储迁移单元,用于当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据存储至所述固态硬盘中。
结合第二方面的第二种可能的实现方式,所述合并单元,具体用于:
确定所述磁性硬盘中缓存的数据的键名以及版本号;
在具有相同键名的数据中,确定最新生成的数据对应的最新版本号;
保留所述最新版本号对应的数据;
删除另外的版本号对应的数据。
结合第二方面的第三种可能的实现方式,所述存储迁移单元,具体用于:
将合并后的数据写入所述内存;
将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
结合第二方面的第三种可能的实现方式的第一种具体的实现方式,第一判断单元,用于在将合并后的数据写入所述内存之前,判断所述内存中是否已经存有所述合并后的数据;
所述存储迁移单元,用于当所述第一判断单元的判断结果为是时,直接将所述内存中存有的所述合并后的数据存储至所述固态硬盘中;
当所述第一判断单元的判断结果为是时,执行将合并后的数据写入所述内存的步骤。
结合第二方面的第四种可能的实现方式,还包括:
第二判断单元,用于在将合并后的数据存储至所述固态硬盘中之前,判断所述磁性硬盘的空闲带宽是否大于预设阈值;
所述存储迁移单元,用于当所述第二判断单元的判断结果为是时,则将合并后的数据以排序的字符串表为单位存储至所述固态硬盘中;
当所述第二判断单元的判断结果为否时,继续执行将所述数据以日志结构合并树的数据结构缓存至磁性硬盘的步骤。
结合第二方面的第五种可能的实现方式,还包括:
数据确定单元,用于在将合并后的数据存储至所述固态硬盘中之前,在所述合并后的数据中,确定更新频率小于预设频率的数据;
所述存储迁移单元,具体用于:
将所述更新频率小于预设频率的数据存储至所述固态硬盘中。
结合第二方面的五种可能的实现方式中的任意一种,所述合并后的数据以多路搜索树的数据结构存储在所述固态硬盘中。
根据本申请提供的具体实施例,本申请公开了以下技术效果:
本申请公开的数据存储方法或装置,通过将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;对所述磁性硬盘中缓存的数据执行合并操作;将合并后的数据存储至所述固态硬盘中;可以采用磁性硬盘承载小粒度数据的更新过程,并且,由于对所述磁性硬盘中缓存的数据执行了合并操作,当某个键名的数据先后生成了多个不同版本的数据时,最终可以在磁性硬盘中合并成一个版本的数据,从而使得原本对于固态硬盘的多次写入过程,可以简化为一次写入过程,解决了对小粒度数据进行更新时产生的写放大问题,可以延长SSD的使用寿命。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的数据存储方法实施例1的流程图;
图2为本发明的数据存储方法实施例2的流程图;
图3为本发明的数据存储方法实施例3的流程图;
图4为本发明的数据存储方法实施例4的流程图;
图5为本发明的数据存储方法实施例5的流程图;
图6为本申请的数据存储装置实施例的结构图;
图7为本申请的计算节点的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
图1为本发明的数据存储方法实施例1的流程图。如图1所示,该方法可以包括:
步骤101:从内存中获取需要存储至固态硬盘中的数据;
所述数据可以是电子设备在运行某些程序时在内存中生成的数据。例如,可以是电子设备在运行excel程序进行表格编辑时,用户在表格中录入的数据;或者,可以是电子设备在运行word程序进行文档编辑时,用户在文档中录入的文本数据。当然,也可以是电子设备运行其它程序时在内存中生成的,或者读取到内存中的数据。
步骤102:将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
日志结构合并树(LogStructureMergingTree,LSM-tree),是一种数据存储结构,具有较高的数据存储效率,同时也不会显著降低数据的读取效率。
步骤103:对所述磁性硬盘中缓存的数据执行合并操作;
采用日志结构合并树对数据进行存储时,可以对存储的数据进行合并。即当缓存有多个键名相同的数据后,可以根据各个数据的版本号,保留最新的版本号对应的数据,而删除另外的版本号对应的数据。
本实施例中,LSM-tree形式的数据是存储在磁性硬盘中的,数据的合并过程也主要是在磁性硬盘中进行的。
LSM-tree形式的数据可以存储在多个数据集合中。不同的数据集合可以对应不同的数据迁移优先级。通常,各个数据集合可以表示为C0,C1,C2,C3,依此类推。数据迁移优先级较高的数据集合的数据个数上限,大于数据迁移优先级较低的数据集合的数据个数上限。例如,C0中的数据个数小于C1中的数据个数,C1中的数据个数小于C2中的数据个数,C2中的数据个数小于C3中的数据个数……C0中的数据可以存储在内存中,C1,C2,C3中的数据可以存储在磁性硬盘中。
当某个数据集合中存储的数据个数达到该数据集合的上限时,可以向该数据集合的下一级(即数据迁移优先级大于该数据集合的)数据集合进行数据转移。例如,当C0中的数据达到存储上限后,可以转移到C1中存储;当C1中的数据达到存储上限后,可以转移到C2中存储,依此类推。并且,在数据转移的过程中,还可以对数据进行排序。以C3中具有1000个数据为例,这1000个数据可以按照数据的键名的顺序进行排列。由于对数据进行了排序,因此将这些数据存储在固态硬盘中以后,可以提高从固态硬盘中读取这些数据的速度。
步骤104:当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据存储至所述固态硬盘中。
具体的,可以先将合并后的数据写入所述内存;
再将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
综上所述,本实施例中,通过将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;对所述磁性硬盘中缓存的数据执行合并操作;将合并后的数据存储至所述固态硬盘中;可以采用磁性硬盘承载小粒度数据的更新过程,并且,由于对所述磁性硬盘中缓存的数据执行了合并操作,当某个键名的数据先后生成了多个不同版本的数据时,最终可以在磁性硬盘中合并成一个版本的数据,从而使得原本对于固态硬盘的多次写入过程,可以简化为一次写入过程,解决了对小粒度数据进行更新时产生的写放大问题,可以延长SSD的使用寿命。
图2为本发明的数据存储方法实施例2的流程图。如图2所示,该方法可以包括:
步骤201:从内存中获取需要存储至固态硬盘中的数据;
步骤202:将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
步骤203:确定所述磁性硬盘中缓存的数据的键名以及版本号;
本实施例中,数据可以以键值(Key-Value)的方式存储在磁性硬盘中。一个最小单位的数据可以具有键名和版本号。其中,键名用于表示该数据的名称,版本号可以直接或间接的表示该数据的生成时间。
步骤204:在具有相同键名的数据中,确定最新生成的数据对应的最新版本号;
当同一个数据被多次编辑或修改,就会生成多个不同版本的并且键名相同的数据。
步骤205:保留所述最新版本号对应的数据;
通常,最新版本号对应的数据的生成时间也是最新的,而最新生成的数据内容往往才是最需要保存的,所以,可以保留所述最新版本号对应的数据。
步骤206:删除另外的版本号对应的数据;
步骤207:当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据写入所述内存;
所述预设容量可以根据实际需求进行设置,当将合并后的数据以排序的字符串表阵列为单位存储至所述固态硬盘中时,所述预设容量可以是2MB。
步骤208:将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
本实施例中,通过在具有相同键名的数据中,确定最新生成的数据对应的最新版本号;保留所述最新版本号对应的数据;删除另外的版本号对应的数据;可以确保合并后的数据的版本是最新的,即在合并过程中可以保留有用的数据,删除无用的数据。
图3为本发明的数据存储方法实施例3的流程图。如图3所示,该方法可以包括:
步骤301:从内存中获取需要存储至固态硬盘中的数据;
步骤302:将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
步骤303:对所述磁性硬盘中缓存的数据执行合并操作;
步骤304:当所述磁性硬盘中缓存的数据容量达到预设容量时,判断所述内存中是否已经存有所述合并后的数据;如果是,执行步骤305;否则,执行步骤306;
电子设备在运行其他程序时,可能会预先将合并后的数据读取到内存中。对于预先读取到内存中的数据,就不必再执行将合并后的数据写入所述内存这一步骤,而可以直接将内存中存有的所述合并后的数据存储至所述固态硬盘中。
步骤305:直接将所述内存中存有的所述合并后的数据存储至所述固态硬盘中;
步骤306:将合并后的数据写入所述内存;
步骤307:将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
本实施例中,通过判断所述内存中是否已经存有所述合并后的数据;当所述内存中已经存有所述合并后的数据时,可以直接将所述内存中存有的所述合并后的数据存储至所述固态硬盘中,而不必再执行将合并后的数据写入所述内存这一步骤,可以提高数据存储效率。
图4为本发明的数据存储方法实施例4的流程图。如图4所示,该方法可以包括:
步骤401:从内存中获取需要存储至固态硬盘中的数据;
步骤402:将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
步骤403:对所述磁性硬盘中缓存的数据执行合并操作;
步骤404:当所述磁性硬盘中缓存的数据容量达到预设容量时,判断所述磁性硬盘的空闲带宽是否大于预设阈值;如果是,执行步骤405;否则,执行步骤406;
磁性硬盘的可用于数据读或写的带宽是有限的,当磁性硬盘的空闲带宽(即尚未被使用的带宽)大于预设阈值时,即磁性硬盘的空闲带宽较大,此时,可以执行将磁性硬盘中缓存的数据存储至固态硬盘中的步骤;当磁性硬盘的空闲带宽小于预设阈值时,即磁性硬盘的空闲带宽较小,此时,可以继续执行将所述数据以日志结构合并树的数据结构缓存至磁性硬盘的步骤,等待磁性硬盘的空闲带宽较大时,再将磁性硬盘中缓存的数据迁移至固态硬盘中。
步骤405:将合并后的数据以排序的字符串表为单位存储至所述固态硬盘中;
前面提到,在对数据进行合并的过程中,可以对数据进行排序,排序后可以得到排序的字符串表(StringSortedTable,SST)。以排序的字符串表为单位将合并后的数据存储至所述固态硬盘中,可以提高从固态硬盘中读取数据的速度。
步骤406:继续执行将所述数据以日志结构合并树的数据结构缓存至磁性硬盘的步骤。
本实施例中,通过判断所述磁性硬盘的空闲带宽是否大于预设阈值,当空闲带宽大于预设阈值时,将合并后的数据写入固态硬盘,当空闲带宽小于预设阈值时,继续将数据缓存至磁性硬盘中,以便磁性硬盘的空闲带宽较大(例如大于预设阈值)时,再将合并后的数据写入固态硬盘,可以进一步提高将数据存储至固态硬盘的效率。
图5为本发明的数据存储方法实施例5的流程图。如图5所示,该方法可以包括:
步骤501:从内存中获取需要存储至固态硬盘中的数据;
步骤502:将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
步骤503:对所述磁性硬盘中缓存的数据执行合并操作;
步骤504:当所述磁性硬盘中缓存的数据容量达到预设容量时,在所述合并后的数据中,确定更新频率小于预设频率的数据;
当用户使用电子设备对某些类型的文件进行编辑时,某些数据可能会被频繁的更改,进而会产生多个键名相同但版本不同的数据。这些数据由于经常发生更新,如果写入固态硬盘后,在短时间内再次发生更新,则会导致对固态硬盘进行多次写操作,所以不适合写入固态硬盘。
本步骤中,可以根据数据的版本等信息,在所述合并后的数据中,确定更新频率小于预设频率的数据。将更新频率较低的数据存储至固态硬盘中,从而进一步减少对固态硬盘的写操作。
步骤505:将所述更新频率小于预设频率的数据存储至所述固态硬盘中。
本实施例中,通过在所述合并后的数据中,确定更新频率小于预设频率的数据。将更新频率较低的数据存储至固态硬盘中,从而进一步减少对固态硬盘的写操作。
需要说明的是,本申请各个实施例中,所述合并后的数据以多路搜索树(B-tree)的数据结构存储在所述固态硬盘中。采用多路搜索树的数据结构,可以提高从固态硬盘中读取数据的速度。
本申请各个实施例中,所述日志结构合并树的索引可以持久存储于所述磁性硬盘中。
本申请还提供了一种数据存储装置。所述数据存储装置可以是同时具有磁性硬盘和固态硬盘的电子设备。
图6为本申请的数据存储装置实施例的结构图。如图6所示,该装置可以包括:
数据获取单元601,用于从内存中获取需要存储至固态硬盘中的数据;
所述数据可以是电子设备在运行某些程序时在内存中生成的数据。例如,可以是电子设备在运行excel程序进行表格编辑时,用户在表格中录入的数据;或者,可以是电子设备在运行word程序进行文档编辑时,用户在文档中录入的文本数据。当然,也可以是电子设备运行其它程序时在内存中生成的,或者读取到内存中的数据。
缓存单元602,用于将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
日志结构合并树(LogStructureMergingTree,LSM-tree),是一种数据存储结构,具有较高的数据存储效率,同时也不会显著降低数据的读取效率。
合并单元603,用于对所述磁性硬盘中缓存的数据执行合并操作;
采用日志结构合并树对数据进行存储时,可以对存储的数据进行合并。即当缓存有多个键名相同的数据后,可以根据各个数据的版本号,保留最新的版本号对应的数据,而删除另外的版本号对应的数据。
本实施例中,LSM-tree形式的数据是存储在磁性硬盘中的,数据的合并过程也主要是在磁性硬盘中进行的。
LSM-tree形式的数据可以存储在多个数据集合中。不同的数据集合可以对应不同的数据迁移优先级。通常,各个数据集合可以表示为C0,C1,C2,C3,依此类推。数据迁移优先级较高的数据集合的数据个数上限,大于数据迁移优先级较低的数据集合的数据个数上限。例如,C0中的数据个数小于C1中的数据个数,C1中的数据个数小于C2中的数据个数,C2中的数据个数小于C3中的数据个数……C0中的数据可以存储在内存中,C1,C2,C3中的数据可以存储在磁性硬盘中。
当某个数据集合中存储的数据个数达到该数据集合的上限时,可以向该数据集合的下一级(即数据迁移优先级大于该数据集合的)数据集合进行数据转移。例如,当C0中的数据达到存储上限后,可以转移到C1中存储;当C1中的数据达到存储上限后,可以转移到C2中存储,依此类推。并且,在数据转移的过程中,还可以对数据进行排序。以C3中具有1000个数据为例,这1000个数据可以按照数据的键名的顺序进行排列。由于对数据进行了排序,因此将这些数据存储在固态硬盘中以后,可以提高从固态硬盘中读取这些数据的速度。
存储迁移单元604,用于当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据存储至所述固态硬盘中。
具体的,可以先将合并后的数据写入所述内存;
再将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
综上所述,本实施例中,通过将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;对所述磁性硬盘中缓存的数据执行合并操作;将合并后的数据存储至所述固态硬盘中;可以采用磁性硬盘承载小粒度数据的更新过程,并且,由于对所述磁性硬盘中缓存的数据执行了合并操作,当某个键名的数据先后生成了多个不同版本的数据时,最终可以在磁性硬盘中合并成一个版本的数据,从而使得原本对于固态硬盘的多次写入过程,可以简化为一次写入过程,可以延长SSD的使用寿命。
实际应用中,所述合并单元603,具体可以用于:
确定所述磁性硬盘中缓存的数据的键名以及版本号;
在具有相同键名的数据中,确定最新生成的数据对应的最新版本号;
保留所述最新版本号对应的数据;
删除另外的版本号对应的数据。
实际应用中,所述存储迁移单元604,具体可以用于:
将合并后的数据写入所述内存;
将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
实际应用中,该装置还可以包括:
第一判断单元,用于在将合并后的数据写入所述内存之前,判断所述内存中是否已经存有所述合并后的数据;
所述存储迁移单元604,可以用于当所述第一判断单元的判断结果为是时,直接将所述内存中存有的所述合并后的数据存储至所述固态硬盘中;
当所述第一判断单元的判断结果为是时,执行将合并后的数据写入所述内存的步骤。
实际应用中,该装置还可以包括:
第二判断单元,用于在将合并后的数据存储至所述固态硬盘中之前,判断所述磁性硬盘的空闲带宽是否大于预设阈值;
所述存储迁移单元604,可以用于当所述第二判断单元的判断结果为是时,则将合并后的数据以排序的字符串表为单位存储至所述固态硬盘中;
当所述第二判断单元的判断结果为否时,继续执行将所述数据以日志结构合并树的数据结构缓存至磁性硬盘的步骤。
实际应用中,该装置还可以包括:
数据确定单元,用于在将合并后的数据存储至所述固态硬盘中之前,在所述合并后的数据中,确定更新频率小于预设频率的数据;
所述存储迁移单元604,具体可以用于:
将所述更新频率小于预设频率的数据存储至所述固态硬盘中。
实际应用中,所述合并后的数据以多路搜索树的数据结构存储在所述固态硬盘中。所述日志结构合并树的索引持久存储于所述磁性硬盘中。
另外,本申请实施例还提供了一种计算节点,计算节点可能是包含计算能力的主机服务器,或者是个人计算机PC,或者是可携带的便携式计算机或终端等等,本申请具体实施例并不对计算节点的具体实现做限定。
图7为本申请的计算节点的结构图。如图7所示,计算节点700包括:
处理器(processor)710,通信接口(CommunicationsInterface)720,存储器(memory)730,总线740。
处理器710,通信接口720,存储器730通过总线740完成相互间的通信。
处理器710,用于执行程序732。
具体地,程序732可以包括程序代码,所述程序代码包括计算机操作指令。
处理器710可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成实施本申请实施例的一个或多个集成电路。
存储器730,用于存放程序732。存储器730可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
程序732中各模块的具体实现参见图6所示实施例中的相应单元,在此不赘述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。

Claims (16)

1.一种数据存储方法,其特征在于,所述方法包括:
从内存中获取需要存储至固态硬盘中的数据;
将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
对所述磁性硬盘中缓存的数据执行合并操作;
当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据存储至所述固态硬盘中。
2.根据权利要求1所述的方法,其特征在于,对所述磁性硬盘中缓存的数据执行合并操作,具体包括:
确定所述磁性硬盘中缓存的数据的键名以及版本号;
在具有相同键名的数据中,确定最新生成的数据对应的最新版本号;
保留所述最新版本号对应的数据;
删除另外的版本号对应的数据。
3.根据权利要求1所述的方法,其特征在于,所述将合并后的数据存储至所述固态硬盘中,具体包括:
将合并后的数据写入所述内存;
将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
4.根据权利要求3所述的方法,其特征在于,所述将合并后的数据写入所述内存之前,还包括:
判断所述内存中是否已经存有所述合并后的数据;
如果是,则直接将所述内存中存有的所述合并后的数据存储至所述固态硬盘中;
否则,执行将合并后的数据写入所述内存的步骤。
5.根据权利要求1所述的方法,其特征在于,所述将合并后的数据存储至所述固态硬盘中之前,还包括:
判断所述磁性硬盘的空闲带宽是否大于预设阈值;
如果是,则将合并后的数据以排序的字符串表为单位存储至所述固态硬盘中;
否则,继续执行将所述数据以日志结构合并树的数据结构缓存至磁性硬盘的步骤。
6.根据权利要求1所述的方法,其特征在于,所述将合并后的数据存储至所述固态硬盘中之前,还包括:
在所述合并后的数据中,确定更新频率小于预设频率的数据;
所述将合并后的数据存储至所述固态硬盘中,具体包括:
将所述更新频率小于预设频率的数据存储至所述固态硬盘中。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述合并后的数据以多路搜索树的数据结构存储在所述固态硬盘中。
8.根据权利要求1-6任一项所述的方法,其特征在于,所述日志结构合并树的索引持久存储于所述磁性硬盘中。
9.一种数据存储装置,其特征在于,所述装置包括:
数据获取单元,用于从内存中获取需要存储至固态硬盘中的数据;
缓存单元,用于将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
合并单元,用于对所述磁性硬盘中缓存的数据执行合并操作;
存储迁移单元,用于当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据存储至所述固态硬盘中。
10.根据权利要求9所述的装置,其特征在于,所述合并单元,具体用于:
确定所述磁性硬盘中缓存的数据的键名以及版本号;
在具有相同键名的数据中,确定最新生成的数据对应的最新版本号;
保留所述最新版本号对应的数据;
删除另外的版本号对应的数据。
11.根据权利要求9所述的装置,其特征在于,所述存储迁移单元,具体用于:
将合并后的数据写入所述内存;
将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
12.根据权利要求11所述的装置,其特征在于,还包括:
第一判断单元,用于在将合并后的数据写入所述内存之前,判断所述内存中是否已经存有所述合并后的数据;
所述存储迁移单元,用于当所述第一判断单元的判断结果为是时,直接将所述内存中存有的所述合并后的数据存储至所述固态硬盘中;
当所述第一判断单元的判断结果为是时,执行将合并后的数据写入所述内存的步骤。
13.根据权利要求9所述的装置,其特征在于,还包括:
第二判断单元,用于在将合并后的数据存储至所述固态硬盘中之前,判断所述磁性硬盘的空闲带宽是否大于预设阈值;
所述存储迁移单元,用于当所述第二判断单元的判断结果为是时,则将合并后的数据以排序的字符串表为单位存储至所述固态硬盘中;
当所述第二判断单元的判断结果为否时,继续执行将所述数据以日志结构合并树的数据结构缓存至磁性硬盘的步骤。
14.根据权利要求9所述的装置,其特征在于,还包括:
数据确定单元,用于在将合并后的数据存储至所述固态硬盘中之前,在所述合并后的数据中,确定更新频率小于预设频率的数据;
所述存储迁移单元,具体用于:
将所述更新频率小于预设频率的数据存储至所述固态硬盘中。
15.根据权利要求9-14任一项所述的装置,其特征在于,所述合并后的数据以多路搜索树的数据结构存储在所述固态硬盘中。
16.根据权利要求9-14任一项所述的装置,其特征在于,所述日志结构合并树的索引持久存储于所述磁性硬盘中。
CN201410226007.5A 2014-05-26 2014-05-26 一种数据存储方法及装置 Active CN105224237B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410226007.5A CN105224237B (zh) 2014-05-26 2014-05-26 一种数据存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410226007.5A CN105224237B (zh) 2014-05-26 2014-05-26 一种数据存储方法及装置

Publications (2)

Publication Number Publication Date
CN105224237A true CN105224237A (zh) 2016-01-06
CN105224237B CN105224237B (zh) 2018-06-19

Family

ID=54993244

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410226007.5A Active CN105224237B (zh) 2014-05-26 2014-05-26 一种数据存储方法及装置

Country Status (1)

Country Link
CN (1) CN105224237B (zh)

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106502587A (zh) * 2016-10-19 2017-03-15 华为技术有限公司 磁盘数据管理方法和磁盘控制装置
CN106599247A (zh) * 2016-12-19 2017-04-26 北京奇虎科技有限公司 LSM‑tree结构中数据文件的合并方法及装置
CN106777146A (zh) * 2016-12-19 2017-05-31 北京奇虎科技有限公司 基于LSM‑tree结构的数据处理方法及装置
CN106843748A (zh) * 2016-11-28 2017-06-13 北京握奇智能科技有限公司 一种提高数据写入移动存储设备速度的方法和系统
CN106951301A (zh) * 2017-04-27 2017-07-14 腾讯科技(深圳)有限公司 文件预读方法及装置
CN107066204A (zh) * 2016-12-23 2017-08-18 航天星图科技(北京)有限公司 一种多节点间的数据交换方法
CN107203330A (zh) * 2016-03-17 2017-09-26 北京忆恒创源科技有限公司 一种面向读写数据流的闪存数据分布方法
CN107329694A (zh) * 2017-06-22 2017-11-07 苏州交运电子科技有限公司 数据存储控制方法、控制装置及存储设备
CN107632790A (zh) * 2017-09-30 2018-01-26 郑州云海信息技术有限公司 一种分布式存储系统中控制磁盘带宽的方法
WO2018033036A1 (zh) * 2016-08-19 2018-02-22 深圳大普微电子科技有限公司 固态硬盘和应用于固态硬盘的数据存取方法
CN107733709A (zh) * 2017-10-17 2018-02-23 北京奇虎科技有限公司 数据存储方法、装置及电子设备
CN107766067A (zh) * 2017-09-28 2018-03-06 福州瑞芯微电子股份有限公司 一种提升压缩镜像烧录速度的方法、存储介质及计算机
CN108052643A (zh) * 2017-12-22 2018-05-18 北京奇虎科技有限公司 基于LSM Tree结构的数据存储方法、装置及存储引擎
CN108733306A (zh) * 2017-04-14 2018-11-02 华为技术有限公司 一种文件合并方法及装置
CN108804625A (zh) * 2018-05-31 2018-11-13 阿里巴巴集团控股有限公司 一种lsm树的优化方法、装置及计算机设备
CN108804019A (zh) * 2017-04-27 2018-11-13 华为技术有限公司 一种数据存储方法及装置
CN109376100A (zh) * 2018-11-05 2019-02-22 浪潮电子信息产业股份有限公司 一种缓存写入方法、装置、设备及可读存储介质
CN109558457A (zh) * 2018-12-11 2019-04-02 浪潮(北京)电子信息产业有限公司 一种数据写入方法、装置、设备及存储介质
WO2019071714A1 (zh) * 2017-10-12 2019-04-18 苏州韦科韬信息技术有限公司 利用混合存储系统提高存储性价比的方法
CN109725841A (zh) * 2017-10-30 2019-05-07 华为技术有限公司 数据写入方法、装置、存储系统、存储介质与控制器
CN109918381A (zh) * 2019-03-13 2019-06-21 北京百度网讯科技有限公司 用于存储数据的方法和装置
CN110188108A (zh) * 2019-06-10 2019-08-30 北京平凯星辰科技发展有限公司 数据存储方法、装置、系统、计算机设备及存储介质
CN110333828A (zh) * 2019-07-12 2019-10-15 四川虹美智能科技有限公司 Eeprom数据存储方法、控制器以及系统
CN110502457A (zh) * 2019-08-23 2019-11-26 北京浪潮数据技术有限公司 一种元数据存储方法及装置
CN111241096A (zh) * 2020-01-07 2020-06-05 中孚安全技术有限公司 一种excel文档的文本提取方法、系统、终端及存储介质
CN111897493A (zh) * 2020-07-15 2020-11-06 杭州海康威视系统技术有限公司 存储空间管理方法、装置及电子设备、存储介质
CN112000698A (zh) * 2020-08-25 2020-11-27 青岛海尔科技有限公司 日志的记录方法及装置、存储介质、电子装置
CN112540984A (zh) * 2020-11-23 2021-03-23 成都佳华物链云科技有限公司 数据存储方法、查询方法、装置、电子设备及存储介质
CN112817544A (zh) * 2021-03-05 2021-05-18 北京星网锐捷网络技术有限公司 一种数据处理方法、存储系统及存储设备
CN113590035A (zh) * 2021-07-21 2021-11-02 湖南兴天电子科技有限公司 一种非标准sata接口的驱动方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1959622A (zh) * 2006-11-24 2007-05-09 骆建军 基于flash的硬盘
CN101593085A (zh) * 2008-05-28 2009-12-02 付建云 基于多个flash存储卡的硬盘
CN102122235A (zh) * 2011-01-24 2011-07-13 武汉固捷联讯科技有限公司 一种raid4系统及其数据读写方法
CN103198150A (zh) * 2013-04-24 2013-07-10 清华大学 一种大数据索引方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1959622A (zh) * 2006-11-24 2007-05-09 骆建军 基于flash的硬盘
CN101593085A (zh) * 2008-05-28 2009-12-02 付建云 基于多个flash存储卡的硬盘
CN102122235A (zh) * 2011-01-24 2011-07-13 武汉固捷联讯科技有限公司 一种raid4系统及其数据读写方法
CN103198150A (zh) * 2013-04-24 2013-07-10 清华大学 一种大数据索引方法及系统

Cited By (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107203330A (zh) * 2016-03-17 2017-09-26 北京忆恒创源科技有限公司 一种面向读写数据流的闪存数据分布方法
US10810127B2 (en) 2016-08-19 2020-10-20 Shenzhen Dapu Microelectronics Co., Ltd. Solid-state hard disk and data access method for use with solid-state hard disk
WO2018033036A1 (zh) * 2016-08-19 2018-02-22 深圳大普微电子科技有限公司 固态硬盘和应用于固态硬盘的数据存取方法
CN106502587B (zh) * 2016-10-19 2019-10-25 华为技术有限公司 硬盘数据管理方法和硬盘控制装置
CN106502587A (zh) * 2016-10-19 2017-03-15 华为技术有限公司 磁盘数据管理方法和磁盘控制装置
CN106843748A (zh) * 2016-11-28 2017-06-13 北京握奇智能科技有限公司 一种提高数据写入移动存储设备速度的方法和系统
CN106599247A (zh) * 2016-12-19 2017-04-26 北京奇虎科技有限公司 LSM‑tree结构中数据文件的合并方法及装置
CN106777146A (zh) * 2016-12-19 2017-05-31 北京奇虎科技有限公司 基于LSM‑tree结构的数据处理方法及装置
CN106599247B (zh) * 2016-12-19 2020-04-17 北京奇虎科技有限公司 LSM-tree结构中数据文件的合并方法及装置
CN107066204A (zh) * 2016-12-23 2017-08-18 航天星图科技(北京)有限公司 一种多节点间的数据交换方法
CN108733306A (zh) * 2017-04-14 2018-11-02 华为技术有限公司 一种文件合并方法及装置
CN108733306B (zh) * 2017-04-14 2020-04-21 华为技术有限公司 一种文件合并方法及装置
CN108804019A (zh) * 2017-04-27 2018-11-13 华为技术有限公司 一种数据存储方法及装置
CN106951301A (zh) * 2017-04-27 2017-07-14 腾讯科技(深圳)有限公司 文件预读方法及装置
CN108804019B (zh) * 2017-04-27 2020-07-07 华为技术有限公司 一种数据存储方法及装置
CN106951301B (zh) * 2017-04-27 2018-07-13 腾讯科技(深圳)有限公司 文件预读方法及装置
CN107329694A (zh) * 2017-06-22 2017-11-07 苏州交运电子科技有限公司 数据存储控制方法、控制装置及存储设备
CN107766067A (zh) * 2017-09-28 2018-03-06 福州瑞芯微电子股份有限公司 一种提升压缩镜像烧录速度的方法、存储介质及计算机
CN107766067B (zh) * 2017-09-28 2021-03-02 瑞芯微电子股份有限公司 一种提升压缩镜像烧录速度的方法、存储介质及计算机
CN107632790A (zh) * 2017-09-30 2018-01-26 郑州云海信息技术有限公司 一种分布式存储系统中控制磁盘带宽的方法
WO2019071714A1 (zh) * 2017-10-12 2019-04-18 苏州韦科韬信息技术有限公司 利用混合存储系统提高存储性价比的方法
CN107733709A (zh) * 2017-10-17 2018-02-23 北京奇虎科技有限公司 数据存储方法、装置及电子设备
CN109725841A (zh) * 2017-10-30 2019-05-07 华为技术有限公司 数据写入方法、装置、存储系统、存储介质与控制器
CN108052643A (zh) * 2017-12-22 2018-05-18 北京奇虎科技有限公司 基于LSM Tree结构的数据存储方法、装置及存储引擎
CN108052643B (zh) * 2017-12-22 2021-02-23 北京奇虎科技有限公司 基于LSM Tree结构的数据存储方法、装置及存储引擎
CN108804625A (zh) * 2018-05-31 2018-11-13 阿里巴巴集团控股有限公司 一种lsm树的优化方法、装置及计算机设备
CN108804625B (zh) * 2018-05-31 2020-05-12 阿里巴巴集团控股有限公司 一种lsm树的优化方法、装置及计算机设备
CN109376100A (zh) * 2018-11-05 2019-02-22 浪潮电子信息产业股份有限公司 一种缓存写入方法、装置、设备及可读存储介质
CN109558457B (zh) * 2018-12-11 2022-04-22 浪潮(北京)电子信息产业有限公司 一种数据写入方法、装置、设备及存储介质
CN109558457A (zh) * 2018-12-11 2019-04-02 浪潮(北京)电子信息产业有限公司 一种数据写入方法、装置、设备及存储介质
CN109918381A (zh) * 2019-03-13 2019-06-21 北京百度网讯科技有限公司 用于存储数据的方法和装置
CN109918381B (zh) * 2019-03-13 2021-06-11 北京百度网讯科技有限公司 用于存储数据的方法和装置
CN110188108A (zh) * 2019-06-10 2019-08-30 北京平凯星辰科技发展有限公司 数据存储方法、装置、系统、计算机设备及存储介质
CN110188108B (zh) * 2019-06-10 2021-03-02 北京平凯星辰科技发展有限公司 数据存储方法、装置、系统、计算机设备及存储介质
CN110333828A (zh) * 2019-07-12 2019-10-15 四川虹美智能科技有限公司 Eeprom数据存储方法、控制器以及系统
CN110502457A (zh) * 2019-08-23 2019-11-26 北京浪潮数据技术有限公司 一种元数据存储方法及装置
CN110502457B (zh) * 2019-08-23 2022-02-18 北京浪潮数据技术有限公司 一种元数据存储方法及装置
CN111241096A (zh) * 2020-01-07 2020-06-05 中孚安全技术有限公司 一种excel文档的文本提取方法、系统、终端及存储介质
CN111897493A (zh) * 2020-07-15 2020-11-06 杭州海康威视系统技术有限公司 存储空间管理方法、装置及电子设备、存储介质
CN111897493B (zh) * 2020-07-15 2023-03-10 杭州海康威视系统技术有限公司 存储空间管理方法、装置及电子设备、存储介质
CN112000698A (zh) * 2020-08-25 2020-11-27 青岛海尔科技有限公司 日志的记录方法及装置、存储介质、电子装置
CN112000698B (zh) * 2020-08-25 2023-09-19 青岛海尔科技有限公司 日志的记录方法及装置、存储介质、电子装置
CN112540984A (zh) * 2020-11-23 2021-03-23 成都佳华物链云科技有限公司 数据存储方法、查询方法、装置、电子设备及存储介质
CN112540984B (zh) * 2020-11-23 2023-10-03 成都佳华物链云科技有限公司 数据存储方法、查询方法、装置、电子设备及存储介质
CN112817544A (zh) * 2021-03-05 2021-05-18 北京星网锐捷网络技术有限公司 一种数据处理方法、存储系统及存储设备
CN113590035A (zh) * 2021-07-21 2021-11-02 湖南兴天电子科技有限公司 一种非标准sata接口的驱动方法和系统

Also Published As

Publication number Publication date
CN105224237B (zh) 2018-06-19

Similar Documents

Publication Publication Date Title
CN105224237A (zh) 一种数据存储方法及装置
US8108446B1 (en) Methods and systems for managing deduplicated data using unilateral referencing
JP6343438B2 (ja) コンピュータシステム及びコンピュータシステムのデータ管理方法
US7636736B1 (en) Method and apparatus for creating and using a policy-based access/change log
CN109710572B (zh) 一种基于HBase的文件分片方法
CN105095287A (zh) Lsm数据合并排序方法和装置
CN104021161A (zh) 一种聚簇存储方法及装置
CN111324303B (zh) Ssd垃圾回收方法、装置、计算机设备及存储介质
CN102866954B (zh) 内存分配的方法及装置
WO2018171296A1 (zh) 一种文件合并方法及控制器
US10970254B2 (en) Utilization of tail portions of a fixed size block in a deduplication environment by deduplication chunk virtualization
CN103678405A (zh) 邮件索引建立方法及系统、邮件搜索方法及系统
CN108733324B (zh) 一种固态硬盘的数据读写方法、装置、设备及存储介质
CN108733306A (zh) 一种文件合并方法及装置
CN103914483A (zh) 文件存储方法、装置及文件读取方法、装置
CN103955433A (zh) 盖瓦磁记录硬盘、盖瓦磁记录硬盘写数据的方法及装置
CN104731886A (zh) 一种海量小文件的处理方法及系统
CN105243027A (zh) 在存储设备中存储数据的方法和存储控制器
CN103034592A (zh) 数据处理方法和装置
CN111209257B (zh) 一种文件系统碎片化的方法及装置
CN103049508A (zh) 一种数据处理方法及装置
CN103473185A (zh) 缓存写入的方法、缓存装置和存储系统
CN102331920B (zh) 一种数据处理方法及装置
CN103064957A (zh) 实现acl的方法及客户端
WO2023277819A3 (zh) 数据处理方法、系统、设备、计算机程序产品及存储功能

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant