掌桥专利:专业的专利平台
掌桥专利
首页

一种数据缓存方法及装置

文献发布时间:2023-06-19 10:38:35


一种数据缓存方法及装置

技术领域

本发明涉及数据处理技术,尤其涉及一种数据缓存方法及装置。

背景技术

目前,缓存实现中的标准的最近最少使用(LRU,Least Recently Used)淘汰算法无法适应时序数据查询的场景。例如,该LRU淘汰算法对扫描读模式是没有抵抗性的。当一次顺序读取大量的数据块时,这些数据块就会填满整个缓存空间,即使这些数据块只被读一次。当缓存空间填满之后,如果想向缓存放入新的数据,那些最近最少被使用的数据将会被淘汰出去。在这种大量顺序读的情况下,缓存将只包含这些新读的数据,而不是那些真正被经常使用的热数据。在这些顺序读出的数据仅仅只被使用一次的情况下,从缓存的角度来看,它将被这些无用的数据填满。

而且,虽然LRU淘汰算法可以根据时间进行数据热度评估(即缓存那些最近使用的时间线数据),也可以根据使用频率进行热度评估(即缓存那些最频繁使用的时间线数据)。然而,以上两种评估方式都不能适应所有的负载。

发明内容

本发明实施例为了解决现有缓存实现中的标准的LRU淘汰算法所存在的上述缺陷,创造性地提供了一种数据缓存方法及装置。

根据本发明第一方面,提供了一种数据缓存方法,该方法包括:基于时间线按照查询粒度对查询数据进行热度评估,得到评估结果,所述评估粒度包括时间窗和查询频率至少之一;根据所述评估结果确定对应时间线的待缓存数据;存储所述待缓存数据至缓存空间。

根据本发明一实施方式,所述方法还包括:当所述缓存空间达到缓存阈值时,基于数据热度对已存储数据进行数据更新。

根据本发明一实施方式,基于数据热度对已存储数据进行数据更新,包括:当用于存储最近最新加入到缓存空间的时间线数据的第一链表中被缓存的时间线数据逐渐填满后,位于所述第一链表尾部的时间线数据将被移动到第二链表中;当所述第一链表中的缓存数据被多次命中后,已命中的数据将被移动到第三链表中,所述第三链表中数据以命中次数进行排序;当第三链表中被缓存的时间线数据逐渐被填满后,位于所述第三链表尾部的时间线数据将被移动到第四链表中。

根据本发明一实施方式,所述方法还包括:根据负载优化策略对缓存空间进行优化。

根据本发明一实施方式,所述根据负载优化策略对缓存空间进行优化,包括:当所述存储空间中用于存储最近访问数据的内存空间分配不足时,增加所述第一链表的长度;当所述存储空间中用于存储最多命中数据的内存空间分配不足时,增加所述第三链表的长度。

根据本发明第二方面,又提供了一种数据缓存装置,所述装置包括:热度评估模块,用于基于时间线按照查询粒度对查询数据进行热度评估,得到评估结果,所述查询粒度包括时间窗和查询频率至少之一;确定模块,用于根据所述评估结果确定对应时间线的待缓存数据;缓存模块,用于存储所述待缓存数据至缓存空间。

根据本发明一实施方式,所述装置还包括:数据更新模块,用于当所述缓存空间达到缓存阈值时,基于数据热度对已存储数据进行数据更新。

根据本发明一实施方式,所述数据更新模块,具体用于当用于存储最近最新加入到缓存空间的时间线数据的第一链表中被缓存的时间线数据逐渐填满后,位于所述第一链表尾部的时间线数据将被移动到第二链表中;当所述第一链表中的缓存数据被多次命中后,已命中的数据将被移动到第三链表中,所述第三链表中数据以命中次数进行排序;当第三链表中被缓存的时间线数据逐渐被填满后,位于所述第三链表尾部的时间线数据将被移动到第四链表中。

根据本发明一实施方式,所述装置还包括:优化模块,用于根据负载优化策略对缓存空间进行优化。

根据本发明一实施方式,所述优化模块,具体用于当所述存储空间中用于存储最近访问数据的内存空间分配不足时,增加所述第一链表的长度;当所述存储空间中用于存储最多命中数据的内存空间分配不足时,增加所述第三链表的长度。

根据本发明第三方面,又提供了一种数据缓存装置,包括,一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述任一数据缓存方法。

本发明实施例数据缓存方法及装置,首先基于时间线按照查询粒度对查询数据进行热度评估,得到评估结果,所述评估粒度包括时间窗和查询频率至少之一;再根据所述评估结果确定对应时间线的待缓存数据;之后存储所述待缓存数据至缓存空间。如此,本发明通过统计时间窗和查询频率的方式进行来综合评估单个时间线的查询数据的数据热度,并根据数据热度将热点数据作为待缓存数据加以存储,能够有效评估出时序数据的查询热度,从而有效提高缓存命中率,提升响应速度。

需要理解的是,本发明的教导并不需要实现上面所述的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本发明的其他实施方式还能够实现上面未提到的有益效果。

附图说明

通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:

在附图中,相同或对应的标号表示相同或对应的部分。

图1示出了本发明数据缓存的总体工作流程示意图;

图2示出了本发明实施例数据缓存方法的实现流程示意图一;

图3示出了本发明一应用示例基于时间窗和查询频率对单个时间线的查询数据热度进行评估的示意图;

图4示出了本发明实施例数据缓存方法的实现流程示意图二;

图5示出了本发明一应用示例基于数据热度对已存储数据进行数据更新的链表示意图;

图6示出了本发明实施例数据缓存方法的实现流程示意图三;

图7示出了本发明一应用示例根据负载优化策略对缓存空间进行优化的链表示意图;

图8示出了本发明实施例数据缓存装置的组成结构示意图。

具体实施方式

下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为使本发明更加透彻和完整,并能够将本发明的范围完整地传达给本领域的技术人员。

下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。

图1示出了本发明数据缓存的总体工作流程示意图。

本发明为了有效克服现有LRU淘汰算法中根据时间进行数据热度评估和根据使用频率进行热度评估这两种评估方式均琺适应所有负载的问题,创造性地提供了一种新的基于查询热度的数据缓存方法,如图1所示,该数据缓存的总体工作流程中主要包括如下三个创新点:

创新点一,针对单个metric时间线的查询数据热度的评估方法。具体地,当经检测已缓存数据不满足查询需求时,需要查询时序数据库;此时,可以通过基于时间线的数据热度评估来判断是否满足缓存标准;若满足,则将满足标准的热度数据加入到缓存空间。后续会结合附图2和3对单个metric时间线的查询数据热度的评估方法进行详细阐述。

创新点二,在针对单个metric时间线查询数据热度有效评估的基础上,当缓存空间已满,即达到缓存阈值时,通过对已缓存数据的命中次数收集分析,对已缓存数据的热度进行二次评估,从而为缓存数据的淘汰提供有效的依据。后续会结合附图4和5对进一步包括的已缓存数据的二次热度评估方法进行详细阐述。

创新点三,根据负载优化策略对缓存空间进行优化,即有效的根据最近使用和最多使用两个方面有效地根据负载进行缓存空间的自动优化。后续会结合附图6和5对进一步包括的根据负载对缓存空间的自动优化方法进行详细阐述。

图2示出了本发明实施例数据缓存方法的实现流程示意图一;图3示出了本发明一应用示例基于时间窗和查询频率对单个时间线的查询数据热度进行评估的示意图。

参考图2,本发明实施例提供了一种数据缓存方法,该方法包括:操作201,基于时间线按照查询粒度对查询数据进行热度评估,得到评估结果;操作202,根据所述评估结果确定对应时间线的待缓存数据;操作203,存储所述待缓存数据至缓存空间。

参考图1,接收到针对单个metric时间线的数据查询请求时,系统会分析请求的metric和时间区间,获得缓存空间当前已缓存数据;之后,检测已缓存数据是否满足查询需求;若经检测已缓存数据不满足查询需求时,需要查询时序数据库;此时,可以通过图2所示的操作201~203基于时间线的数据热度评估来判断是否满足缓存标准,并将满足标准的热度数据加入到缓存空间。

在操作201~203,查询粒度包括时间窗和查询频率至少之一。比如,针对单个metric时间线的查询数据,首先按照查询频率从高到低和时间窗从大到小的方式进行综合排序;接着将排序最前的时间窗数据确定为时间线的待缓存数据并存储。

在一应用示例中,参考图3,假设同一metric时间线的查询数据包括查询请求1~5(Query1~5),其中,Query1为每5秒查询最近5分钟的数据,Query2为每3秒查询最近10分钟的数据,Query3为每半小时查询最近一小时的数据,Query4为每秒查询最近15分钟的数据,Query5为每秒查询最近5分钟的数据。首先针对同一metric时间线的查询请求,按照查询频率从高到低和时间窗从大到小进行综合排序,将排序最前的Query4对应的时间窗数据加入到缓存中。具体地,在T2时间点,针对该metric时间线的所有查询数据,从时序数据库中查询出的T1~T2时间范围的Query4对于的时间窗数据加入到缓存空间中,并相应淘汰缓存空间中时间较早的同窗口大小的数据。

这样,通过基于时间线按照查询粒度对查询数据进行热度评估的方法完成数据缓存后,单个metric时间线的查询数据在缓存空间中将只保留固定大小的一个最新数据块,这将最大程度地减轻系统IO负载。

本发明实施例数据缓存方法,首先基于时间线按照查询粒度对查询数据进行热度评估,得到评估结果,所述评估粒度包括时间窗和查询频率至少之一;再根据所述评估结果确定对应时间线的待缓存数据;之后存储所述待缓存数据至缓存空间。如此,通过统计时间窗和查询频率的方式进行来综合评估单个时间线的查询数据的数据热度,并根据数据热度将热点数据作为待缓存数据加以存储,能够有效评估出时序数据的查询热度,从而有效提高缓存命中率,提升响应速度。

图4示出了本发明实施例数据缓存方法的实现流程示意图二;图5示出了本发明一应用示例基于数据热度对已存储数据进行数据更新的链表示意图。

参考图4,本发明实施例还提供了一种数据缓存方法,该方法包括:操作401,基于时间线按照查询粒度对查询数据进行热度评估,得到评估结果;操作402,根据所述评估结果确定对应时间线的待缓存数据;操作403,存储所述待缓存数据至缓存空间;操作404,当所述缓存空间达到缓存阈值时,基于数据热度对已存储数据进行数据更新。

其中,操作401~403的具体实现过程与图2所示实施例中操作201~203的具体实现过程相类似,这里不再赘述。

本发明实施例在完成单个metric时间线的查询数据的热度评估并加入缓存后,当缓存空间已满时,需要针对已缓存的不同metric时间线的热点数据在缓存空间中进行二次评估,从而决定在有限的缓存空间中,保存最有价值的热点数据。

具体地,在操作404,当用于存储最近最新加入到缓存空间的时间线数据的第一链表中被缓存的时间线数据逐渐填满后,位于所述第一链表尾部的时间线数据将被移动到第二链表中;当所述第一链表中的缓存数据被多次命中后,已命中的数据将被移动到第三链表中,所述第三链表中数据以命中次数进行排序;当第三链表中被缓存的时间线数据逐渐被填满后,位于所述第三链表尾部的时间线数据将被移动到第四链表中。

在一应用示例中,参考图5,假设现在拥有一个10个页面大小的缓存空间;为了二次评估能够正常实现,同时需要声明两组共计四个链表,每个链表的长度是缓存空间页面数量的1/2。

其中,第一链表1-1,用于存储最近最新加入到缓存空间的时间线数据,新加入缓存空间的缓存数据将被加入到链表头部。

第二链表2-1,当第一链表1-1中被缓存的时间线数据逐渐填满后,位于第一链表1-1尾部的时间线数据将被移动到第二链表2-1中,并释放内存空间。新加入的时间线数据总是位于链表头部。

第三链表1-2,当第一链表1-1中的缓存数据被多次(需跟进具体业务设置命中次数阈值)命中后,已命中的数据将被移动到第三链表1-2中,该链表中缓存数据以命中次数进行排序。

第四链表2-2,当第三链表1-2中被缓存的时间线数据逐渐被填满后,位于第三链表1-2尾部的时间线数据将被移动到第四链表2-2中,新加入的时间线数据总是位于链表头部。

如此,通过上述两组共计四个链表,即可评估出具有最高缓存价值的热点数据,从而提升缓存空间的实用性。

图6示出了本发明实施例数据缓存方法的实现流程示意图三;图7示出了本发明一应用示例根据负载优化策略对缓存空间进行优化的链表示意图。

参考图6,本发明实施例又提供了一种数据缓存方法,该方法包括:操作601,基于时间线按照查询粒度对查询数据进行热度评估,得到评估结果;操作602,根据所述评估结果确定对应时间线的待缓存数据;操作603,存储所述待缓存数据至缓存空间;操作604,当所述缓存空间达到缓存阈值时,基于数据热度对已存储数据进行数据更新;操作605,根据负载优化策略对缓存空间进行优化。

其中,操作601~604的具体实现过程与图4所示实施例中操作401~404的具体实现过程相类似,这里不再赘述。

随着新缓存数据的不断加入,在如图5所示的第二链表2-1中的时间线信息也会向链表尾部移动。这样在随后的一个时间点,这个被淘汰的时间线数据也会到达链表尾部,此时,当第一链表1-1的下一次的淘汰过程发生之后,这个位于第二链表2-1尾部的时间线信息也会从链表中移除,那时就再也不会有任何对该时间线信息的引用了。

假如加入这个时间线信息在被从第二链表2-1中移除之前,被再一次命中,由于这个时间线数据已经从缓存区域(即缓存空间)中移除了,所以系统还是必须再次从时序数据库中再读一次;但是由于这次命中,系统可以判断出,该时间点数据是一个刚刚从缓存区域中淘汰的数据,而不是第一次读取或者是很久之前读取过的一个时间线数据。

由此可以判断出,当前查询需要不断读取大量不同的时间线,而当前用于存储最近访问数据的内存空间分配不足。此时,需要根据负载优化策略对缓存空间进行优化。

具体地,在操作605,当所述存储空间中用于存储最近访问数据的内存空间分配不足时,增加第一链表1-1的长度,如将第一链表1-1的长度加1;当存储空间中用于存储最多命中数据的内存空间分配不足时,增加第三链表1-2的长度,如将第三链表1-2的长度减1,调整后的存储空间如图7所示。反之,对于第三链表1-2也同样适用,届时缓存区域的分配将自动向最近最多命中(访问)倾斜。

同理,基于上文所述数据缓存方法,本发明实施例还提供了一种数据缓存装置,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如下所述的操作步骤:操作201,基于时间线按照查询粒度对查询数据进行热度评估,得到评估结果;操作202,根据所述评估结果确定对应时间线的待缓存数据;操作203,存储所述待缓存数据至缓存空间。

进一步地,基于上文所述数据缓存方法,本发明实施例又提供了一种数据缓存装置,如图8所示,该装置80包括:热度评估模块801,用于基于时间线按照查询粒度对查询数据进行热度评估,得到评估结果,所述查询粒度包括时间窗和查询频率至少之一;确定模块802,用于根据所述评估结果确定对应时间线的待缓存数据;缓存模块803,用于存储所述待缓存数据至缓存空间。

根据本发明一实施方式,装置80还包括:数据更新模块804,用于当所述缓存空间达到缓存阈值时,基于数据热度对已存储数据进行数据更新。

根据本发明一实施方式,数据更新模块804,具体用于当用于存储最近最新加入到缓存空间的时间线数据的第一链表中被缓存的时间线数据逐渐填满后,位于所述第一链表尾部的时间线数据将被移动到第二链表中;当所述第一链表中的缓存数据被多次命中后,已命中的数据将被移动到第三链表中,所述第三链表中数据以命中次数进行排序;当第三链表中被缓存的时间线数据逐渐被填满后,位于所述第三链表尾部的时间线数据将被移动到第四链表中。

根据本发明一实施方式,装置80还包括:优化模块805,用于根据负载优化策略对缓存空间进行优化。

根据本发明一实施方式,优化模块805,具体用于当所述存储空间中用于存储最近访问数据的内存空间分配不足时,增加所述第一链表的长度;当所述存储空间中用于存储最多命中数据的内存空间分配不足时,增加所述第三链表的长度。

这里需要指出的是:以上对数据缓存装置实施例的描述,与前述图1至7所示的方法实施例的描述是类似的,具有同前述图1至7所示的方法实施例相似的有益效果,因此不做赘述。对于本发明数据缓存装置实施例中未披露的技术细节,请参照本发明前述图1至6所示的方法实施例的描述而理解,为节约篇幅,因此不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 一种数据缓存和上传装置及数据缓存和上传方法
  • 一种数据缓存方法和数据缓存装置
技术分类

06120112624069