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

文档序号:9471078阅读:来源:国知局
步骤;当磁性硬盘的空闲带宽小于预设阈值时,即磁性硬盘的空闲带宽较小,此时,可以继续执行将所述数据以日志结构合并树的数据结构缓存至磁性硬盘的步骤,等待磁性硬盘的空闲带宽较大时,再将磁性硬盘中缓存的数据迁移至固态硬盘中。
[0116]步骤405:将合并后的数据以排序的字符串表为单位存储至所述固态硬盘中;
[0117]前面提到,在对数据进行合并的过程中,可以对数据进行排序,排序后可以得到排序的字符串表(String Sorted Table, SST)。以排序的字符串表为单位将合并后的数据存储至所述固态硬盘中,可以提高从固态硬盘中读取数据的速度。
[0118]步骤406:继续执行将所述数据以日志结构合并树的数据结构缓存至磁性硬盘的步骤。
[0119]本实施例中,通过判断所述磁性硬盘的空闲带宽是否大于预设阈值,当空闲带宽大于预设阈值时,将合并后的数据写入固态硬盘,当空闲带宽小于预设阈值时,继续将数据缓存至磁性硬盘中,以便磁性硬盘的空闲带宽较大(例如大于预设阈值)时,再将合并后的数据写入固态硬盘,可以进一步提高将数据存储至固态硬盘的效率。
[0120]图5为本发明的数据存储方法实施例5的流程图。如图5所示,该方法可以包括:
[0121]步骤501:从内存中获取需要存储至固态硬盘中的数据;
[0122]步骤502:将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
[0123]步骤503:对所述磁性硬盘中缓存的数据执行合并操作;
[0124]步骤504:当所述磁性硬盘中缓存的数据容量达到预设容量时,在所述合并后的数据中,确定更新频率小于预设频率的数据;
[0125]当用户使用电子设备对某些类型的文件进行编辑时,某些数据可能会被频繁的更改,进而会产生多个键名相同但版本不同的数据。这些数据由于经常发生更新,如果写入固态硬盘后,在短时间内再次发生更新,则会导致对固态硬盘进行多次写操作,所以不适合写入固态硬盘。
[0126]本步骤中,可以根据数据的版本等信息,在所述合并后的数据中,确定更新频率小于预设频率的数据。将更新频率较低的数据存储至固态硬盘中,从而进一步减少对固态硬盘的写操作。
[0127]步骤505:将所述更新频率小于预设频率的数据存储至所述固态硬盘中。
[0128]本实施例中,通过在所述合并后的数据中,确定更新频率小于预设频率的数据。将更新频率较低的数据存储至固态硬盘中,从而进一步减少对固态硬盘的写操作。
[0129]需要说明的是,本申请各个实施例中,所述合并后的数据以多路搜索树(B-tree)的数据结构存储在所述固态硬盘中。采用多路搜索树的数据结构,可以提高从固态硬盘中读取数据的速度。
[0130]本申请各个实施例中,所述日志结构合并树的索引可以持久存储于所述磁性硬盘中。
[0131]本申请还提供了一种数据存储装置。所述数据存储装置可以是同时具有磁性硬盘和固态硬盘的电子设备。
[0132]图6为本申请的数据存储装置实施例的结构图。如图6所示,该装置可以包括:
[0133]数据获取单元601,用于从内存中获取需要存储至固态硬盘中的数据;
[0134]所述数据可以是电子设备在运行某些程序时在内存中生成的数据。例如,可以是电子设备在运行excel程序进行表格编辑时,用户在表格中录入的数据;或者,可以是电子设备在运行word程序进行文档编辑时,用户在文档中录入的文本数据。当然,也可以是电子设备运行其它程序时在内存中生成的,或者读取到内存中的数据。
[0135]缓存单元602,用于将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;
[0136]日志结构合并树(Log Structure Merging Tree, LSM-tree),是一种数据存储结构,具有较高的数据存储效率,同时也不会显著降低数据的读取效率。
[0137]合并单元603,用于对所述磁性硬盘中缓存的数据执行合并操作;
[0138]采用日志结构合并树对数据进行存储时,可以对存储的数据进行合并。即当缓存有多个键名相同的数据后,可以根据各个数据的版本号,保留最新的版本号对应的数据,而删除另外的版本号对应的数据。
[0139]本实施例中,LSM-tree形式的数据是存储在磁性硬盘中的,数据的合并过程也主要是在磁性硬盘中进行的。
[0140]LSM-tree形式的数据可以存储在多个数据集合中。不同的数据集合可以对应不同的数据迁移优先级。通常,各个数据集合可以表示为C0,C1,C2,C3,依此类推。数据迁移优先级较高的数据集合的数据个数上限,大于数据迁移优先级较低的数据集合的数据个数上限。例如,CO中的数据个数小于Cl中的数据个数,Cl中的数据个数小于C2中的数据个数,C2中的数据个数小于C3中的数据个数……CO中的数据可以存储在内存中,Cl,C2,C3中的数据可以存储在磁性硬盘中。
[0141]当某个数据集合中存储的数据个数达到该数据集合的上限时,可以向该数据集合的下一级(即数据迁移优先级大于该数据集合的)数据集合进行数据转移。例如,当CO中的数据达到存储上限后,可以转移到Cl中存储;当Cl中的数据达到存储上限后,可以转移到C2中存储,依此类推。并且,在数据转移的过程中,还可以对数据进行排序。以C3中具有1000个数据为例,这1000个数据可以按照数据的键名的顺序进行排列。由于对数据进行了排序,因此将这些数据存储在固态硬盘中以后,可以提高从固态硬盘中读取这些数据的速度。
[0142]存储迁移单元604,用于当所述磁性硬盘中缓存的数据容量达到预设容量时,将合并后的数据存储至所述固态硬盘中。
[0143]具体的,可以先将合并后的数据写入所述内存;
[0144]再将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
[0145]综上所述,本实施例中,通过将所述数据以日志结构合并树的数据结构缓存至磁性硬盘中;对所述磁性硬盘中缓存的数据执行合并操作;将合并后的数据存储至所述固态硬盘中;可以采用磁性硬盘承载小粒度数据的更新过程,并且,由于对所述磁性硬盘中缓存的数据执行了合并操作,当某个键名的数据先后生成了多个不同版本的数据时,最终可以在磁性硬盘中合并成一个版本的数据,从而使得原本对于固态硬盘的多次写入过程,可以简化为一次写入过程,可以延长SSD的使用寿命。
[0146]实际应用中,所述合并单元603,具体可以用于:
[0147]确定所述磁性硬盘中缓存的数据的键名以及版本号;
[0148]在具有相同键名的数据中,确定最新生成的数据对应的最新版本号;
[0149]保留所述最新版本号对应的数据;
[0150]删除另外的版本号对应的数据。
[0151]实际应用中,所述存储迁移单元604,具体可以用于:
[0152]将合并后的数据写入所述内存;
[0153]将写入所述内存中的所述合并后的数据存储至所述固态硬盘中。
[0154]实际应用中,该装置还可以包括:
[0155]第一判断单元,用于在将合并后的数据写入所述内存之前,判断所述内存中是否已经存有所述合并后的数据;
[0156]所述存储迁移单元604,可以用于当所述第一判断单元的判断结果为是时,直接将所述内存中存有的所述合并后的数据存储至所述固态硬盘中;
[0157]当所述第一判断单元的判断结果为是时,执行将合并后的数据写入所述内存的步骤。
[0158]实际应用中,该装置还可以包括:
[0159]第二判断单元,用于在将合并后的数据存储至所述固态硬盘中之前,判断所述磁性硬盘的空闲带宽是否大于预设阈值;
[0160]所述存储迁移单元604,可以用于当所述第二判断单元的判断结果为是时,则将合并后的数据以排序的字符串表为单位存储至所述固态硬盘中;
[0161]当所述第二判断单元的判断结果为否时,继续执行将所述数据以日志结构合并树的数据结构缓存至磁性硬盘的步骤。
[0162]实际应用中,该装置还可以包括:
[0163]数据确定单元,用于在将合并后的数据存储至所述固态硬盘中之前,在所述合并后的数据中,确定更新频率小于预设频率的数据;
[0164]所述存储迁移单元604,具体可以用于:
[0165]将所述更新频率小于预设频率的数据存储至所述固态硬盘中。
[0166]实际应用中,所述合并后的数据以多路搜索树的数据结构存储在所述固态硬盘中。所述日志结构合并树的索引持久存
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1