System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于数据缓存的查询加速方法、装置、介质及电子设备制造方法及图纸_技高网

基于数据缓存的查询加速方法、装置、介质及电子设备制造方法及图纸

技术编号:40430524 阅读:8 留言:0更新日期:2024-02-20 22:52
本申请涉及一种基于数据缓存的查询加速方法、装置、介质及电子设备,涉及数据缓存技术领域,其中方法包括:获取待缓存数据,并在内存缓存达到上限情况下,确定所述待缓存数据在磁盘中对应的目标缓存目录;从所述目标缓存目录对应的空闲区链表中选取可用FreeSpace,并将所述待缓存数据写入至所述可用FreeSpace中的可用数据块,得到已缓存数据块;若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标FreeSpace;在所述目标FreeSpace处于所述目标缓存目录对应的非空闲区链表时,将所述目标FreeSpace从所述非空闲区链表移动至所述空闲区链表中。本申请具有提升数据块的分配和回收的效率的效果。

【技术实现步骤摘要】

本申请涉及数据缓存,具体涉及一种基于数据缓存的查询加速方法、装置、介质及电子设备


技术介绍

1、在当前存算分离、湖仓一体等潮流下,云存储系统凭借其高可用、低成本等优势,成为许多业务进行数据存储的首选。其中,云存储系统属于远端存储系统。它是将数据保存到由第三方维护的存储系统,而不是存储信息到计算机的硬盘驱动器或其他本地存储设备。但是由于远端存储系统在访问延迟的问题较为明显,导致远端查询数据速度缓慢。基于此,不少系统通常会通过本地缓存的方式来进行远端查询加速。

2、目前,一种常见的本地缓存的模式为:先将数据缓存储到内存中,内存缓存达到上限后,再通过磁盘进行数据缓存,其中,磁盘缓存过程中,缓存目录中的内容会以大文件的形式进行存储,再配合bitmap结构进行磁盘空间的管理,当磁盘空间较大时,导致数据块的分配和回收复杂度较高,效率较低。


技术实现思路

1、为了提升数据块的分配和回收的效率,本申请提供一种基于数据缓存的查询加速方法、装置、介质及电子设备。

2、在本申请的第一方面提供了一种基于数据缓存的查询加速方法,具体包括:

3、获取待缓存数据,并在内存缓存达到上限情况下,确定所述待缓存数据在磁盘中对应的目标缓存目录;

4、从所述目标缓存目录对应的空闲区链表中选取可用freespace,并将所述待缓存数据写入至所述可用freespace中的可用数据块,得到已缓存数据块,所述空闲区链表中包括至少一个可用freespace,所述可用freespace包括至少一个可用数据块;

5、若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标freespace;

6、在所述目标freespace处于所述目标缓存目录对应的非空闲区链表时,将所述目标freespace从所述非空闲区链表移动至所述空闲区链表中,所述非空闲区链表包括至少一个非可用freespace。

7、通过采用上述技术方案,当有数据需要进行本地缓存并且内存已满时,将待缓存数据在磁盘中进行缓存,需要进行数据块的分配,那么先从目标缓存目录对应的空闲区链表中选取可以分配可用数据块的可用freespace,进而快速从中确定可用数据块并分配给此待缓存数据;如果存在已分配的数据块需要回收,那么溯源待回收数据块所属的目标freespace,即,确定之前分配此待回收数据块的可用freespace。如果目标freespace属于非空闲区链表,说明其在回收此待回收数据块之前不存在可用数据块,那么回收后此目标freespace变为可分配可用数据块的可用freespace,将其从非空闲区链表移动到空闲区链表,实时更新非空闲区链表和空闲区链表。从而通过空闲区链表和非空闲区链表的方式,提升数据块的分配和回收的效率。

8、可选的,所述若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标freespace,具体包括:

9、若各所述已缓存数据块中存在待回收数据块,则确定freespace数组的起始地址,所述freespace数组包括所述空闲区链表与所述非空闲区链表中所有freespace;

10、根据所述待回收数据块的标识符和所述起始地址,确定目标地址;

11、根据所述目标地址,从所述freespace数组中确定目标freespace。

12、通过采用上述技术方案,确定空闲区链表与非空闲区链表中所有freespace组成的freespace数组的起始地址后,进一步确定待回收数据块在freespace数组对应的所有数据块的标识符,根据起始地址和标识符,得到对待回收数据块进行地址定位,确定其目标地址,最后将目标地址对应的freespace确定为目标freespace,即,分配此待回收数据块的freespace,从而简单快速地确定待回收数据块所来源的freespace,方便后续高效回收。

13、可选的,所述将所述待缓存数据写入至所述可用freespace中的可用数据块,得到已缓存数据块之后,还包括:

14、将已缓存数据块拆分为若干个slice段;

15、从各所述slice段中确定已读取slice段,并计算所述已读取slice段的checksum值;

16、将所述已读取slice段对应的实际读取数据读取至内存,并根据所述checksum值对所述实际读取数据进行数据校验。

17、通过采用上述技术方案,从已缓存数据块中确定已读取slice段,并且只针对已读取slice段计算checksum值,即,在已缓存数据块对应的缓存数据被读取时,按照slice段为单位进行读取,将实际读取的slice段作为校验对象,而不是将整个缓存数据作为校验对象,从而在支持数据校验的同时,还能尽可能避免整个对象读取导致的读放大问题。

18、可选的,所述方法还包括:

19、确定所述磁盘对应的lru链表,所述lru链表中存储有至少一个缓存节点;

20、通过预设的哨兵节点,按照api优先级将所述lru链表划分成若干个链表段,所述api优先级为api接口传入参数的优先级,所述api优先级越低,对应的链表段在所述lru链表中越靠前,各所述链表段中的缓存节点已按照lru进行排序;

21、若存在待插入所述lru链表中的目标节点,则通过各所述哨兵节点中所述目标节点对应的目标哨兵节点,将所述目标节点插入至所述目标哨兵节点对应的链表段中。

22、通过采用上述技术方案,通过哨兵节点的方式,能够较为简单地将lru链表划分为优先级不同的链表段,无需繁琐地创建多个优先级不同的lru链表,进而使得lru链表中的数据能按不同优先级进行淘汰删除。另外,目标哨兵节点还能便捷准确地将目标节点,即,新缓存节点插入到对应优先级的链表段中,无需后续再重复进行优先级划分。

23、可选的,所述按照api优先级将所述lru链表拆分成若干个链表段之后,还包括:

24、在需要淘汰缓存数据的情况下,按照从前往后的顺序,对所述lru链表中缓存节点对应的缓存数据进行淘汰。

25、通过采用上述技术方案,由于lru链表中每个链表段中的缓存节点已按照lru进行排序,即,最近被访问的数据将具有更高的优先级,排序靠后,而较早被访问的数据则具有较低的优先级,排序靠后。而且lru链表中各个链表段也是按照api优先级从低到高进行排序。使得在对不同优先级的缓存数据按照lru淘汰时,直接对lru链表从前往后进行淘汰即可,无需跨越不同优先级的lru链表,进而提高缓存数据淘汰效率。

26、可选的,所述方法还包括:

27、通过std::map存储已缓存数据对应的缓存元数据,得到存储集合,所述缓存元数据包括到期时间,所述存储集合中,到期时间越靠后,对应的缓存元数据排序越靠后;

28、在检查各所述已缓存数据中的过期数据时,若所述存储集合中的第一个缓存元数据的到期时间本文档来自技高网...

【技术保护点】

1.一种基于数据缓存的查询加速方法,其特征在于,所述方法包括:

2.根据权利要求1所述的基于数据缓存的查询加速方法,其特征在于,所述若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标FreeSpace,具体包括:

3.根据权利要求1所述的基于数据缓存的查询加速方法,其特征在于,所述将所述待缓存数据写入至所述可用FreeSpace中的可用数据块,得到已缓存数据块之后,还包括:

4.根据权利要求1所述的基于数据缓存的查询加速方法,其特征在于,所述方法还包括:

5.根据权利要求4所述的基于数据缓存的查询加速方法,其特征在于,所述按照API优先级将所述LRU链表拆分成若干个链表段之后,还包括:

6.根据权利要求1所述的基于数据缓存的查询加速方法,其特征在于,所述方法还包括:

7.根据权利要求6所述的基于数据缓存的查询加速方法,其特征在于,所述缓存元数据还包括缓存标识,所述通过std::map存储已缓存数据对应的缓存元数据,得到存储集合之后,还包括:

8.一种基于数据缓存的查询加速装置,其特征在于,包括:

9.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序被处理器加载并执行时,采用了权利要求1-7中任一项所述的方法。

10.一种电子设备,包括存储器、处理器及存储在存储器中并能够在处理器上运行的计算机程序,其特征在于,所述处理器加载并执行计算机程序时,采用了权利要求1-7中任一项所述的方法。

...

【技术特征摘要】

1.一种基于数据缓存的查询加速方法,其特征在于,所述方法包括:

2.根据权利要求1所述的基于数据缓存的查询加速方法,其特征在于,所述若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标freespace,具体包括:

3.根据权利要求1所述的基于数据缓存的查询加速方法,其特征在于,所述将所述待缓存数据写入至所述可用freespace中的可用数据块,得到已缓存数据块之后,还包括:

4.根据权利要求1所述的基于数据缓存的查询加速方法,其特征在于,所述方法还包括:

5.根据权利要求4所述的基于数据缓存的查询加速方法,其特征在于,所述按照api优先级将所述lru链表拆分成若干个链表段之后,还包括:

6.根据权利...

【专利技术属性】
技术研发人员:杨关锁
申请(专利权)人:北京镜舟科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1