一种文件缓存方法及装置与流程

文档序号:12121713阅读:288来源:国知局
一种文件缓存方法及装置与流程

本发明涉及数据缓存技术领域,更具体地说,涉及一种文件缓存方法及装置。



背景技术:

在存储系统的存储软件开发过程中,经常会使用缓存数据的方式来提高获取数据的速度,理想的方式是将所有可能访问的数据都缓存到内存中(或是在集群环境中从底层存储池缓存到上层的文件系统中),但实际的情况是考虑到硬件设备的配置的高低不同以及数据量越来越呈现出海量的趋势,这就需要通过一定的缓存策略来实现对最有可能被用户读取数据的缓存。

现有技术中通常是基于数据的访问频率来设定对应的缓存策略的,具体来说,将访问频率高于设定值的数据缓存至内存中,其他则缓存至其他缓存装置中,其中访问频率高于设定值的数据则被认为是用户最可能访问的数据;由此,在用户需要访问数据时,先由内存中获取数据,如果获取失败,则到其他缓存装置中获取数据。但是,发明人发现上述缓存策略所依据的数据维度单一,即仅仅根据数据的访问频率实现对应缓存策略,无法对数据被用户访问的可能性进行全面的评价,因此有可能出现对数据被用户访问的可能性的评价不准确,进而造成在内存中无法获取到数据的情况发生,最终造成缓存命中率较低。

综上所述,现有技术提供的缓存策略中存在缓存命中率较低的问题。



技术实现要素:

本发明的目的是提供一种文件缓存方法及装置,以解决现有技术提供的缓存策略中存在的缓存命中率较低的问题。

为了实现上述目的,本发明提供如下技术方案:

一种文件缓存方法,包括:

获取各个文件的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差;

基于所述各个文件的文件大小、访问频率、平均访问时间间隔及时间差计算所述各个文件的优先级;

基于所述各个文件的优先级将所述各个文件缓存至所述缓存池中具有对应被访问优先级的缓存区域中,其中,所述缓存池中优先级越高的缓存区域越优先被访问。

优选的,计算所述各个文件的优先级,包括:

确定任一文件为目标文件;

按照下列公式分别计算所述目标文件的第一得分值、第二得分值及第三得分值:

ftimevalcurfile=f(ΔT)*15

其中,fsizevalcurfile、fratevalcurfile及TINTER分别表示所述目标文件的第一得分值、第二得分值及第三得分值,fsizemin及fsizevalbase分别表示第一预设基准文件的文件大小及第一得分值,fratecurfile及fratevalbase分别表示第二预设基准文件的访问频率及第二得分值,fsizecurfile及fratecurfile分别表示所述目标文件的文件大小及访问频率,如果所述目标文件的平均访问时间间隔大于或等于对应时间差,则f(ΔT)等于所述目标文件的时间差除以对应平均访问时间间隔,如果所述目标文件的平均访问时间间隔小于对应时间差,则f(ΔT)等于所述目标文件的平均访问时间间隔除以对应时间差;

基于所述目标文件的第一得分值、第二得分值及第三得分值计算所述目标文件的优先级。

优选的,基于所述目标文件的第一得分值、第二得分值及第三得分值计算所述目标文件的优先级,包括:

按照下列公式计算所述目标文件的优先级:

fvalcurfile=0.2*fsizevalcurfile+0.4*fratevalcurfile+0.4*ftimevalcurfile

其中,fvalcurfile表示所述目标文件的优先级。

优选的,还包括:

当所述缓存池中的任一文件被访问后,获取该文件当前时刻的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差,并基于该文件当前时刻的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差计算该文件当前时刻的优先级,基于该文件当前时刻的优先级将该文件缓存至所述缓存池中具有对应被访问优先级的缓存区域中。

优选的,基于所述各个文件的优先级将所述各个文件缓存至所述缓存池中具有对应被访问优先级的缓存区域中之后,还包括:

将所述各个文件的元数据均缓存至所述缓存池中被访问优先级最高的缓存区域中。

一种文件缓存装置,包括:

参数获取模块,用于获取各个文件的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差;

计算模块,用于基于所述各个文件的文件大小、访问频率、平均访问时间间隔及时间差计算所述各个文件的优先级;

缓存模块,用于基于所述各个文件的优先级将所述各个文件缓存至所述缓存池中具有对应被访问优先级的缓存区域中,其中,所述缓存池中优先级越高的缓存区域越优先被访问。

优选的,所述计算模块包括:

计算单元,用于:确定任一文件为目标文件;按照下列公式分别计算所述目标文件的第一得分值、第二得分值及第三得分值:

ftimevalcurfile=f(ΔT)*15

其中,fsizevalcurfile、fratevalcurfile及TINTER分别表示所述目标文件的第一得分值、第二得分值及第三得分值,fsizemin及fsizevalbase分别表示第一预设基准文件的文件大小及第一得分值,fratecurfile及fratevalbase分别表示第二预设基准文件的访问频率及第二得分值,fsizecurfile及fratecurfile分别表示所述目标文件的文件大小及访问频率,如果所述目标文件的平均访问时间间隔大于或等于对应时间差,则f(ΔT)等于所述目标文件的时间差除以对应平均访问时间间隔,如果所述目标文件的平均访问时间间隔小于对应时间差,则f(ΔT)等于所述目标文件的平均访问时间间隔除以对应时间差;基于所述目标文件的第一得分值、第二得分值及第三得分值计算所述目标文件的优先级。

优选的,所述计算单元包括:

计算子单元,用于按照下列公式计算所述目标文件的优先级:

fvalcurfile=0.2*fsizevalcurfile+0.4*fratevalcurfile+0.4*ftimevalcurfile

其中,fvalcurfile表示所述目标文件的优先级。

优选的,还包括:

实时调整模块,用于:当所述缓存池中的任一文件被访问后,获取该文件当前时刻的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差,并基于该文件当前时刻的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差计算该文件当前时刻的优先级,基于该文件当前时刻的优先级将该文件缓存至所述缓存池中具有对应被访问优先级的缓存区域中。

优选的,所述缓存模块还包括:

缓存单元,用于基于所述各个文件的优先级将所述各个文件缓存至所述缓存池中具有对应被访问优先级的缓存区域中之后,将所述各个文件的元数据均缓存至所述缓存池中被访问优先级最高的缓存区域中。

本发明提供的一种文件缓存方法及装置,其中该方法包括:获取各个文件的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差;基于所述各个文件的文件大小、访问频率、平均访问时间间隔及时间差计算所述各个文件的优先级;基于所述各个文件的优先级将所述各个文件缓存至所述缓存池中具有对应被访问优先级的缓存区域中,其中,所述缓存池中优先级越高的缓存区域越优先被访问。本申请公开的技术特征中,基于各个文件的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差计算各个文件的优先级,优先级越高表明文件越有可能被访问,然后将各个文件缓存至具有对应被访问优先级的缓存区域中,从而保证越有可能被访问的数据越优先被访问。可见,本申请中基于各个文件的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差确定文件的优先级,能够更加全面的评价文件被访问的可能性,保证了对文件被访问的可能性的准确评价,进而提高了缓存命中率。

附图说明

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

图1为本发明实施例提供的一种文件缓存方法的流程图;

图2为本发明实施例提供的一种文件缓存装置的结构示意图。

具体实施方式

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

请参阅图1,其示出了本发明实施例提供的一种文件缓存方法的流程图,可以包括以下步骤:

S11:获取各个文件的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差。

其中,访问频率可以指单个时间单位内文件被访问的次数,如1分钟内文件被访问的次数或者1小时内文件被访问的次数等,也可以指预先设定的一段时间内文件被访问的次数总和与该段时间的比值,具体可以根据实际需要进行设定;任一文件的平均访问时间间隔可以按照下列公式计算:

其中,TINTER表示该文件的平均访问时间间隔,TeveryINTER表示该文件任意一次访问与上次访问之间的时间间隔,∑TeveryINTER表示全部时间间隔之和,N表示时间间隔的数量,即该文件被访问的次数减1。

而任一文件距离当前时间最近的访问时间与当前时间的时间差可以用下列公式表示:

ΔT=Tcurtime-Tlasttime

其中,ΔT表示该文件的时间差,Tcurtime表示当前时间,Tlasttime表示该文件最后一次被访问的时间,即距离当前时间最近的一次访问的时间。

S12:基于各个文件的文件大小、访问频率、平均访问时间间隔及时间差计算各个文件的优先级。

基于任一文件的文件大小、访问频率、平均访问时间间隔及时间差计算该文件的优先级,优先级越高,表明该文件被用户访问的可能性越大,相反,优先级越低,表明该文件被用户访问的可能性越小,由此,基于上述各项参数计算出每个文件的优先级,也即获取到各个文件被用户访问的可能性。

S13:基于各个文件的优先级将各个文件缓存至缓存池中具有对应被访问优先级的缓存区域中,其中,缓存池中优先级越高的缓存区域越优先被访问。

按照被访问优先级由高至低,缓存池可以包括内存、硬盘及存储装置集群,其中,存储装置集群可以为分布式存储系统;具体来说,当接收到用户的访问请求时,首先在内存中查找与请求对应的数据,如果查找成功,则将查找到的数据返回给用户,如果查找失败,则由硬盘中查找与请求对应的数据,如果查找成功,则将查找到的数据返回给用户,如果查找失败,则由存储装置集群中查找与请求对应的数据,以此类推;当然,对于缓存池的设置也可以根据实际需要进行其他设置,均在本发明的保护范围之内。缓存池包括不同被访问优先级的缓存区域,在获取到各个文件的优先级后,可以按照优先级由高至低将文件分为多个类别,然后将优先级最高的类别的文件缓存至被访问优先级最高的缓存区域,以此类推,最终将优先级最低的类别的文件缓存至被访问优先级最低的缓存区域,从而保证了越有可能被用户访问的文件越优先被访问。

本申请公开的技术特征中,基于各个文件的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差计算各个文件的优先级,优先级越高表明文件越有可能被访问,然后将各个文件缓存至具有对应被访问优先级的缓存区域中,从而保证越有可能被访问的数据越优先被访问。可见,本申请中基于各个文件的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差确定文件的优先级,能够更加全面的评价文件被访问的可能性,保证了对文件被访问的可能性的准确评价,进而提高了缓存命中率。

另外,本申请公开的上述技术特征适用于任何需要进行数据缓存的场景,具有通用性。

本发明实施例提供的一种文件缓存方法,计算各个文件的优先级,可以包括:

确定任一文件为目标文件;

按照下列公式分别计算目标文件的第一得分值、第二得分值及第三得分值:

ftimevalcurfile=f(ΔT)*15

其中,fsizevalcurfile表示目标文件的第一得分值,fratevalcurfile表示目标文件的第二得分值,TINTER表示目标文件的第三得分值,fsizemin表示第一预设基准文件的文件大小,fsizevalbase表示第一预设基准文件第一得分值,fratecurfile表示第二预设基准文件的访问频率,fratevalbase表示第二预设基准文件的第二得分值,fsizecurfile表示目标文件的文件大小,fratecurfile表示目标文件的访问频率,如果目标文件的平均访问时间间隔大于或等于对应时间差,则f(ΔT)等于目标文件的时间差除以对应平均访问时间间隔,如果目标文件的平均访问时间间隔小于对应时间差,则f(ΔT)等于目标文件的平均访问时间间隔除以对应时间差;

基于目标文件的第一得分值、第二得分值及第三得分值计算目标文件的优先级。

其中,第一预设基准文件可以为选取出的最小的文件,而对应该文件的第一得分值可以设定为2;第二预设基准文件可以为选取出的被访问次数最多的文件,而该文件对应的第二得分值可以设定为10;当然还可以根据实际需要进行其他设定,均在本发明的保护范围之内。

由此,通过对上述各项参数的计算得到对应的得分值,以基于该得分值计算文件的优先级,实验证明,通过上述方式计算得到的各文件的优先级,即被访问的可能性准确度很高。

本发明实施例提供的一种文件缓存方法,基于目标文件的第一得分值、第二得分值及第三得分值计算目标文件的优先级,包括:

按照下列公式计算目标文件的优先级:

fvalcurfile=0.2*fsizevalcurfile+0.4*fratevalcurfile+0.4*ftimevalcurfile

其中,fvalcurfile表示目标文件的优先级。

需要说明的是,基于第一得分值至第三得分值计算目标文件优先级可以通过多种方式实现,如直接将各个得分值相加等,本申请中采用上述公式实现目标文件的优先级计算,通过这种分级加权算法保证了所得优先级的准确性。另外,在基于优先级对文件分类时,可以将优先级的值在设定的一定范围内的文件分为一个类别,当然也可以根据实际需要进行其他设定,均在本发明的保护范围之内。

本发明实施例提供的一种文件缓存方法,还可以包括:

当缓存池中的任一文件被访问后,获取该文件当前时刻的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差,并基于该文件当前时刻的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差计算该文件当前时刻的优先级,基于该文件当前时刻的优先级将该文件缓存至缓存池中具有对应被访问优先级的缓存区域中。

需要说明的是,基于该文件当前时刻的优先级将该文件缓存至缓存池中具有对应被访问优先级的缓存区域中时,如果该文件当前时刻的优先级与其所缓存的缓存区域的被访问优先级对应,则无需对缓存位置进行改变,否则,则需要将该文件缓存至与其当前优先级对应的缓存区域中。由此,能够在任一文件被访问后实现对其优先级的计算及缓存位置的确定,保证了文件能够始终缓存在与其优先级对应的缓存区域中,进一步保证了缓存命中率的提高。

本发明实施例提供的一种文件缓存方法,基于各个文件的优先级将各个文件缓存至缓存池中具有对应被访问优先级的缓存区域中之后,还可以包括:

将各个文件的元数据均缓存至缓存池中被访问优先级最高的缓存区域中。

具体来说,可以将各个文件的元数据及文件数据均缓存至其对应的缓存区域中,而本申请中优选将各个文件的元数据均缓存至缓存池中被访问优先级最高的缓存区域中,由此,在接收到用户请求在被访问优先级最高的缓存区域中查找数据时,即使无法查找到文件数据,也可以得到与请求对应数据的文件的元数据,而元数据可以包括文件缓存位置及大小等属性,从而可以基于该元数据定位到对应的文件,进而获取到对应的数据,提高了数据获取速度。

本发明实施例还提供了一种文件缓存装置,如图2所示,可以包括:

参数获取模块11,用于获取各个文件的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差;

计算模块12,用于基于各个文件的文件大小、访问频率、平均访问时间间隔及时间差计算各个文件的优先级;

缓存模块13,用于基于各个文件的优先级将各个文件缓存至缓存池中具有对应被访问优先级的缓存区域中,其中,缓存池中优先级越高的缓存区域越优先被访问。

本发明实施例提供的一种文件缓存装置,计算模块可以包括:

计算单元,用于:确定任一文件为目标文件;按照下列公式分别计算目标文件的第一得分值、第二得分值及第三得分值:

ftimevalcurfile=f(ΔT)*15

其中,fsizevalcurfile、fratevalcurfile及TINTER分别表示目标文件的第一得分值、第二得分值及第三得分值,fsizemin及fsizevalbase分别表示第一预设基准文件的文件大小及第一得分值,fratecurfile及fratevalbase分别表示第二预设基准文件的访问频率及第二得分值,fsizecurfile及fratecurfile分别表示目标文件的文件大小及访问频率,如果目标文件的平均访问时间间隔大于或等于对应时间差,则f(ΔT)等于目标文件的时间差除以对应平均访问时间间隔,如果目标文件的平均访问时间间隔小于对应时间差,则f(ΔT)等于目标文件的平均访问时间间隔除以对应时间差;基于目标文件的第一得分值、第二得分值及第三得分值计算目标文件的优先级。

本发明实施例提供的一种文件缓存装置,计算单元可以包括:

计算子单元,用于按照下列公式计算目标文件的优先级:

fvalcurfile=0.2*fsizevalcurfile+0.4*fratevalcurfile+0.4*ftimevalcurfile

其中,fvalcurfile表示目标文件的优先级。

本发明实施例提供的一种文件缓存装置,还可以包括:

实时调整模块,用于:当缓存池中的任一文件被访问后,获取该文件当前时刻的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差,并基于该文件当前时刻的文件大小、访问频率、平均访问时间间隔及距离当前时间最近的访问时间与当前时间的时间差计算该文件当前时刻的优先级,基于该文件当前时刻的优先级将该文件缓存至缓存池中具有对应被访问优先级的缓存区域中。

本发明实施例提供的一种文件缓存装置,缓存模块还可以包括:

缓存单元,用于基于各个文件的优先级将各个文件缓存至缓存池中具有对应被访问优先级的缓存区域中之后,将各个文件的元数据均缓存至缓存池中被访问优先级最高的缓存区域中。

本发明实施例提供的一种文件缓存装置中相关部分的说明请参见本发明实施例提供的一种文件缓存方法中对应部分的详细说明,在此不再赘述。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1