数据处理方法、装置、电子设备及存储介质

文档序号:1860762 发布日期:2021-11-19 浏览:3次 >En<

阅读说明:本技术 数据处理方法、装置、电子设备及存储介质 (Data processing method and device, electronic equipment and storage medium ) 是由 吴本卿 于 2021-07-08 设计创作,主要内容包括:本申请实施例提供一种数据处理方法、装置、电子设备及存储介质。其中,该方法包括:确定固态硬盘中的待回收存储单元;针对所述待回收存储单元中任一数据对象,检测第一内存缓存区中是否已存储所述数据对象的热度信息;若所述第一内存缓存区中已存储所述数据对象的热度信息,则将所述数据对象的数据迁移至第二内存缓存区;若所述第一内存缓存区中未存储所述数据对象的热度信息,则将所述数据对象的数据进行清除;在所述第二内存缓存区满足预设触发条件时,将所述第二内存缓存区中的数据存储至所述固态硬盘的空闲存储单元。本申请实施例提供的技术方案能够保证固态硬盘具有较高的缓存命中率。(The embodiment of the application provides a data processing method and device, electronic equipment and a storage medium. Wherein, the method comprises the following steps: determining a storage unit to be recovered in the solid state disk; detecting whether the heat information of the data object is stored in a first memory cache region or not aiming at any data object in the storage unit to be recovered; if the heat information of the data object is stored in the first memory cache region, migrating the data of the data object to a second memory cache region; if the heat information of the data object is not stored in the first memory cache region, clearing the data of the data object; and when the second memory cache region meets a preset trigger condition, storing the data in the second memory cache region to an idle storage unit of the solid state disk. The technical scheme provided by the embodiment of the application can ensure that the solid state disk has higher cache hit rate.)

数据处理方法、装置、电子设备及存储介质

技术领域

本申请实施例涉及数据处理技术领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。

背景技术

目前,普遍采用固态硬盘(Solid State Drive,SSD)进行数据缓存,固态硬盘是用固态电子存储芯片阵列制成的硬盘,具有读写速度快、低功耗、工作温度范围大等优势。为便于管理固态硬盘,往往将固态硬盘分为多个存储单元,每个存储单元都用于存储数据。在固态硬盘的可用存储空间不多时,则会进行存储单元回收工作,也即清空存储单元中的存储数据,清空后的存储单元可以再次用于存储数据。

现有技术中,在回收存储单元时,往往将存储单元上的全部数据清空。然而,这种方式很容易造成诸如频繁访问或最近访问的热数据从固态硬盘中删除,若后续有针对热数据的访问请求时,由于该热数据从固态硬盘中删除,造成无法从固态硬盘获取热数据,进而使得固态硬盘的缓存命中率较低。

发明内容

本申请实施例提供一种数据处理方法、装置、电子设备及存储介质,用以解决现有技术中固态硬盘的缓存命中率较低的问题。

第一方面,本申请实施例中提供了一种数据处理方法,包括:

确定固态硬盘中的待回收存储单元;

针对所述待回收存储单元中任一数据对象,检测第一内存缓存区中是否已存储所述数据对象的热度信息;

若所述第一内存缓存区中已存储所述数据对象的热度信息,则将所述数据对象的数据迁移至第二内存缓存区;

若所述第一内存缓存区中未存储所述数据对象的热度信息,则将所述数据对象的数据进行清除;

在所述第二内存缓存区满足预设触发条件时,将所述第二内存缓存区中的数据存储至所述固态硬盘的空闲存储单元。

第二方面,本申请实施例提供了一种数据处理装置,包括:

确定模块,用于确定固态硬盘中的待回收存储单元;

处理模块,用于针对所述待回收存储单元中任一数据对象,检测第一内存缓存区中是否已存储所述数据对象的热度信息;若所述第一内存缓存区中已存储所述数据对象的热度信息,则将所述数据对象的数据迁移至第二内存缓存区;若所述第一内存缓存区中未存储所述数据对象的热度信息,则将所述数据对象的数据进行清除;在所述第二内存缓存区满足预设触发条件时,将所述第二内存缓存区中的数据存储至所述固态硬盘的空闲存储单元。

第三方面,本申请实施例提供了一种电子设备,包括处理组件以及存储组件;

所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,实现上述数据处理方法。

第四方面,本申请实施例提供了一种计算机存储介质,存储有计算机程序,所述计算程序被计算机执行时,实现上述数据处理方法。

本申请实施例中,在回收固态硬盘的待回收存储单元中的任一数据对象时,利用第一内存缓存区中保存的热度信息识别该数据对象的数据是需要迁移还是需要清除,进而有针对性地进行数据迁移操作,使得固态硬盘中的热数据不被清除,最终能够被保留到固态硬盘中,保证固态硬盘具有较高的缓存命中率。另外,有针对性地进行数据清除操作,使得固态硬盘中需要清除的数据被清除,以提高固态硬盘的利用率。

本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本申请提供的数据处理方法一个实施例的流程图;

图2示出了本申请在一个实际应用中固态硬盘的结构示意图;

图3示出了本申请在一个实际应用中虚拟缓存队列的结构示意图;

图4示出了本申请提供的数据处理方法另一个实施例的流程图;

图5示出了本申请提供的数据处理装置一个实施例的结构示意图;

图6示出了本申请提供的电子设备一个实施例的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1示出了本申请提供的数据处理方法一个实施例的流程图。参见图1,该数据处理方法可以包括以下步骤:

101:确定固态硬盘中的待回收存储单元。

在本申请实施例中,在初始化固态硬盘时,可以将固态硬盘可以划分为多个空闲存储单元。其中,一个空闲存储单元可以是一个块(block),一个空闲存储单元也可以是一个chunk,当然,本实施例对空闲存储单元的具体形态不做限制。另外,chunk可以认为是较大的块,chunk的数据单位为MB(兆比特)。

目前,大部分的固态硬盘采用nand flash作为闪存颗粒。固态硬盘内部由多块flash组成,每块flash进一步细分为block(块),block是固态硬盘内部的组织单元,而block又进一步细分为page(页),page是固态硬盘的最小读写单元。固态硬盘作为缓存时,较为普遍是将固态硬盘的逻辑地址空间划分为较大的块来管理,也即按照chunk进行管理。

另外,固态硬盘的写放大系数直接影响固态硬盘的使用寿命。固态硬盘的写放大系数=闪存写入的数据量/主机写入的数据量。根据nand flash的原理,闪存写入的数据量是有限的,要尽量减少主机写入的数据量,才能降低固态硬盘的写放大系数,提升使用寿命。

以图2所示的固态硬盘为例,该固态硬盘包括4个chunk,每个chunk中都可储存多个数据。例如,chunk1中存储的数据包括object1、object2、object3、object4。当然,图2中仅以固态硬盘包括4个chunk进行说明,并不表示固态硬盘只包括4个chunk,也并不表示固态硬盘的存储单元仅仅是chunk。

在本申请实施例中,固态硬盘中任一非空闲存储单元均有概率被选中作为待回收存储单元。其中,非空闲存储单元可以理解为已存储数据的存储单元,与非空闲存储单元相对的是空闲存储单元,空闲存储单元中尚未存储数据。

在本申请实施例中,执行回收固态硬盘中非空闲存储单元的操作,可以使非空闲存储单元重新成为一个空闲存储单元,进而使得固态硬盘可以继续缓存数据,提高固态硬盘的利用率。

实际应用中,可以周期性触发执行回收固态硬盘中非空闲存储单元的操作,当然,也可以在满足根据实际业务需求设置的触发条件时,触发执行回收固态硬盘中非空闲存储单元的操作,本实施例对此不做限制。

102:针对待回收存储单元中任一数据对象,检测第一内存缓存区中是否已存储数据对象的热度信息。

103:若第一内存缓存区中已存储数据对象的热度信息,则将数据对象的数据迁移至第二内存缓存区。

104:若第一内存缓存区中未存储所述数据对象的热度信息,则将数据对象的数据进行清除。

实际应用中,任一业务场景的各个业务数据的访问特征不同,造成有的业务数据为该业务场景的热数据,而有的业务数据为该业务场景的冷数据。可以理解的是,热数据的访问热度高于冷数据的访问热度。例如,某个业务场景的业务数据的数据量为100G,100G业务数据中大概有10G左右的热数据,100G业务数据中剩余的业务数据为冷数据。在本申请实施例中,为了保证固态硬盘具有较高的缓存命中率,可以预先在内存中申请任一内存缓存区作为第一内存缓存区,该第一内存缓存区主要用于存储任一业务场景的热数据的热度信息。其中,热度信息用于指示数据对象的访问特征,访问特征例如最近访问次数或者最近访问时间距离当前时间的时长信息等。

应理解,针对任一业务场景的任一数据对象,若该数据对象的最近访问次数较多或者最近访问时间距离当前时间较短,则该数据对象为热数据的概率越大,相应地,该数据对象的热度信息有较大概率被存储至第一内存缓存区中。

应理解,若数据对象的热度信息存储至第一内存缓存区中,说明该数据对象的数据为热数据,反之,若数据对象的热度信息未存储至第一内存缓存区中,说明该数据对象的数据不是热数据。在本申请实施例中,在执行回收固态硬盘中非空闲存储单元的操作时,针对待回收存储单元的任一数据对象,通过检测第一内存缓存区是否存在该数据对象的热度信息,以确定该数据对象的数据是需要迁移的数据还是需要清除的数据,进而可以有针对性地进行数据迁移操作,使得固态硬盘中的热数据不被清除,最终能够被保留到固态硬盘中,保证固态硬盘具有较高的缓存命中率,以及有针对性地进行数据清除操作,使得固态硬盘中需要清除的数据被清除,以提高固态硬盘的利用率。

在本申请实施例中,预先在内存中申请一个缓存区域作为第二内存缓存区。该第二内存缓存区不同于第一内存缓存区,第二内存缓存区主要用于存储从机械硬盘读取的数据或者从固态硬盘迁移过来的数据。

可以理解的是,待回收存储单元中需要迁移的数据从待回收存储单元迁移至第二内存缓存区,后续第二内存缓存区中的数据还能够再迁移至固态硬盘中。

可以理解的是,待回收存储单元中需要清除的数据从固态硬盘中直接清除。

可以理解的是,待回收存储单元在执行完数据迁移操作和数据清除操作之后,待回收存储单元从一个非空闲存储单元转变为空闲存储单元。

需要指出的是,步骤103和步骤104的执行先后顺序,本申请实施例对此不做限制。

105:在第二内存缓存区满足预设触发条件时,将第二内存缓存区中的数据存储至固态硬盘的空闲存储单元。

在本申请实施例中,从机械硬盘读取的数据可以写入第二内存缓存区中,以及固态硬盘中的数据也可以迁移至第二内存缓存区中。因此,随着时间推移,第二内存缓存区中存储的数据越来越多。在第二内存缓存区满足预设触发条件,这时,将第二内存缓存区中的数据存储至固态硬盘的一个空闲存储单元。

可以理解的是,从固态硬盘中待回收存储单元迁移至第二内存缓存区的数据只是暂时消失于固态硬盘中,后续在第二内存缓存区满足预设触发条件时,从固态硬盘迁出去的数据还能迁回至固态硬盘,由此,保证热数据最终能够被保留到固态硬盘中,保证固态硬盘具有较高的缓存命中率。

需要指出的是,预设触发条件根据具体业务需求设置,例如,预设触发条件以下条件中的一种或多种:第二内存缓存区的当前存储容量小于预设剩余存储容量,或者,第二内存缓存区的当前存储容量小于待写入数据所需的存储容量。其中,预设剩余存储容量根据实际业务需求进行设置。

需要指的是,第二内存缓存区用于待缓存数据的聚合写入,相比直接将待缓存数据写入固态硬盘,借助第二内存缓存区,可以一次性将较多的待缓存数据一次性写入固态硬盘,进而减少了固态硬盘的写放大系数,提升固态硬盘的使用寿命。

沿用图2所示的固态硬盘,在执行回收对chunk1回收时,object2为待迁移的数据对象,object2先迁移至第二内存缓存区,再从第二内存缓存区迁回至固态硬盘中新的chunk4,其他object1、object3、object4为需要清除的数据对象。依次类推,在执行回收对chunk2回收时,object8为待迁移的数据对象,object8先迁移至第二内存缓存区,再从第二内存缓存区迁回至固态硬盘中新的chunk4,其他object5、object7为需要清除的数据对象。在执行回收对chunk3回收时,object12为待迁移的数据对象,object12先迁移至第二内存缓存区,再从第二内存缓存区迁回至固态硬盘中新的chunk4,其他object9、object10、object11为需要清除的数据对象。最后,在完成回收流程之后,固态硬盘中chunk1、chunk2、chunk3重新转变成为新的空闲存储单元,chunk4中保留object2、object8以及object12等数据对象。

本申请实施例提供的数据处理方法,在回收固态硬盘的待回收存储单元中的任一数据对象时,利用第一内存缓存区中保存的热度信息识别该数据对象的数据是需要迁移还是需要清除,进而有针对性地进行数据迁移操作,使得固态硬盘中的热数据不被清除,最终能够被保留到固态硬盘中,保证固态硬盘具有较高的缓存命中率。另外,有针对性地进行数据清除操作,使得固态硬盘中需要清除的数据被清除,以提高固态硬盘的利用率。

实际应用中,任一业务场景,有的业务数据可能存储在第二内存缓存区中,有的业务数据可能存储在固态硬盘中。因此,在一些实施例中,为了准确确定任一业务场景的热数据,可以统计第二内存缓存区以及固态硬盘中的数据对象的访问特征;根据统计结果,确定访问特征满足预设访问条件的数据对象及其热度信息;在第一内存缓存区中以队列形式存储所述满足预设访问条件的数据对象的热度信息。

需要指出的是,预设访问条件与识别热数据的算法有关。例如,若识别热数据的算法为LRU(Least Recently Used,最近最不经常使用)算法,则预设访问条件为最近访问时间离当前时间最短。也即最近访问时间离当前时间最短的业务数据为热数据,而最近访问时间离当前时间最长的业务数据为需要淘汰的冷数据。又例如,若识别热数据的算法为LFU(Least Frequently Used,最近最少使用)算法,则预设访问条件为最近访问次数最多,也即最近访问次数最多为热数据,而最近访问次数最少为需要淘汰的冷数据。

需要指出的是,识别任一业务场景的热数据所采用的算法并不限于上述举例说明的LRU算法以及LFU算法,还可以是其他任意的缓存淘汰算法。当然,关于缓存淘汰算法更多介绍详见相关技术。

在一些实施例中,在第一内存缓存区中以队列形式存储满足预设访问条件的数据对象的热度信息之前,上述方法还可以包括:根据预设的缓存命中率和/或满足预设访问条件的数据对象的数据量设置队列的队列长度。

为了便于理解,将第一内存缓存区中存储热度信息的队列称作虚拟缓存队列。该虚拟缓存队列的队列长度决定虚拟缓存队列可存储的数据量。可以理解的是,虚拟缓存队列的队列长度越长,虚拟缓存队列中存储的热度信息越多,缓存命中率越高;虚拟缓存队列的队列长度越短,虚拟缓存队列中存储的热度信息越少,缓存命中率越低。

在一些实施例中,队列中队头中数据的出列时间晚于队尾中数据的出列时间;相应的,在第一内存缓存区中以队列形式存储所述满足预设访问条件的数据对象的热度信息之后,上述方法还可以包括:若检测到满足预设访问条件的数据对象当前被访问,则将满足预设访问条件的数据对象的热度信息在队列中的位置调整至所述队列的队头。

需要指出的是,若队列中队头中数据的出列时间晚于队尾中数据的出列时间,该队列可以视为先入后出的队列。先入后出的队列的特点是从队尾入列和出列。

可以理解的是,越靠近虚拟缓存队列的队头的热度数据,该热度数据对应的数据对象的最近访问次数较多,或者,该热度数据对应的数据对象的最近访问时间离当前时间较短,当然,该热度数据越晚被从虚拟缓存队列中淘汰,也即该热度数据在虚拟缓存队列中保留时间较长。反之,越靠近虚拟缓存队列的队尾的热度数据,该热度数据对应的数据对象的最近访问次数较少,或者,该热度数据对应的数据对象的最近访问时间离当前时间较长,当然,该热度数据越早从虚拟缓存队列中淘汰,也即该热度数据在虚拟缓存队列中保留时间较短。

图3示出了本申请在一个实际应用中虚拟缓存队列的结构示意图。靠近图3所示虚拟缓存队列的靠近队头的数据对象objecty的最近访问次数大于靠近队尾的数据objectx的最近访问次数,或者,靠近图3所示虚拟缓存队列的靠近队头的数据对象objecty的最近访问时间离当前时间的时长短于靠近队尾的数据objectx的最近访问时间离当前时间的时长。图3所示虚拟缓存队列的队列长度可以根据具体的业务场景进行设置,虚拟缓存队列中保留了满足预设访问条件的数据对象的热度信息,使得在回收待回收存储单元时,通过判断待回收存储单元的数据对象的热度信息是否存在于虚拟缓存队列,决策待回收存储单元的数据对象的数据是否进行迁移,以减少固态硬盘的写入数据量。

实际应用中,进入到虚拟缓存队列中的热度信息会随着时间推移,会被慢慢从虚拟缓存队列中淘汰。当然,随着时间推移,从虚拟缓存队列中淘汰的热度信息,由于对应数据对象被重新访问致使其重新成为热数据,这时,其热度信息又回到虚拟缓存队列。因此,需要基于数据对象的访问特征及时调整该虚拟缓存队列中的热度信息,可以有效管理虚拟缓存队列,确保任一业务场景当前最新的热数据的热度信息存储至虚拟缓存队列。

需要指出的是,数据对象的热度信息从虚拟缓存队列被淘汰,并不意味着该数据对象的数据从固态硬盘SSD淘汰。当数据对象的热度信息在虚拟缓存队列的位置中发生变化,说明该数据对象的访问特征发生变化。

实际应用中,虚拟缓存队列的存储容量可以小于固态硬盘SSD的存储容量。例如,虚拟缓存队列的存储容量=固态硬盘SSD的存储容量*ratio。其中,ratio的取值范围为(0,1],一般为0.5。

实际应用中,针对待回收存储单元,可能该待回收存储单元中满足预设访问条件的数据对象较多,也即待回收存储单元中热数据较多。若回收该待回收存储单元,造成需要迁移至第二内存缓存区的数据较多,当然,后续从第二内存缓存区迁回至固态硬盘的数据也较多。也就是说,回收待回收存储单元时,若因为数据迁移而产生了额外的较多的数据写入,会极大地增加对固态硬盘的写入数据量,增大了固态硬盘的写放大系数,致使固态硬盘的使用寿命缩短,固态硬盘的性能下降。

因此,在一些实施例中,为了有效控制因回收待回收存储单元所导致的SSD的写入数据量增加,优化固态硬盘的使用寿命,在将数据对象的数据迁移至第二内存缓存区之前,上述方法还可以包括:判断待迁移数据的数据量是否小于预设的第一数量阈值;若是,则执行将数据对象的数据迁移至第二内存缓存区的步骤。具体而言,第一数量阈值根据实际业务需求进行设置。可以理解的是,若待迁移数据的数据量小于预设的第一数量阈值,说明回收待回收存储单元不会导致出现“极大地增加固态硬盘的写入数据量”的情形,这时,执行将数据对象的数据迁移至第二内存缓存区的步骤。反之,若待迁移数据的数据量大于或等于预设的第一数量阈值,说明回收待回收存储单元很可能导致出现“极大地增加固态硬盘的写入数据量”的情形,这时,不再执行将当前确定的待回收存储单元转变为一个空闲存储单元的操作。

当然,在当前确定的待回收存储单元不可进行回收时,还可以重新确定固态硬盘中待回收存储单元,直至重新确定待回收存储单元中待迁移数据的数据量小于预设的第一数量阈值。

需要指出的是,待回收存储单元中的数据对象可能为一个,也可能为多个。待迁移数据的数据量可以理解为待回收存储单元中全部的数据对象的数据量之和。

需要指出的是,针对所述待回收存储单元中任一数据对象,若检测出第一内存缓存区中已存储该数据对象的热度信息,这时,可以对该数据对象打上“可迁移”标记;反之,若检测出第一内存缓存区中未存储该数据对象的热度信息,这时,可以对该数据对象不打上“可迁移”标记,或者可以对该数据对象打上“不可迁移”标记,或者可以对该数据对象打上“可清除”标记。由此,通过统计“可迁移”标记,可以识别待回收存储单元哪些数据为待迁移数据,哪些数据为待清除数据,以及待迁移数据的数据量。

可以理解的是,针对非空闲存储单元,若该待非空闲存储单元中存在热数据,会基于热数据的数据量决定非空闲存储单元是否回收。在热数据的数据量不多时,执行回收非空闲存储单元的操作。在热数据的数据量较多时,重新选择一个新的非空闲存储单元执行回收操作,以跳过对包含大量热数据的非空闲存储单元执行回收操作,进而保证固态硬盘的使用寿命。

在一些实施例中,为了及时有效控制固态硬盘可以提供足够的空闲存储单元,减少固态硬盘的缓存空间的浪费,“确定固态硬盘中的待回收存储单元”的实现方式为:检测固态硬盘中空闲存储单元的数量;若检测到空闲存储单元的数量小于预设的第二数量阈值,则从固态硬盘中至少一个非空闲存储单元中选择待回收存储单元。其中,第二数据阈值根据实际情形设置。

可以理解的是,在固态硬盘中的空闲存储单元的数量小于预设的第二数量阈值时,可以认为固态硬盘中的空闲存储单元不够充足。不够充足的空闲存储单元难以满足数据从固态硬盘的外部存储至固态硬盘的存储需求。

可以理解的是,在固态硬盘中的空闲存储单元的数量大于或等于预设的第二数量阈值时,可以认为固态硬盘中的空闲存储单元充足,容易满足数据从固态硬盘的外部存储至固态硬盘的存储需求。

在一些实施例中,为了准确获知固态硬盘中存在哪些非空闲存储单元,可以维护一个第一列表,在该第一列表中记录非空闲存储单元的标识,后续通过查询第一列表确定非空闲存储单元。

在一些实施例中,为了准确获知固态硬盘中存在哪些空闲存储单元,可以维护一个第二列表,在该第二列表中记录空闲存储单元的标识,后续通过查询第二列表确定空闲存储单元。

在一些实施例中,第一列表和第二列表可以分别表现为一个队列。例如,第一列表为第一队列,第二列表为第二队列。第一队列和第二队列可以为先进先出的队列,先进先出的队列的特点为:在队列的队尾入列,在队列的队头出列。

在一可选实施例中,“确定固态硬盘中待回收存储单元”可以是:根据第一列表记录的非空闲存储单元的标识,从固态硬盘的至少一个非空闲存储单元中选择待回收存储单元。

在一些实施例中,为了更好地维护第一列表和第二列表,在将数据对象的数据进行清除之后,上述方法还可以包括:将待回收存储单元的标识从第一列表中删除,以及将待回收存储单元的标识添加至记录空闲存储单元的标识的第二列表中。

在一些实施例中,为了更好地维护第一列表,在根据第一列表记录的非空闲存储单元的标识,从固态硬盘的至少一个非空闲存储单元中选择待回收存储单元之前,上述方法还包括:

初始化第一列表,其中,初始化的第一列表中记录为空;在检测到固态硬盘中空闲存储单元被存储数据之后,将已存储数据的空闲存储单元确定为非空闲存储单元,并将非空闲存储单元的标识添加至第一列表中。

在一些实施例中,为了更好地维护第一列表和第二列表,将第二内存缓存区中的数据存储至固态硬盘的空闲存储单元之后,上述方法还可以包括:将已存储数据的空闲存储单元的标识从记录空闲存储单元的标识的第二列表中删除,以及将已存储数据的空闲存储单元的标识添加至第一列表。

前述实施例介绍的是针对固态硬盘的回收阶段的数据处理方法,图4所示实施例介绍的是从机械硬盘向固态硬盘缓存数据阶段的数据处理方法。图4所示实施例的数据处理方法可以是在针对固态硬盘回收操作之前执行,也可以是在针对固态硬盘回收操作之后执行,本实施例对此不做限制。

图4示出了本申请提供的数据处理方法另一个实施例的流程图。在上述实施例的基础上,参见图4,该数据处理方法还可以包括以下步骤:

401、从机械硬盘中获取待缓存数据对象的数据。

402、将待缓存数据对象的数据存储至第二内存缓存区,以及将待缓存数据对象的热度信息存储至第一内存缓存区。

机械硬盘(Mechanical hard disk,HDD)具有价格便宜、容量大的优点,但是受机械原理的影响,它的随机I/O时延从几毫秒到十几毫秒,严重影响用户体验和性能的发挥。固态硬盘相对于机械硬盘的随机访问性能有很大的提升,但是价格较贵。

在本申请实施例中,可以使用固态硬盘作为系统cache(高速缓冲存储器),使用机械硬盘作为后端存储设备,实现了性能和成本之间的平衡。

实际应用中,可以预先将机械硬盘中存储的数据缓存至固态硬盘中,以供后续应用软件从固态硬盘中读取所需的数据。当然,也可以在应用软件没有在固态硬盘中读取所需数据时,将机械硬盘中存储的数据缓存至固态硬盘中,以供应用软件从固态硬盘中读取所需的数据。

为了便于理解和区分,将从机械硬盘获取并最终需要缓存至固态硬盘的数据称作待缓存数据对象的数据。

在从机械硬盘获取到待缓存数据对象的数据之后,并不直接将该待缓存数据对象的数据存储至固态硬盘中,而是将该待缓存数据对象的数据存储至内存中的第二内存缓存区;当第二内存缓存区中的数据量累积到一定数量时,再以批量顺序的方式写入到固态硬盘的一个空闲存储单元中,以减少固态硬盘的写放大系数。

需要指出的是,本申请实施例涉及的缓存结构可以视为两级缓存结构,也即使用第二内存缓存区作为一级缓存,使用固态硬盘作为二级缓存。当应用软件需要读取数据时,首先从一级缓存即第二内存缓存区中读取;如果一级缓存中没有命中所需的数据,则再从二级缓存即固态硬盘中读取;如果二级缓存中也没有命中所需的数据,则从后端的机械硬盘中读取数据并存储至一级缓存中;当一级缓存的存储容量已满时,将一级缓存中的数据写入至二级缓存中。

另外,若以LRU算法识别任一业务场景的热数据时,则在将待缓存数据对象的数据存储至第二内存缓存区时,由于对待缓存数据对象进行了访问,这时,待缓存数据对象的数据被识别为热数据,因此,需要将待缓存数据对象的热度信息写入第一内存缓存区中进行存储。

其中,第一内存缓存区中的热度信息用于确定固态硬盘的待回收存储单元中迁移至第二内存缓存区的数据以及待清除的数据。关于第一内存缓存区的介绍详见上述实施例,在此不再赘述。

需要指出的是,若识别任一业务场景的热数据为除LRU算法之外的其他缓存淘汰算法,则在将待缓存数据对象的数据存储至第二内存缓存区时,可以不将待缓存数据对象的热度信息存储至第一内存缓存区。

403、在第二内存缓存区满足预设触发条件时,将第二内存缓存区中的数据存储至固态硬盘的第一空闲存储单元。

实际应用中,当某个应用软件需要读取一个数据时,假若该数据没有在固态缓存中命中时,则需要从机械硬盘中读取该数据,并将该数据保存到内存的第二内存缓存区中,当第二内存缓存区中的数据量累积到一定数量时,再以批量顺序的方式写入到固态硬盘的一个空闲存储单元中,以减少固态硬盘的写放大系数。当固态硬盘的可用空间越来越少时,就需要进行存储单元回收操作。

本申请实施例提供的数据处理方法,在将从机械硬盘读取的待缓存数据对象的数据存储至第二内存缓存区时,还可以将待缓存数据对象的热度信息存储至第一内存缓存区。在在第二内存缓存区满足预设触发条件时,将第二内存缓存区的数据迁移至固态硬盘中。由此,能够减少固态硬盘的写放大系数,提升固态硬盘的使用寿命。另外,第一内存缓存区中的热度信息能够用于确定固态硬盘的待回收存储单元中迁移至第二内存缓存区的数据以及待清除的数据,以便后续回收待回收单元时,能够保证热数据最终能够被保留到固态硬盘中,保证固态硬盘具有较高的缓存命中率。

实际应用中,针对任一业务场景,有的业务数据可能存储在第二内存缓存区中,有的业务数据可能存储在固态硬盘中。因此,在一些实施例中,为了准确确定任一业务场景的热数据,可以统计第二内存缓存区以及固态硬盘中的数据对象的访问特征;根据统计结果,确定访问特征满足预设访问条件的数据对象及其热度信息;在第一内存缓存区中以队列形式存储所述满足预设访问条件的数据对象的热度信息。

需要指出的是,预设访问条件与识别热数据的算法有关。例如,若识别热数据的算法为LRU(Least Recently Used,最近最不经常使用)算法,则预设访问条件为最近访问时间离当前时间最短。也即最近访问时间离当前时间最短的业务数据为热数据,而最近访问时间离当前时间最长的业务数据为需要淘汰的冷数据。又例如,若识别热数据的算法为LFU(Least Frequently Used,最近最少使用)算法,则预设访问条件为最近访问次数最多,也即最近访问次数最多为热数据,而最近访问次数最少为需要淘汰的冷数据。

需要指出的是,识别任一业务场景的热数据所采用的算法并不限于上述举例说明的LRU算法以及LFU算法,还可以是其他任意的缓存淘汰算法。当然,关于缓存淘汰算法更多介绍详见相关技术。

在一些实施例中,在第一内存缓存区中以队列形式存储满足预设访问条件的数据对象的热度信息之前,上述方法还可以包括:根据预设的缓存命中率和/或满足预设访问条件的数据对象的数据量设置队列的队列长度。

为了便于理解,将第一内存缓存区中存储热度信息的队列称作虚拟缓存队列。该虚拟缓存队列的队列长度决定虚拟缓存队列可存储的数据量。可以理解的是,虚拟缓存队列的队列长度越长,虚拟缓存队列中存储的热度信息越多,缓存命中率越高;虚拟缓存队列的队列长度越短,虚拟缓存队列中存储的热度信息越少,缓存命中率越低。

在一些实施例中,队列中队头中数据的出列时间晚于队尾中数据的出列时间;相应的,在第一内存缓存区中以队列形式存储所述满足预设访问条件的数据对象的热度信息之后,上述方法还可以包括:若检测到满足预设访问条件的数据对象当前被访问,则将满足预设访问条件的数据对象的热度信息在队列中的位置调整至所述队列的队头。

可以理解的是,越靠近虚拟缓存队列的队头的热度数据,该热度数据对应的数据对象的最近访问次数较多,或者,该热度数据对应的数据对象的最近访问时间离当前时间较短,当然,该热度数据越晚被从虚拟缓存队列中淘汰,也即该热度数据在虚拟缓存队列中保留时间较长。反之,越靠近虚拟缓存队列的队尾的热度数据,该热度数据对应的数据对象的最近访问次数较少,或者,该热度数据对应的数据对象的最近访问时间离当前时间较长,当然,该热度数据越早从虚拟缓存队列中淘汰,也即该热度数据在虚拟缓存队列中保留时间较短。

关于虚拟缓存队列的相关介绍参见前述内容,在此不再赘述。

实际应用中,随着时间推移,第二内存缓存区中的数据越来越多,第二内存缓存区的可用存储容量越来越少。因此,为了确保第二内存缓存区有足够的可用存储容量来存储待缓存数据,“将待缓存数据对象的数据存储至第二内存缓存区”的实现方式可以是:检测第二内存缓存区的当前存储容量是否满足待缓存数据对象所需的存储容量;若满足,则将待缓存数据对象的数据存储至第二内存缓存区;若不满足,则将第二内存缓存区中的数据存储至固态硬盘中第二空闲存储单元中,并清空第二内存缓存区中的数据,以及将待缓存数据对象的数据存储至清空后的第二内存缓存区中。

可以理解的是,第二内存缓存区的当前存储容量满足待缓存数据对象所需的存储容量,也即第二内存缓存区的存储容量尚有剩余。第二内存缓存区的当前存储容量不满足待缓存数据对象所需的存储容量,也即第二内存缓存区的存储容量已满,这时可以将第二内存缓存区的数据整体写入固态硬盘中的第二空闲存储单元,并清空第二内存缓存区中的数据,清空后的第二内存缓存区可以提供充足的存储容量。

在一些实施例中,为了提高固态硬盘的利用率,将待缓存数据对象的数据存储至第二内存缓存区之前,上述方法还可以包括:在内存中确定存储总容量等于空闲存储单元的存储总容量的第二内存缓存区。

可以理解的是,第二内存缓存区提供的存储总容量与单个空闲存储单元的存储总容量相等时,固态硬盘的利用率最大。当然,第二内存缓存区提供的存储总容量也可以大于或小于单个空闲存储单元的存储总容量,本申请实施例对第二内存缓存区的存储总容量不做限制。

在一些实施例中,为了准确获知固态硬盘中存在哪些空闲存储单元,可以维护一个第二列表,在该第二列表中记录空闲存储单元的标识,后续通过查询第二列表确定空闲存储单元。

在一些实施例中,“将第二内存缓存区中的数据存储至固态硬盘的第一空闲存储单元”具体是:根据记录空闲存储单元的标识的第二列表,从固态硬盘中选择第一空闲存储单元;将第二内存缓存区中的数据存储至第一空闲存储单元。

在一些实施例中,根据记录空闲存储单元的标识的第二列表,从固态硬盘中选择第一空闲存储单元之前,上述方法还可以包括:初始化第二列表,初始化后的第二列表中的记录为空;初始化固态硬盘,其中,初始化后的固态硬盘包括至少一个空闲存储单元;将至少一个空闲存储单元的标识添加至第二列表。

在一些实施例中,为了更好地维护第二列表,以及提高固态硬盘的利用率,根据记录空闲存储单元的标识的第二列表,从固态硬盘中选择第一空闲存储单元之后,上述方法还可以包括:将第一空闲存储单元的标识从第二列表中删除;根据第二列表中当前记录空闲存储单元的标识的数量,确定固态硬盘中空闲存储单元的数量;若空闲存储单元的数量小于预设的第二数量阈值,则从固态硬盘中至少一个非空闲存储单元中选择待回收存储单元;根据第一内存缓存区中的热度信息对待回收存储单元进行回收处理。

基于第一内存缓存区中的热度信息对待回收存储单元进行回收处理的相关内容详见前述介绍,在此不再赘述。

图5示出了本申请提供的数据处理装置一个实施例的结构示意图。参见图5,该数据处理装置可以包括:

确定模块501,用于确定固态硬盘中的待回收存储单元;

处理模块502,用于针对所述待回收存储单元中任一数据对象,检测第一内存缓存区中是否已存储所述数据对象的热度信息;若所述第一内存缓存区中已存储所述数据对象的热度信息,则将所述数据对象的数据迁移至第二内存缓存区;若所述第一内存缓存区中未存储所述数据对象的热度信息,则将所述数据对象的数据进行清除;在所述第二内存缓存区满足预设触发条件时,将所述第二内存缓存区中的数据存储至所述固态硬盘的空闲存储单元。

在一些实施例中,处理模块502,还用于统计第二内存缓存区以及固态硬盘中的数据对象的访问特征;

根据统计结果,确定访问特征满足预设访问条件的数据对象及其热度信息;

在所述第一内存缓存区中以队列形式存储所述满足预设访问条件的数据对象的热度信息。

在一些实施例中,队列中队头中数据的出列时间晚于队尾中数据的出列时间;

相应的,在一些实施例中,在第一内存缓存区中以队列形式存储热数据之后,处理模块502还用于:

若检测到所述满足预设访问条件的数据对象当前被访问,则将所述满足预设访问条件的数据对象的热度信息在所述队列中的位置调整至所述队列的队头。

在一些实施例中,在所述第一内存缓存区中以队列形式存储所述满足预设访问条件的数据对象的热度信息之前之前,处理模块502还用于:

根据预设的缓存命中率和/或满足预设访问条件的数据对象的数据量设置所述队列的队列长度。

在一些实施例中,在将所述数据对象的数据迁移至第二内存缓存区之前,处理模块502还用于:

判断待迁移数据的数据量是否小于预设的第一数量阈值;

若是,则执行将所述数据对象的数据迁移至第二内存缓存区的步骤。

在一些实施例中,处理模块502确定固态硬盘中的待回收存储单元具体是:

检测固态硬盘中空闲存储单元的数量;

若检测到空闲存储单元的数量小于预设的第二数量阈值,则从固态硬盘中至少一个非空闲存储单元中选择待回收存储单元。

在一些实施例中,处理模块502确定固态硬盘中待回收存储单元具体是:

根据第一列表记录的非空闲存储单元的标识,从固态硬盘的至少一个非空闲存储单元中选择待回收存储单元。

在一些实施例中,在将所述数据对象的数据进行清除之后,处理模块502还用于:

将待回收存储单元的标识从第一列表中删除,以及将待回收存储单元的标识添加至记录空闲存储单元的标识的第二列表中。

在一些实施例中,在根据第一列表记录的非空闲存储单元的标识,从固态硬盘的至少一个非空闲存储单元中选择待回收存储单元之前,处理模块502还用于:

初始化第一列表,其中,初始化的第一列表中记录为空;

在检测到固态硬盘中空闲存储单元被存储数据之后,将已存储数据的空闲存储单元确定为非空闲存储单元,并将非空闲存储单元的标识添加至第一列表中。

在一些实施例中,将第二内存缓存区中的数据存储至固态硬盘的空闲存储单元之后,处理模块502还用于:

将已存储数据的空闲存储单元的标识从记录空闲存储单元的标识的第二列表中删除,以及将已存储数据的空闲存储单元的标识添加至第一列表。

图5的数据处理装置可以执行图1所示实施例的数据处理方法,其实现原理和技术效果不再赘述。对于上述实施例中的数据处理装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

在一些实施例中,图5的数据处理装置还可以执行图4所示实施例的数据处理方法。具体的:

获取模块501,用于从机械硬盘中获取待缓存数据对象的数据;

处理模块502,用于将待缓存数据对象的数据存储至第二内存缓存区,以及将待缓存数据对象的热度信息存储至第一内存缓存区;

处理模块502,还用于在第二内存缓存区满足预设触发条件时,将第二内存缓存区中的数据存储至固态硬盘的第一空闲存储单元;

其中,第一内存缓存区中的热度信息用于确定固态硬盘的待回收存储单元中迁移至第二内存缓存区的数据以及待清除的数据。

在一些实施例中,处理模块502还用于:

统计所述第二内存缓存区以及所述固态硬盘中的数据对象的访问特征;

根据统计结果,确定满足访问特征满足预设访问条件的数据对象及其热度信息;

在所述第一内存缓存区中以队列形式存储满足预设访问条件的数据对象的热度信息。

在一些实施例中,处理模块502将待缓存数据对象的数据存储至第二内存缓存区具体是:

检测第二内存缓存区的当前存储容量是否满足待缓存数据对象所需的存储容量;

若满足,则将待缓存数据对象的数据存储至第二内存缓存区;

若不满足,则将第二内存缓存区中的数据存储至固态硬盘中第二空闲存储单元中,并清空第二内存缓存区中的数据,以及将待缓存数据对象的数据存储至清空后的第二内存缓存区中。

在一些实施例中,将待缓存数据对象的数据存储至第二内存缓存区之前,处理模块502还用于:

在内存中确定存储总容量等于空闲存储单元的存储总容量的第二内存缓存区。

在一些实施例中,处理模块502将第二内存缓存区中的数据存储至固态硬盘的第一空闲存储单元具体是:

根据记录空闲存储单元的标识的第二列表,从固态硬盘中选择第一空闲存储单元;

将第二内存缓存区中的数据存储至第一空闲存储单元。

在一些实施例中,根据记录空闲存储单元的标识的第二列表,从固态硬盘中选择第一空闲存储单元之前,处理模块502还用于:

初始化第二列表,初始化后的第二列表中的记录为空;

初始化固态硬盘,其中,初始化后的固态硬盘包括至少一个空闲存储单元;

将至少一个空闲存储单元的标识添加至第二列表。

在一些实施例中,根据记录空闲存储单元的标识的第二列表,从固态硬盘中选择第一空闲存储单元之后,处理模块502还用于:

将第一空闲存储单元的标识从第二列表中删除;

根据第二列表中当前记录空闲存储单元的标识的数量,确定固态硬盘中空闲存储单元的数量;

若空闲存储单元的数量小于预设的第二数量阈值,则从固态硬盘中至少一个非空闲存储单元中选择待回收存储单元;

根据第一内存缓存区中的热度信息对待回收存储单元进行回收处理。

在一个可能的设计中,图5所示实施例的数据处理装置可以实现为电子设备,如图6所示,该电子设备可以包括存储组件601以及处理组件602;

存储组件存储一条或多条计算机指令,其中,一条或多条计算机指令供处理组件调用执行。

处理组件602用于:

确定固态硬盘中的待回收存储单元;针对所述待回收存储单元中任一数据对象,检测第一内存缓存区中是否已存储所述数据对象的热度信息;若所述第一内存缓存区中已存储所述数据对象的热度信息,则将所述数据对象的数据迁移至第二内存缓存区;

若所述第一内存缓存区中未存储所述数据对象的热度信息,则将所述数据对象的数据进行清除;在所述第二内存缓存区满足预设触发条件时,将所述第二内存缓存区中的数据存储至所述固态硬盘的空闲存储单元。

其中,处理组件602可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

存储组件601被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

该电子设备还可以包括显示组件603,显示组件603可以为电子发光(EL)元件、液晶显示器或具有类似结构的微型显示器、或者视网膜可直接显示或类似的激光扫描式显示器。

当然,电子设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。

输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。

通信组件被配置为便于电子设备和其他设备之间有线或无线方式的通信等。

其中,该电子设备可以为物理设备或者云计算平台提供的弹性计算主机等,此时电子设备即可以是指云服务器,上述处理组件、存储组件等可以是从云计算平台租用或购买的基础服务器资源。

本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被计算机执行时可以实现上述图1和/或图4所示实施例的数据处理方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

21页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种分布式存储系统的数据一致性校验方法、装置及设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类