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

文档序号:9471078阅读:来源:国知局
程图;
[0064]图2为本发明的数据存储方法实施例2的流程图;
[0065]图3为本发明的数据存储方法实施例3的流程图;
[0066]图4为本发明的数据存储方法实施例4的流程图;
[0067]图5为本发明的数据存储方法实施例5的流程图;
[0068]图6为本申请的数据存储装置实施例的结构图;
[0069]图7为本申请的计算节点的结构图。
【具体实施方式】
[0070]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0071]为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本申请作进一步详细的说明。
[0072]图1为本发明的数据存储方法实施例1的流程图。如图1所示,该方法可以包括:
[0073]步骤101:从内存中获取需要存储至固态硬盘中的数据;
[0074]所述数据可以是电子设备在运行某些程序时在内存中生成的数据。例如,可以是电子设备在运行excel程序进行表格编辑时,用户在表格中录入的数据;或者,可以是电子设备在运行word程序进行文档编辑时,用户在文档中录入的文本数据。当然,也可以是电子设备运行其它程序时在内存中生成的,或者读取到内存中的数据。
[0075]步骤102:将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
[0076]日志结构合并树(Log Structure Merging Tree, LSM-tree),是一种数据存储结构,具有较高的数据存储效率,同时也不会显著降低数据的读取效率。
[0077]步骤103:对所述磁性硬盘中缓存的数据执行合并操作;
[0078]采用日志结构合并树对数据进行存储时,可以对存储的数据进行合并。即当缓存有多个键名相同的数据后,可以根据各个数据的版本号,保留最新的版本号对应的数据,而删除另外的版本号对应的数据。
[0079]本实施例中,LSM-tree形式的数据是存储在磁性硬盘中的,数据的合并过程也主要是在磁性硬盘中进行的。
[0080]LSM-tree形式的数据可以存储在多个数据集合中。不同的数据集合可以对应不同的数据迁移优先级。通常,各个数据集合可以表示为C0,C1,C2,C3,依此类推。数据迁移优先级较高的数据集合的数据个数上限,大于数据迁移优先级较低的数据集合的数据个数上限。例如,CO中的数据个数小于Cl中的数据个数,Cl中的数据个数小于C2中的数据个数,C2中的数据个数小于C3中的数据个数……CO中的数据可以存储在内存中,Cl,C2,C3中的数据可以存储在磁性硬盘中。
[0081]当某个数据集合中存储的数据个数达到该数据集合的上限时,可以向该数据集合的下一级(即数据迁移优先级大于该数据集合的)数据集合进行数据转移。例如,当CO中的数据达到存储上限后,可以转移到Cl中存储;当Cl中的数据达到存储上限后,可以转移到C2中存储,依此类推。并且,在数据转移的过程中,还可以对数据进行排序。以C3中具有1000个数据为例,这1000个数据可以按照数据的键名的顺序进行排列。由于对数据进行了排序,因此将这些数据存储在固态硬盘中以后,可以提高从固态硬盘中读取这些数据的速度。
[0082]步骤104:当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据存储至所述固态硬盘中。
[0083]具体的,可以先将合并后的数据写入所述内存;
[0084]再将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
[0085]综上所述,本实施例中,通过将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;对所述磁性硬盘中缓存的数据执行合并操作;将合并后的数据存储至所述固态硬盘中;可以采用磁性硬盘承载小粒度数据的更新过程,并且,由于对所述磁性硬盘中缓存的数据执行了合并操作,当某个键名的数据先后生成了多个不同版本的数据时,最终可以在磁性硬盘中合并成一个版本的数据,从而使得原本对于固态硬盘的多次写入过程,可以简化为一次写入过程,解决了对小粒度数据进行更新时产生的写放大问题,可以延长SSD的使用寿命。
[0086]图2为本发明的数据存储方法实施例2的流程图。如图2所示,该方法可以包括:
[0087]步骤201:从内存中获取需要存储至固态硬盘中的数据;
[0088]步骤202:将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
[0089]步骤203:确定所述磁性硬盘中缓存的数据的键名以及版本号;
[0090]本实施例中,数据可以以键值(Key-Value)的方式存储在磁性硬盘中。一个最小单位的数据可以具有键名和版本号。其中,键名用于表示该数据的名称,版本号可以直接或间接的表示该数据的生成时间。
[0091]步骤204:在具有相同键名的数据中,确定最新生成的数据对应的最新版本号;
[0092]当同一个数据被多次编辑或修改,就会生成多个不同版本的并且键名相同的数据。
[0093]步骤205:保留所述最新版本号对应的数据;
[0094]通常,最新版本号对应的数据的生成时间也是最新的,而最新生成的数据内容往往才是最需要保存的,所以,可以保留所述最新版本号对应的数据。
[0095]步骤206:删除另外的版本号对应的数据;
[0096]步骤207:当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据写入所述内存;
[0097]所述预设容量可以根据实际需求进行设置,当将合并后的数据以排序的字符串表阵列为单位存储至所述固态硬盘中时,所述预设容量可以是2MB。
[0098]步骤208:将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
[0099]本实施例中,通过在具有相同键名的数据中,确定最新生成的数据对应的最新版本号;保留所述最新版本号对应的数据;删除另外的版本号对应的数据;可以确保合并后的数据的版本是最新的,即在合并过程中可以保留有用的数据,删除无用的数据。
[0100]图3为本发明的数据存储方法实施例3的流程图。如图3所示,该方法可以包括:
[0101]步骤301:从内存中获取需要存储至固态硬盘中的数据;
[0102]步骤302:将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
[0103]步骤303:对所述磁性硬盘中缓存的数据执行合并操作;
[0104]步骤304:当所述磁性硬盘中缓存的数据容量达到预设容量时,判断所述内存中是否已经存有所述合并后的数据;如果是,执行步骤305 ;否则,执行步骤306 ;
[0105]电子设备在运行其他程序时,可能会预先将合并后的数据读取到内存中。对于预先读取到内存中的数据,就不必再执行将合并后的数据写入所述内存这一步骤,而可以直接将内存中存有的所述合并后的数据存储至所述固态硬盘中。
[0106]步骤305:直接将所述内存中存有的所述合并后的数据存储至所述固态硬盘中;
[0107]步骤306:将合并后的数据写入所述内存;
[0108]步骤307:将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
[0109]本实施例中,通过判断所述内存中是否已经存有所述合并后的数据;当所述内存中已经存有所述合并后的数据时,可以直接将所述内存中存有的所述合并后的数据存储至所述固态硬盘中,而不必再执行将合并后的数据写入所述内存这一步骤,可以提高数据存储效率。
[0110]图4为本发明的数据存储方法实施例4的流程图。如图4所示,该方法可以包括:
[0111]步骤401:从内存中获取需要存储至固态硬盘中的数据;
[0112]步骤402:将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
[0113]步骤403:对所述磁性硬盘中缓存的数据执行合并操作;
[0114]步骤404:当所述磁性硬盘中缓存的数据容量达到预设容量时,判断所述磁性硬盘的空闲带宽是否大于预设阈值;如果是,执行步骤405 ;否则,执行步骤406 ;
[0115]磁性硬盘的可用于数据读或写的带宽是有限的,当磁性硬盘的空闲带宽(即尚未被使用的带宽)大于预设阈值时,即磁性硬盘的空闲带宽较大,此时,可以执行将磁性硬盘中缓存的数据存储至固态硬盘中的
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1