一种数据缓存方法、装置及可读存储介质与流程

文档序号:30348731发布日期:2022-06-08 10:05阅读:59来源:国知局
一种数据缓存方法、装置及可读存储介质与流程

1.本技术涉及信息技术领域,特别是涉及一种数据缓存方法、装置及可读存储介质。


背景技术:

2.近年来,随着信息技术的飞速发展分层存储已成为了一种常见的存储方法,它将数据存储在具有不同特性(如性能、成本和容量)的不同存储介质上。把用户访问频率高的数据放置在高性能、小容量的存储介质中,把大量低频访问的数据放置在大容量、性能相对较低的存储介质中,在提高热点数据存储性能的同时,降低了存储成本。
3.现有的传统分层数据缓存方法为了保证数据一致性,将完整数据对象在缓存层和后端存储层之间迁移,数据迁移对性能影响较大,且数据只能直接写入数据对象所在的分层,如果数据对象在数据层,小io数据只能直接写入数据层或者数据对象迁移到缓存层后再写入缓存层,严重影响小io的性能。
4.鉴于上述技术,寻找一种能保证小io数据性能的数据缓存方法是本领域技术人员亟待解决的问题。


技术实现要素:

5.本技术的目的是提供一种数据缓存方法,以便于解决当前的小io数据只能直接写入数据层或者数据对象迁移到缓存层后再写入缓存层,严重影响小io的性能的问题。
6.为解决上述技术问题,本技术提供一种数据缓存方法,包括:
7.将客户端发送的原始数据以及所述原始数据的元数据存储至缓存池中;
8.在所述元数据中记录脏数据范围,脏数据为存储在所述缓存池中的所述原始数据;
9.当所述缓存池剩余缓存空间低于阈值时,将所述脏数据发送至数据池中,并更新所述元数据中的所述脏数据范围。
10.优选地,所述方法还包括:
11.接收到读取指令后,检测所述读取指令中的信息;
12.根据所述元数据,在所述缓存池与所述数据池中提取所述信息中对应的提取数据。
13.优选地,所述将所述脏数据发送至数据池中包括:
14.通过回刷的方式,将所述缓存池中的所述脏数据发送至数据池中。
15.优选地,所述在所述缓存池与所述数据池中提取所述信息中对应的提取数据包括:
16.检测所述缓存池中是否包含所述信息中对应的所述提取数据;
17.检测所述数据池中是否包含所述信息中对应的所述提取数据;
18.将所述缓存池和所述数据池读取的数据合并返回给读取端。
19.优选地,所述将所述客户端发送的原始数据以及所述原始数据的元数据存储至缓
存池中包括:
20.通过异步的方式将所述客户端发送的所述原始数据以及所述原始数据的元数据存储至缓存池。
21.优选地,所述方法还包括:
22.当所述原始数据或所述元数据在传输过程中出现丢失、错误时,进行报警。
23.为解决上述技术问题,本技术还提供一种数据缓存装置,包括:
24.存储模块,用于将客户端发送的原始数据以及所述原始数据的元数据存储至缓存池中;
25.记录模块,用于在所述元数据中记录脏数据范围,所述脏数据为存储在所述缓存池中的所述原始数据;
26.发送模块,用于当所述缓存池剩余缓存空间低于阈值时,将所述脏数据发送至数据池中,并更新所述元数据中的所述脏数据范围。
27.优选地,该装置还包括:
28.检测模块,用于接收到所述读取指令后,检测所述读取指令中的信息;
29.提取模块,用于根据所述元数据,在所述缓存池与所述数据池中提取所述信息中对应的提取数据。
30.优选地,该装置还包括:
31.报警模块,用于当所述原始数据或所述元数据在传输过程中出现丢失、错误时,进行报警。
32.为解决上述技术问题,本技术还提供一种数据缓存装置,包括存储器,用于存储计算机程序;
33.处理器,用于执行所述计算机程序时实现如上述的数据缓存方法的步骤。
34.本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的数据缓存方法的步骤。
35.本技术所提供的数据缓存方法,通过在存储数据以及该数据对应的元数据中加入脏数据范围设定,从而可以通过回刷的方式,当缓存层的剩余缓存空间不够时,即可以将部分数据发送至数据层,而对应的元数据仅仅改变其脏数据的范围设定,而相应的元数据依然存储在缓存层中,因此当相应的小io数据需要迁移时,只需要根据元数据中的脏数据范围即可直接进行迁移,与传统的分层数据缓存方法相比引入了元数据中对脏数据的定义,从而可以将脏数据与clean数据通过元数据指引进行分离,可以将新写入的数据直接写入缓存层,从而提高数据传输的性能。
36.本技术所提供的数据缓存装置以及计算机可读存储介质与上述数据缓存方法相对应,有益效果同上。
附图说明
37.为了更清楚地说明本技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
38.图1为本技术实施例提供的一种数据缓存方法流程图;
39.图2为本技术实施例提供的一种数据缓存装置示意图;
40.图3为本技术另一实施例提供的数据缓存装置的结构图。
具体实施方式
41.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本技术保护范围。
42.本技术的核心是提供一种数据缓存方法,以便于解决当前的小io数据只能直接写入数据层或者数据对象迁移到缓存层后再写入缓存层,严重影响小io的性能的问题。
43.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。
44.图1为本技术实施例提供的一种数据缓存方法流程图,如图1所示,该方法包括:
45.s10:将客户端发送的原始数据以及原始数据的元数据存储至缓存池中;
46.元数据(metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。
47.需要说明的是,本实施例中所提及的客户端即用户所发送数据的端口,可以是具体的本地服务器或网络云服务器等等,在本实施例中对于客户端发送原始数据的方法以及步骤不进行限定,例如,可以是同步发送也可以异步发送,对于原始数据可以是单个依次发送,也可以分批次多个同时发送,且在本实施例中,对于原始数据以及原始数据所对应的元数据的本身不进行限定,可以理解的是,对于缓存池而言,能同时存储上述所涉及的原始数据以及原始数据对应的元数据,且本实施例中对于缓存池本身的大小以及性质等等均不进行限定。
48.s11:在元数据中记录脏数据范围,脏数据为存储在缓存池中的原始数据;
49.从上述内容中可以理解,元数据是关于数据的组织、数据域及其关系的信息,简言之,元数据就是描述数据的数据,对数据及信息资源的描述性信息。因此,本实施例中的核心步骤即针对与元数据中对于其对应的原始数据的脏数据范围描述,即元数据中对应的存储在缓存池中的原始数据均为元数据中记录的脏数据。
50.需要说明的是,在数据库技术中,脏数据在临时更新(脏读)中产生。事务a更新了某个数据项x,但是由于某种原因,事务a出现了问题,于是要把a回滚。但是在回滚之前,另一个事务b读取了数据项x的值(a更新后),a回滚了事务,数据项恢复了原值。事务b读取的就是数据项x的就是一个“临时”的值,就是脏数据,在本实施例中对于元数据的记录脏数据范围的具体步骤以及相关方式等等均不进行限定。
51.s12:当缓存池剩余缓存空间低于阈值时,将脏数据发送至数据池中,并更新元数据中的脏数据范围。
52.在本实施例中对于阈值不进行限定,可以理解的是,因此缓存池的缓存空间容量较小,因此针对与该阈值,与缓存池本身的性质以及大小相关。
53.在本实施例中对于如何将脏数据发送至数据池中的具体方法步骤不进行限定,可以理解的是,针对与缓存池中存储的脏数据,可以采用统计其热度的方式,优先将访问较少的脏数据发送至数据池中进行缓存,以提高系统整体效率。且由于发送了部分元数据至数据池中,因此,元数据中记录的脏数据范围也进行相应改变。
54.本实施例所提供的数据缓存方法,通过在存储数据以及该数据对应的元数据中加入脏数据范围设定,从而可以通过回刷的方式,当缓存层的缓存空间不够时,即可以将部分数据发送至数据层,而对应的元数据仅仅改变其脏数据的范围设定,而相应的元数据依然存储在缓存层中,因此当相应的小io数据需要迁移时,只需要直接调用该数据的元数据即可直接进行迁移,与传统的分层数据缓存方法相比引入了元数据中对脏数据的定义,从而可以将脏数据与clean数据通过元数据指引进行分离,可以将新写入的数据直接写入缓存层,从而提高数据传输的性能。
55.考虑到在实际应用中需要针对于缓存池或数据池中存储的数据进行读取,在此提出优选方案,该方法还包括:
56.接收到读取指令后,检测读取指令中的信息;
57.根据元数据,在缓存池与数据池中提取信息中对应的提取数据。
58.可以理解的是,读取指令即与存储指令对应,读取存储数据的指令,需要说明的是,读取指令的发送对象并非仅包含存储该数据时相应的客户端,也可以是其它用户,或者其它外部插件进行相应读取,在本实施例中,对于发送读取指令的具体对象不进行限定,同时,针对于该指令包含的读取信息也不进行限定,可以理解的是,读取指令可以同时读取多个数据,例如a数据与b数据分别是分两次缓存到缓存池中,但一条读取指令可以同时读取a数据与b数据,即便a数据与b数据中某一个发送至了数据池中,也可以根据缓存池中的元数据进行相应的调取。
59.本实施例中提出了通过接收到读取指令后,检测信息,并且根据缓存池中的元数据提取信息中对应的提取数据,从而无需分别对数据池以及缓存池进行读取,简化了读取的步骤。
60.在上述实施例中,对于如何将脏数据发送至数据池中未进行限定,在此提出优选方案将脏数据发送至数据池中包括:
61.通过回刷的方式,将缓存池中的脏数据发送至数据池中。
62.需要说明的是,回刷即将数据通过刷新的方式下发至数据池中,从而可以快捷对缓存池中的缓存空间进行相应的释放,保证了缓存池中的缓存空间的及时调整。
63.上述实施例中,未对如何提取相应的提取数据进行限定,在此提出优选方案,在缓存池与数据池中提取信息中对应的提取数据包括:
64.检测缓存池中是否包含信息中对应的提取数据;
65.检测数据池中是否包含信息中对应的提取数据;
66.将缓存池和数据池读取的数据合并返回给读取端。
67.需要说明的是,本实施例中通过检测缓存池与数据池中是否均包含相应的提取数据,从而将读取到的数据进行合并后返回给读取的端口,保证了数据的完整性,相比于将数据池中的数据传输到缓存池中进行提取,提高了提取的效率。
68.上述实施例中对于如何缓存数据未进行相应限定,在此提出优选方案,将客户端
发送的原始数据以及原始数据的元数据存储至缓存池中包括:
69.通过异步的方式将客户端发送的原始数据以及原始数据的元数据存储至缓存池。
70.异步双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,同时在结束时有停止位。异步的另外一种含义是计算机多线程的异步处理。与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。
71.在本实施例中异步传输表示在发送数据相应的字符时,所发送的字符之间的时间间隔可以是任意的。通过异步传输的方式无需保证多个数据同时发送的顺序,从而提高了数据传输的效率。
72.考虑到在数据传输中会由于网络,配置等情况出现传输失败的情况,在此提出优选方案,该方法还包括:
73.当原始数据或元数据在传输过程中出现丢失、错误时,进行报警。
74.需要说明的是,本实施例中对于报警的具体方式不进行限定,可以是通过向客户端反馈相应信息,或通过外接装置进行相应报警处理,且对于如何检测原始数据与元数据的传输过程中的丢失及错误等等情况,可以通过相应的数据比对,或者进行数据模拟检测从而验证数据的完整性的方式,在本实施例中不进行限定。
75.本实施例中通过在原始数据与元数据传输出现错误时,进行报警以便于及时进行相应的处理,保证了数据的安全性以及完整性。
76.在上述实施例中,对于数据缓存方法进行了详细描述,本技术还提供数据缓存装置对应的实施例。需要说明的是,本技术从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
77.图2为本技术实施例提供的一种数据缓存装置示意图,该装置包括:
78.存储模块10,用于将客户端发送的原始数据以及原始数据的元数据存储至缓存池中;
79.记录模块11,用于在元数据中记录脏数据范围,脏数据为存储在缓存池中的原始数据;
80.发送模块12,用于当缓存池剩余缓存空间低于阈值时,将脏数据发送至数据池中,并更新元数据中的脏数据范围。
81.在此提供一种优选方案,该装置还包括:
82.检测模块,用于接收到读取指令后,检测读取指令中的信息;
83.提取模块,用于根据元数据,在缓存池与数据池中提取信息中对应的提取数据。
84.在此提供一种优选方案,该装置还包括:
85.回刷存储模块,用于将回刷后的脏数据存储至备用数据库中。
86.在此提供一种优选方案,该装置还包括:
87.报警模块,用于当原始数据或元数据在传输过程中出现丢失、错误时,进行报警。
88.由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例及其对应的有益效果请参见方法部分的实施例的描述,这里暂不赘述。
89.图3为本技术另一实施例提供的数据缓存装置的结构图,如图3所示,数据缓存装置包括:存储器20,用于存储计算机程序;
90.处理器21,用于执行计算机程序时实现如上述实施例中所提到的数据缓存方法的步骤。
91.本实施例提供的数据缓存装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
92.其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理(digital signal processor,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(central processing unit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有图像处理器(graphics processing unit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(artificial intelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。
93.存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的数据缓存方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括windows、unix、linux等。数据203可以包括但不限于上述数据缓存方法中涉及的数据等。
94.在一些实施例中,数据缓存装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
95.本领域技术人员可以理解,图3中示出的结构并不构成对数据缓存装置的限定,可以包括比图示更多或更少的组件。
96.本技术实施例提供的数据缓存装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:上述实施例中涉及的数据缓存方法。
97.由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例及其对应的有益效果请参见方法部分的实施例的描述,这里暂不赘述。
98.最后,本技术还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
99.可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
100.由于可读存储介质部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例及其对应的有益效果请参见方法部分的实施例的描述,这里暂不赘述。
101.以上对本技术所提供的一种数据缓存方法、装置及可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
102.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1