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

数据存储和数据查询方法、装置、设备及存储介质

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


数据存储和数据查询方法、装置、设备及存储介质

技术领域

本申请涉及但不限于数据缓存技术领域,尤其涉及一种数据存储和数据查询方法、装置、设备及存储介质。

背景技术

缓存技术对提高存储系统的读取性能、减少应用程序的响应时间起到至关重要的作用。相关技术中缓存方案大多是基于内存实现,存储空间有限,通常无法缓存所有数据,当查询数据不在内存中,只能访问分布式存储系统中后端持久化存储节点,然而,依据分布式存储系统自身的存储机制对数据进行查询的过程中,数据响应较慢,难以适应数据查询需求。

发明内容

有鉴于此,本申请实施例至少提供一种数据存储和数据查询方法、装置、设备、存储介质。

本申请实施例的技术方案是这样实现的:

一方面,本申请实施例提供一种数据存储方法,所述方法包括:

获取分布式缓存系统中目标数据的数据热度;所述目标数据在所述分布式缓存系统中存储有多个数据副本,所述分布式缓存系统包括存储集群和第一缓存集群;

基于所述数据热度,将所述多个数据副本中的目标数据副本在所述第一缓存集群和所述存储集群之间动态迁移;所述多个数据副本中的其他数据副本持久化存储于所述存储集群。

另一方面,本申请实施例提供一种数据查询方法,所述方法包括:

响应于针对目标数据的查询事件,向分布式缓存系统中的第一缓存集群发送第一查询请求,并接收第一查询反馈;

在所述第一查询反馈表征所述第一缓存集群中不存在所述目标数据的情况下,向所述分布式缓存系统中的存储集群发送第二查询请求,并接收第二查询反馈;

其中,所述目标数据在所述分布式缓存系统中存储有多个数据副本,所述多个数据副本中的目标数据副本在所述第一缓存集群和所述存储集群之间基于所述目标数据的热度动态迁移,所述多个数据副本中的其他数据副本持久化存储于所述存储集群。

又一方面,本申请实施例提供一种多层存储系统,所述多层存储系统包括缓存控制器和分布式缓存系统,所述分布式缓存系统包括存储集群和第一缓存集群,其中:所述分布式缓存系统用于存储目标数据的多个数据副本;所述缓存控制器用于控制所述多个数据副本中的目标数据副本在所述第一缓存集群和所述存储集群之间基于所述目标数据的数据热度动态迁移,所述多个数据副本中的其他数据副本持久化存储于所述存储集群。

在一些实施例中,所述缓存控制器还用于在所述目标数据副本存储于所述存储集群,且所述数据热度超过第一阈值的情况下,控制所述目标数据副本从所述存储集群迁移至所述第一缓存集群。

在一些实施例中,所述第一缓存集群包括多个第一缓存节点;所述缓存控制器还用于向所述分布式缓存系统中的第一控制节点发送第一迁移指令;

所述第一控制节点用于基于第一哈希函数确定所述目标数据对应的第一哈希值;基于所述第一哈希值在所述多个第一缓存节点中确定第一目标缓存节点;将所述目标数据副本从所述存储集群中迁移至所述第一目标缓存节点。

在一些实施例中,所述基于所述第一哈希值在所述多个第一缓存节点中确定第一目标缓存节点,包括:

基于所述第一哈希值,确定所述目标数据在第一哈希环中的第一数据位置;所述第一哈希环包括每一所述第一缓存节点对应的管理区域;

将所述第一数据位置落入的管理区域对应的第一缓存节点作为所述第一目标缓存节点。

在一些实施例中,所述缓存控制器还用于在所述目标数据副本存储于所述第一缓存集群,且所述数据热度小于第二阈值的情况下,控制所述目标数据副本从所述第一缓存集群迁移至所述存储集群。

在一些实施例中,所述存储集群包括多个存储节点;所述缓存控制器还用于发送第二迁移指令至所述分布式缓存系统中的第一控制节点;

所述第一控制节点用于基于所述存储集群自身的存储机制,在所述多个存储节点中确定目标存储节点;将所述目标数据副本从第一缓存集群迁移至所述目标存储节点。

在一些实施例中,所述缓存控制器还用于在所述目标数据的数据热度超过第一阈值的情况下,控制所述目标数据的关联数据的数据副本从所述存储集群迁移至所述第一缓存集群。

在一些实施例中,所述多层存储系统还包括第二缓存集群;所述缓存控制器还用于响应于针对所述目标数据的访问事件,控制所述目标数据缓存至第二缓存集群。

在一些实施例中,所述第二缓存集群包括多个第二缓存节点;所述缓存控制器还用于向所述第二缓存集群中的第二控制节点发送第一缓存指令;

所述第二控制节点,用于基于第二哈希函数确定所述目标数据对应的第二哈希值;基于所述第二哈希值在所述多个第二缓存节点中确定第二目标缓存节点;将所述目标数据缓存至所述第二目标缓存节点。

在一些实施例中,所述基于所述第二哈希值在所述多个第二缓存节点中确定第二目标缓存节点,包括:

基于所述第二哈希值,确定所述目标数据在第二哈希环中的第二数据位置;所述第二哈希环包括每一所述第二缓存节点对应的管理区域;

将所述第二数据位置落入的管理区域对应的第二缓存节点作为所述第二目标缓存节点。

在一些实施例中,所述多层存储系统还包括可编程交换机集群;所述第二缓存集群响应于所述第二目标缓存节点的过载事件,向所述缓存控制器发送第二缓存指令;

所述缓存控制器,还用于开启所述可编程交换机集群中与所述第二目标缓存节点连接的目标可编程交换机的缓存功能;将所述目标数据缓存至所述目标可编程交换机。

在一些实施例中,所述分布式缓存系统还包括第一控制节点;

所述第一控制节点用于响应于针对所述目标数据的数据更新请求,将数据更新操作写入日志;所述数据更新请求携带更新后的目标数据;将所述目标可编程交换机中的目标数据失效,并基于所述更新后的目标数据更新所述第二目标缓存节点中的目标数据;

所述分布式缓存系统还用于基于所述日志更新所述目标数据在所述分布式缓存系统中存储的多个数据副本。

又一方面,本申请实施例提供一种数据存储装置,包括:获取模块,用于获取分布式缓存系统中目标数据的数据热度;所述目标数据在所述分布式缓存系统中存储有多个数据副本,所述分布式缓存系统包括存储集群和第一缓存集群;迁移模块,用于基于所述数据热度,将所述多个数据副本中的目标数据副本在所述第一缓存集群和所述存储集群之间动态迁移;所述多个数据副本中的其他数据副本持久化存储于所述存储集群。

又一方面,本申请实施例提供一种数据查询装置,包括:查询模块,用于响应于针对目标数据的查询事件,向分布式缓存系统中的第一缓存集群发送第一查询请求,并接收第一查询反馈;所述查询模块,还用于在所述第一查询反馈表征所述第一缓存集群中不存在所述目标数据的情况下,向所述分布式缓存系统中的存储集群发送第二查询请求,并接收第二查询反馈;其中,所述目标数据在所述分布式缓存系统中存储有多个数据副本,所述多个数据副本中的目标数据副本在所述第一缓存集群和所述存储集群之间基于所述目标数据的热度动态迁移,所述多个数据副本中的其他数据副本持久化存储于所述存储集群。

再一方面,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。

又一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。

基于本申请提供的上述实施例,通过监测目标数据的数据热度,将目标数据对应的多个数据副本中的目标数据副本在所述第一缓存集群和所述存储集群之间动态迁移;这样,在目标数据为热数据的情况下,可以将该目标数据的目标数据副本迁移至第一缓存集群中,进而在查询目标数据的过程中,可以直接从第一缓存集群中获取目标数据,加快了数据查询的响应速度,提升了数据的整体缓存命中率;同时,由于通过迁移目标数据副本的方式替换相关技术中复制目标数据副本,这样,简化了分布式缓存系统的数据一致性的维护压力。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请的技术方案。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。

图1为本申请实施例提供的一种数据存储方法的实现流程示意图一;

图2为本申请实施例提供的一种数据存储方法的实现流程示意图二;

图3为本申请实施例提供的一种数据存储方法的实现流程示意图三;

图4为本申请实施例提供的一种数据存储方法的实现流程示意图四;

图5为本申请实施例提供的一种数据查询方法的实现流程示意图一;

图6为本申请实施例提供的一种数据查询方法的实现流程示意图二;

图7为本申请实施例提供的一种数据查询方法的实现流程示意图三;

图8A为本申请实施例提供的一种多层存储系统的系统架构示意图一;

图8B为本申请实施例提供的一种多层存储系统的系统架构示意图二;

图8C为本申请实施例提供的一种多层存储系统的系统架构示意图三;

图9为本申请实施例提供的数据热度感知的多层存储结构的一个可选的结构示意图;

图10为本申请实施例提供的基于数据热度感知的数据查询方法的实现流程示意图;

图11为本申请实施例提供的基于所述数据热度感知的多层存储结构的数据更新方法的实现流程示意图;

图12为本申请实施例提供的数据热度感知的多层存储结构的一个可选的结构示意图;

图13为本申请实施例提供的SSD缓存集群的数据查询方法的实现流程示意图;

图14为本申请实施例提供的数据位置确定方法的实现流程示意图;

图15为本申请实施例提供的数据位置示意图;

图16为本申请实施例提供的数据热度感知的副本迁移机制流程示意图;

图17为本申请实施例提供的初始状态下数据C的存储位置示意图;

图18为本申请实施例提供的频繁访问下数据C的存储位置示意图;

图19为本申请实施例提供的迁移后数据C和关联数据的存储位置示意图;

图20为本申请实施例提供的最热数据C的查询流程示意图;

图21为本申请实施例提供的热数据D的查询流程示意图;

图22为本申请实施例提供的热数据关联数据G的查询流程示意图;

图23为本申请实施例提供的冷数据A的查询流程示意图;

图24为本申请实施例提供的数据C的数据更新方法的流程示意图;

图25为本申请实施例提供的一种数据存储装置的组成结构示意图;

图26为本申请实施例提供的一种数据查询装置的组成结构示意图;

图27为本申请实施例提供的一种计算机设备的硬件实体示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请的目的,不是旨在限制本申请。

国际数据公司(IDC)预计,到2025年全球数据总量将达到175ZB,海量数据存储和访问将面临较大挑战。缓存技术对提高存储系统的读取性能、减少应用程序的响应时间起到至关重要的作用。但已有缓存技术还存在一些问题和挑战:

(1)现有的缓存方案大多是基于内存实现,内存读写速度快,但相比机械硬盘价格较贵且存储空间有限,通常无法缓存所有数据。当查询数据不在内存中,只能访问分布式存储系统中的数据副本,增加了响应时间。

(2)由于内存的易失性,当缓存节点失效后所有缓存数据都会丢失。此时数据查询请求将会被转发到后端持久化存储服务器,在分布式存储系统中对数据进行查询和对机械硬盘寻址会带来更高的响应延迟。

(3)当前的分布式缓存系统大多没有考虑缓存内容的热度差异,以及缓存节点之间负载的不均衡问题。缓存系统缓存热点数据提供查询服务的。尽管缓存系统中的数据都是热数据,但不同数据的热度并不一致。如果有大量针对某个非常热的数据的并发访问,会造成缓存该热数据的缓存节点过载以及网络阻塞,导致服务不可用。

(4)分布式存储系统与缓存之间的数据一致性面临挑战。在分布式存储系统中,为了提供数据的可靠性、可用性和读取的并发性,通常以多副本形式对数据进行持久化存储。然而这样会引入同一数据的多个副本之间数据的一致性的开销。

尽管存储对象和组织管理方式不同,目前主流分布式存储系统都提供三个数据副本和相应数据一致性方案。目前缓存系统中,主流的数据缓存方案有三种:一是将持久化存储的数据复制一份到内存,以内存中的数据副本提供该数据的查询服务。这种数据缓存方案简单,但若缓存节点无法访问时,数据的查询请求只能通过持久化存储系统提供,缺乏容错能力;二是在缓存系统提供同一数据的多个副本,这种方案可以避免单副本缓存方案的单点故障,提升数据访问的性能。但这种多副本缓存方案引入了内存中多副本之间的一致性问题,并使同一数据的内存多副本与持久化存储中多副本之间的一致性维护更为复杂。第三种数据缓存方案是使用类似纠删码的数据编码方案,通过对缓存数据进行编码,提高缓存数据的容错能力,避免了数据多副本的一致性问题。但这种方案引入了校验数据的存储和计算开销,以及通过校验数据计算原始数据的计算开销。

本申请实施例提供一种数据存储方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、移动设备(例如移动电话、便携式视频播放器、个人数字助理、专用消息设备、便携式游戏设备)等具备数据处理能力的设备。在本申请实施例中,上述计算机设备为多层存储系统中的缓存控制器。

图1为本申请实施例提供的一种数据存储方法的实现流程示意图一,如图1所示,该方法包括如下步骤S101至步骤S102:

步骤S101、获取分布式缓存系统中目标数据的数据热度;所述目标数据在所述分布式缓存系统中存储有多个数据副本,所述分布式缓存系统包括存储集群和第一缓存集群。

在一些实施例中,该目标数据的数据热度与预设周期内该目标数据被访问的情况相关。其中,可以通过统计该预设周期内所述目标数据被访问的访问次数,基于该访问次数,确定所述目标数据的数据热度;还可以统计该预设周期内所述目标数据被访问的访问时间,基于该访问时间,确定所述目标数据的数据热度;当然,还可以采用其他数据热度确定方法,本申请对此不做限定。

在一些实施例中,该分布式缓存系统可以存储目标数据对应的多个数据副本,并且采用该分布式缓存系统自身的多副本一致性维护机制维护数据副本之间的一致性。

在一些实施例中,该分布式缓存系统可以部署分布式存储软件,如HDFS文件系统等。

步骤S102、基于所述数据热度,将所述多个数据副本中的目标数据副本在所述第一缓存集群和所述存储集群之间动态迁移;所述多个数据副本中的其他数据副本持久化存储于所述存储集群。

在一些实施例中,所述第一缓存集群中第一缓存节点的数据读写性能高于所述存储集群中存储节点的数据读写性能。

在一些实施例中,在该数据热度表征所述目标数据从冷数据变化为热数据的情况下,可以将所述目标数据副本从存储集群中迁移至第一缓存集群中。

在一些实施例中,在该数据热度表征所述目标数据从热数据变化为冷数据的情况下,可以将所述目标数据副本从第一缓存集群迁移至存储集群中。

需要说明的是,在该目标数据副本从存储集群中迁移至第一缓存集群中,或,从第一缓存集群迁移至存储集群中之后,仍然采用该分布式缓存系统自身的多副本一致性维护机制维护数据副本之间的一致性。

在一些实施例中,多个数据副本中的其他数据副本的存储位置相对固定,即持久化存储于所述存储集群中,相对应的,目标数据副本的存储位置随数据热度而变化,可以存储于存储集群中也可以存储于第一缓存集群中。

示例性的,该存储集群可以为HDD存储集群,该第一缓存集群可以为SSD缓存集群。

基于本申请提供的上述实施例,通过监测目标数据的数据热度,将目标数据对应的多个数据副本中的目标数据副本在所述第一缓存集群和所述存储集群之间动态迁移;这样,在目标数据为热数据的情况下,可以将该目标数据的目标数据副本迁移至第一缓存集群中,进而在查询目标数据的过程中,可以直接从第一缓存集群中获取目标数据,加快了数据查询的响应速度,提升了数据的整体缓存命中率;同时,由于通过迁移目标数据副本的方式替换相关技术中复制目标数据副本,这样,简化了分布式缓存系统的数据一致性的维护压力。

图2是本申请实施例提供的数据存储方法的一个可选的流程示意图二,该方法可以由计算机设备的处理器执行。基于图1,图1中的步骤S102可以更新为步骤S201至步骤S202,将结合图2示出的步骤进行说明。

步骤S201、在所述目标数据副本存储于所述存储集群,且所述数据热度超过第一阈值的情况下,将所述目标数据副本从所述存储集群迁移至所述第一缓存集群。

其中,在该数据热度超过第一阈值的情况下,表征该目标数据从冷数据变为了热数据,进而,将该目标数据的目标数据副本从存储集群中迁移至第一缓存集群中。此时,该目标数据的目标数据副本存储于第一缓存集群中,目标数据的其他数据副本依然存储于存储集群中。同时,分布式缓存系统维护该目标数据副本和其他数据副本之间的一致性。

在一些实施例中,所述第一缓存集群包括多个第一缓存节点;可以通过步骤S2011至步骤S2013实现上述将所述目标数据副本从所述存储集群迁移至所述第一缓存集群。

步骤S2011、基于第一哈希函数确定所述目标数据对应的第一哈希值。

步骤S2012、基于所述第一哈希值在所述多个第一缓存节点中确定第一目标缓存节点。

在一些实施例中,上述步骤S2011至步骤S2012先通过预先设置的第一哈希函数计算该目标数据对应的第一哈希值,之后,可以获取每一第一缓存节点对应的第一节点哈希值,基于该第一哈希值和每一第一节点哈希值之间的数值关系,在多个第一缓存节点中确定第一目标缓存节点。

在另一些实施例中,上述步骤S2012可以通过以下方式实现:基于所述第一哈希值,确定所述目标数据在第一哈希环中的第一数据位置;所述第一哈希环包括每一所述第一缓存节点对应的管理区域;将所述第一数据位置落入的管理区域对应的第一缓存节点作为所述第一目标缓存节点。

其中,可以预先构建该第一哈希环,该第一哈希环包括预设数值个位置,其中,第一哈希环的起点是0,终点是为(预设数值-1),且起点与终点相连,示例性的,该预设数值可以设置为2^32。

在一些实施例中,可以预先计算每一第一缓存节点对应的管理区域,包括:针对每一第一缓存节点,基于第一哈希函数,确定该第一缓存节点的IP地址对应的第一节点哈希值;基于该第一哈希环包括的位置数量,对所述第一节点哈希值进行取余,得到第一节点位置数据;基于该第一节点位置数据确定该第一缓存节点在第一哈希环中的第一节点位置;按照预设顺序,将该第一缓存节点的第一节点位置到下一个第一缓存节点的第一节点位置之间的区域作为该第一缓存节点的管理区域。

在一些实施例中,上述基于所述第一哈希值,确定所述目标数据在第一哈希环中的第一数据位置,可以包括:基于该第一哈希环包括的位置数量,对所述第一哈希值进行取余,得到目标位置数据;基于该目标位置数据确定该目标数据在第一哈希环中的第一数据位置。

步骤S2013、将所述目标数据副本从所述存储集群中迁移至所述第一目标缓存节点。

其中,该目标数据副本被迁移至该第一缓存集群中的第一目标缓存节点中。

步骤S202、在所述目标数据副本存储于所述第一缓存集群,且所述数据热度小于第二阈值的情况下,将所述目标数据副本从所述第一缓存集群迁移至所述存储集群。

其中,在该数据热度小于第二阈值的情况下,表征该目标数据从热数据变为了冷数据,进而,将该目标数据的目标数据副本从第一缓存集群中迁移至存储集群中。此时,该目标数据的目标数据副本和其他数据副本均存储于存储集群中。同时,分布式缓存系统维护该目标数据副本和其他数据副本之间的一致性。

在一些实施例中,该第一阈值与该第二阈值可以相同,也可以不同。

在一些实施例中,所述存储集群包括多个存储节点;可以通过步骤S2021至步骤S2022实现上述将所述目标数据副本从所述第一缓存集群迁移至所述存储集群。

步骤S2021、基于所述存储集群自身的存储机制,在所述多个存储节点中确定目标存储节点。

步骤S2022、将所述目标数据副本从第一缓存集群迁移至所述目标存储节点。

在一些实施例中,所述方法还可以包括:在所述目标数据的数据热度超过第一阈值的情况下,将所述目标数据的关联数据的数据副本从所述存储集群迁移至所述第一缓存集群。

其中,在统计目标数据的数据热度的过程中,还会同时计算数据之间的关联性,并将与目标数据的关联性超过预设关联度阈值的数据作为目标数据的关联数据。与目标数据相同的是,该关联数据在分布式缓存系统中也存在多个数据副本,其中,上述将所述目标数据的关联数据的数据副本从所述存储集群迁移至所述第一缓存集群,包括:将关联数据对应的目标数据副本从存储集群迁移至所述第一缓存集群,关联数据对应的其他数据副本持久化存储于所述存储集群。

基于上述实施例,在目标数据的数据热度升高,成为热数据的情况下,可以将该目标数据对应的目标数据副本迁移至第一缓存集群中,同时,基于第一哈希函数在第一缓存集群中确定第一目标缓存节点用于缓存该目标数据副本。这样,在需要访问查询该目标数据的过程中,可以直接通过该第一哈希函数确定该目标数据副本在第一缓存集群中的位置,提升了数据查询的响应速度,提升了数据的整体缓存命中率。

图3是本申请实施例提供的数据存储方法的一个可选的流程示意图三,该方法可以由计算机设备的处理器执行。基于上述任一实施例,已基于图1为例,图1还可以包括步骤S301,将结合图3示出的步骤进行说明。

步骤S301、响应于针对所述目标数据的访问事件,将所述目标数据缓存至第二缓存集群。

其中,可以直接从第一缓存集群中查询该目标数据对应的目标数据副本,并将该目标数据副本缓存至第二缓存集群,以响应该目标数据的访问事件;在该第一缓存集群中不存在该目标数据对应的目标数据副本的情况下,在存储集群中查询该目标数据对应的任意一个数据副本,并将该数据副本缓存至第二缓存集群,以响应该目标数据的访问事件。需要说明的是,这里将目标数据缓存至第二缓存集群的过程是数据复制过程,与上述实施例中目标数据副本在第一缓存集群和存储集群中的迁移过程不同。

在一些实施例中,所述第二缓存集群包括多个第二缓存节点;可以通过步骤S3011至步骤S3013实现上述将所述目标数据缓存至第二缓存集群。

步骤S3011、基于第二哈希函数确定所述目标数据对应的第二哈希值。

其中,该第二哈希函数与该第一哈希函数不同。

步骤S3012、基于所述第二哈希值在所述多个第二缓存节点中确定第二目标缓存节点。

在一些实施例中,上述步骤S2011至步骤S2012先通过预先设置的第二哈希函数计算该目标数据对应的第二哈希值,之后,可以获取每一第二缓存节点对应的第二节点哈希值,基于该第二哈希值和每一第二节点哈希值之间的数值关系,在多个第二缓存节点中确定第二目标缓存节点。

在另一些实施例中,上述步骤S3012可以通过以下方式实现:基于所述第二哈希值,确定所述目标数据在第二哈希环中的第二数据位置;所述第二哈希环包括每一所述第二缓存节点对应的管理区域;将所述第二数据位置落入的管理区域对应的第二缓存节点作为所述第二目标缓存节点。

其中,可以预先构建该第二哈希环,该第二哈希环包括预设数值个位置,其中,第二哈希环的起点是0,终点是为(预设数值-1),且起点与终点相连,示例性的,该预设数值可以设置为2^32。

在一些实施例中,可以预先计算每一第二缓存节点对应的管理区域,包括:针对每一第二缓存节点,基于第二哈希函数,确定该第二缓存节点的IP地址对应的第二节点哈希值;基于该第二哈希环包括的位置数量,对所述第二节点哈希值进行取余,得到第二节点位置数据;基于该第二节点位置数据确定该第二缓存节点在第二哈希环中的第二节点位置;按照预设顺序,将该第二缓存节点的第二节点位置到下一个第二缓存节点的第二节点位置之间的区域作为该第二缓存节点的管理区域。

在一些实施例中,上述基于所述第二哈希值,确定所述目标数据在第二哈希环中的第二数据位置,可以包括:基于该第二哈希环包括的位置数量,对所述第二哈希值进行取余,得到目标位置数据;基于该目标位置数据确定该目标数据在第二哈希环中的第二数据位置。

步骤S3013、将所述目标数据缓存至所述第二目标缓存节点。

基于上述实施例,基于第二哈希函数在第二缓存集群中确定第二目标缓存节点用于缓存该目标数据。这样,在需要访问查询该目标数据的过程中,可以直接通过该第二哈希函数确定该目标数据在第二缓存集群中的位置,提升了数据查询的响应速度,提升了数据的整体缓存命中率。

在一些实施例中,所述方法还可以包括步骤S302至步骤S303。

步骤S302、响应于所述第二目标缓存节点的过载事件,开启与所述第二目标缓存节点连接的目标可编程交换机的缓存功能。

步骤S303、将所述目标数据缓存至所述目标可编程交换机。

在一些实施例中,上述第二缓存集群中的第二缓存节点可以通过可编程交换机集群连接到网络。可编程交换机集群由若干带有缓存能力的可编程交换机组成,每一第二缓存节点均与对应的可编程交换机连接。

在一些实施例中,上述过载事件可以包括以下情况:当不同第二缓存节点由于存储的热数据的热度不同,导致第二目标缓存节点之间负载不均衡的情况下;或者,由于第二目标缓存节点缓存了非常热的数据导致第二目标缓存节点过载或网络拥塞的情况下。由此,与第二目标缓存节点相连的目标可编程交换机将缓存该内存缓存节点中访问频次最高的数据,即最热数据HT。提高响应速度,降低第二目标缓存节点的负载。

图4是本申请实施例提供的数据存储方法的一个可选的流程示意图四,该方法可以由计算机设备的处理器执行。基于图3,所述方法还可以包括步骤S401至步骤S403。

步骤S401、响应于针对所述目标数据的数据更新请求,将数据更新操作写入日志;所述数据更新请求携带更新后的目标数据。

步骤S402、将所述目标可编程交换机中的目标数据失效,并基于所述更新后的目标数据更新所述第二目标缓存节点中的目标数据。

步骤S403、基于所述日志更新所述目标数据在所述分布式缓存系统中存储的多个数据副本。

基于上述实施例,在系统执行更新操作时,通过更新内存缓存节点中的数据和将更新操作写入日志,实现内存数据更新和持久化存储副本更新的解耦合,缩短写操作的响应时间。

本申请实施例提供一种数据存储方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、移动设备(例如移动电话、便携式视频播放器、个人数字助理、专用消息设备、便携式游戏设备)等具备数据处理能力的设备。在本申请实施例中,上述计算机设备为终端设备/客户端设备。

图5是本申请实施例提供的数据查询方法的一个可选的流程示意图一,该方法可以由计算机设备的处理器执行。将结合图5示出的步骤进行说明。

步骤S501、响应于针对目标数据的查询事件,向分布式缓存系统中的第一缓存集群发送第一查询请求,并接收第一查询反馈。

在一些实施例中,该客户端设备为数据查询请求的发起方。该第一查询请求可以携带目标数据的数据标识(key),在将该第一查询请求发送至分布式缓存系统中的第一缓存集群中之后,第一缓存集群可以基于该目标数据的数据标识查询自身缓存中是否存在对应的目标数据,并生成该第一查询反馈。

其中,该第一查询反馈可以表征第一缓存集群中不存在所述目标数据;该第一查询反馈还可以表征第一缓存集群中存在所述目标数据,此时,该第一查询反馈中携带该目标数据。

步骤S502、在所述第一查询反馈表征所述第一缓存集群中不存在所述目标数据的情况下,向所述分布式缓存系统中的存储集群发送第二查询请求,并接收第二查询反馈。

在一些实施例中,与第一查询请求相同,该第二查询请求也携带目标数据的数据标识(key),在将该第二查询请求发送至分布式缓存系统中的存储集群中之后,存储集群可以基于该目标数据的数据标识查询自身缓存中是否存在对应的目标数据,并生成该第二查询反馈。

在一些实施例中,所述目标数据在所述分布式缓存系统中存储有多个数据副本,所述多个数据副本中的目标数据副本在所述第一缓存集群和所述存储集群之间基于所述目标数据的热度动态迁移,所述多个数据副本中的其他数据副本持久化存储于所述存储集群。

相应地,由于存储集群中持久化存储有该目标数据对应的其他数据副本,因此,该第二查询反馈表征第一缓存集群中存在所述目标数据,并携带该目标数据。

图6是本申请实施例提供的数据查询方法的一个可选的流程示意图二,该方法可以由计算机设备的处理器执行。基于图5,图5中的步骤S501可以更新为步骤S601至步骤S603,将结合图6示出的步骤进行说明。

步骤S601、基于第一哈希函数确定所述目标数据对应的第一哈希值。

步骤S602、基于所述第一哈希值在所述多个第一缓存节点中确定第一目标缓存节点。

在一些实施例中,上述步骤S602可以通过以下方式实现:基于所述第一哈希值,确定所述目标数据在第一哈希环中的第一数据位置;所述第一哈希环包括每一所述第一缓存节点对应的管理区域。将所述第一数据位置落入的管理区域对应的第一缓存节点作为所述第一目标缓存节点。向所述第一目标缓存节点发送所述第一查询请求。

这里,上述步骤S601至步骤S602分别对应于前述步骤S2021至步骤S2022,在实施时可以参照前述步骤S2021至步骤S2022的具体实施方式。

步骤S603、向所述第一目标缓存节点发送所述第一查询请求。

在一些实施例中,所述步骤S502还可以更新为步骤S604至步骤S605。

步骤S604、基于所述存储集群自身的存储机制,在所述多个存储节点中确定目标存储节点;

步骤S605、向所述目标存储节点中发送所述第二查询请求。

图7是本申请实施例提供的数据查询方法的一个可选的流程示意图三,该方法可以由计算机设备的处理器执行。基于图5,图5中的步骤S501可以更新为步骤S701至步骤S702,将结合图7示出的步骤进行说明。

步骤S701、响应于针对目标数据的查询事件,向第二缓存集群发送第三查询请求,并接收第三查询反馈。

在一些实施例中,可以通过步骤S7011至步骤S7013实现上述向第二缓存集群发送第三查询请求。

步骤S7011、基于第二哈希函数确定所述目标数据对应的第二哈希值。

步骤S7012、基于所述第二哈希值在所述多个第二缓存节点中确定第二目标缓存节点。

其中,上述步骤S7012可以通过以下方式实现:基于所述第二哈希值,确定所述目标数据在第二哈希环中的第二数据位置;所述第二哈希环包括每一所述第二缓存节点对应的管理区域;将所述第二数据位置落入的管理区域对应的第二缓存节点作为所述第二目标缓存节点。

步骤S7013、向所述第二目标缓存节点发送第三查询请求。

在一些实施例中,可以通过以下方式实现上述向所述第二目标缓存节点发送第三查询请求:向与所述第二目标缓存节点连接的目标可编程交换机发送所述第三查询请求;所述第三查询请求用于指示所述目标可编程交换机在交换机缓存中查询所述目标数据,并在所述交换机缓存中不存在所述目标数据的情况下,向所述第二目标缓存节点转发所述第三查询请求。

这里,上述步骤S7011至步骤S7012分别对应于前述步骤S3011至步骤S3012,在实施时可以参照前述步骤S3011至步骤S3012的具体实施方式。

相应地,可以通过以下方式实现上述接收第三查询反馈:接收所述第二目标缓存节点发送的所述第三查询反馈。

在另一些实施例中,所述第三查询请求还用于指示所述目标可编程交换机在交换机缓存中查询所述目标数据,并在所述交换机缓存中存在所述目标数据的情况下,发送携带所述目标数据的第三查询反馈。

相应地,可以通过以下方式实现上述接收第三查询反馈:接收所述目标可编程交换机发送的携带所述目标数据的第三查询反馈。

步骤S702、在所述第三查询反馈表征所述第二缓存集群中不存在所述目标数据的情况下,向所述向分布式缓存系统中的第一缓存集群发送第一查询请求,并接收第一查询反馈。

图8A是本申请实施例提供的多层存储系统的一个可选的存储结构示意图一,其中,所述多层存储系统800包括分布式缓存系统810和缓存控制器820,所述分布式缓存系统810包括存储集群811和第一缓存集群812,其中:

所述分布式缓存系统800用于存储目标数据的多个数据副本;

所述缓存控制器820用于控制所述多个数据副本中的目标数据副本在所述第一缓存集群812和所述存储集群811之间基于所述目标数据的数据热度动态迁移,所述多个数据副本中的其他数据副本持久化存储于所述存储集群811。

在一些实施例中,所述缓存控制器820还用于在所述目标数据存储于所述存储集群811,且所述数据热度超过第一阈值的情况下,控制所述目标数据从所述存储集群811迁移至所述第一缓存集群812。

在一些实施例中,所述第一缓存集群812包括多个第一缓存节点;所述缓存控制器820还用于向所述分布式缓存系统810中的第一控制节点发送第一迁移指令;

所述第一控制节点用于基于第一哈希函数确定所述目标数据对应的第一哈希值;基于所述第一哈希值在所述多个第一缓存节点中确定第一目标缓存节点;将所述目标数据从所述存储集群811中迁移至所述第一目标缓存节点。

在一些实施例中,所述基于所述第一哈希值在所述多个第一缓存节点中确定第一目标缓存节点,包括:

基于所述第一哈希值,确定所述目标数据在第一哈希环中的第一数据位置;所述第一哈希环包括每一所述第一缓存节点对应的管理区域;

将所述第一数据位置落入的管理区域对应的第一缓存节点作为所述第一目标缓存节点。

在一些实施例中,所述缓存控制器820还用于在所述目标数据存储于所述第一缓存集群812,且所述数据热度小于第二阈值的情况下,控制所述目标数据从所述第一缓存集群812迁移至所述存储集群811。

在一些实施例中,所述存储集群811包括多个存储节点;所述缓存控制器820还用于发送第二迁移指令至所述分布式缓存系统810中的第一控制节点;

所述第一控制节点用于基于所述存储集群811自身的存储机制,在所述多个存储节点中确定目标存储节点;将所述目标数据从第一缓存集群812迁移至所述目标存储节点。

在一些实施例中,所述缓存控制器820还用于在所述目标数据的数据热度超过第一阈值的情况下,控制所述目标数据的关联数据的数据副本从所述存储集群811迁移至所述第一缓存集群812。

图8B是本申请实施例提供的多层存储系统的另一个可选的存储结构示意图二。在一些实施例中,所述多层存储系统800还包括第二缓存集群830;所述缓存控制器820还用于响应于针对所述目标数据的访问事件,控制所述目标数据缓存至第二缓存集群830。

在一些实施例中,所述第二缓存集群830包括多个第二缓存节点;所述缓存控制器820还用于向所述第二缓存集群830中的第二控制节点发送第一缓存指令;

所述第二控制节点,用于基于第二哈希函数确定所述目标数据对应的第二哈希值;基于所述第二哈希值在所述多个第二缓存节点中确定第二目标缓存节点;将所述目标数据缓存至所述第二目标缓存节点。

在一些实施例中,所述基于所述第二哈希值在所述多个第二缓存节点中确定第二目标缓存节点,包括:基于所述第二哈希值,确定所述目标数据在第二哈希环中的第二数据位置;所述第二哈希环包括每一所述第二缓存节点对应的管理区域;将所述第二数据位置落入的管理区域对应的第二缓存节点作为所述第二目标缓存节点。

图8C是本申请实施例提供的多层存储系统的又一个可选的存储结构示意图三。在一些实施例中,所述多层存储系统800还包括可编程交换机集群840;所述第二缓存集群830响应于所述第二目标缓存节点的过载事件,向所述缓存控制器820发送第二缓存指令;

所述缓存控制器820,还用于开启所述可编程交换机集群840中与所述第二目标缓存节点连接的目标可编程交换机的缓存功能;将所述目标数据缓存至所述目标可编程交换机。

在一些实施例中,所述分布式缓存系统810还包括第一控制节点;

所述第一控制节点用于响应于针对所述目标数据的数据更新请求,将数据更新操作写入日志;所述数据更新请求携带更新后的目标数据;将所述目标可编程交换机中的目标数据失效,并基于所述更新后的目标数据更新所述第二目标缓存节点中的目标数据;

所述分布式缓存系统810还用于基于所述日志更新所述目标数据在所述分布式缓存系统810中存储的多个数据副本。

以下实施例将以第一缓存集群为SSD缓存集群,第二缓存集群为内存缓存集群,存储集群为HDD缓存集群为例进行场景实施例的说明。

本申请提供一种数据热度感知的多层分布式缓存结构和方法,包括(1)数据热度感知的分层存储结构、(2)数据热度感知的副本升降迁移机制、(3)数据副本即缓存RaaC(Replication as a Cache)的方法和(4)基于可编程交换机的最热数据缓存机制。

请参阅图9,其示出了本申请实施例提供的数据热度感知的多层存储结构的一个可选的结构示意图。

如图9所示,该数据热度感知的多层存储结构包括:分布式缓存系统910、内存缓存集群920、可编程交换机集群930、缓存控制器940和客户端950。

所述分布式缓存系统910包括:HDD存储集群911和SSD缓存集群912。其中,分布式缓存系统910对数据进行三副本存储:其中两个副本存储位置相对固定,另外一个副本存储位置随数据热度而变化。分布式缓存系统910可以部署分布式存储软件,如HDFS文件系统等。

所述HDD存储集群911由若干HDD存储节点组成,负责数据的两个副本或三个副本的持久化存储。每个HDD存储节点彼此相对独立,可具有相同或不同的数据存储类型和管理方式。

所述SSD缓存集群912由若干SSD缓存节点组成,缓存热数据及热数据关联数据的一个副本。SSD缓存集群912通过一致性哈希算法将热数据或关联数据分配到各个SSD缓存节点中。客户端通过相同的哈希算法实现SSD缓存节点的定位和目标数据的查询。

在分布式缓存系统910中,同一个热数据或关联数据在HDD存储集群中存储两个副本,在SSD缓存集群中缓存一个副本。这三个数据副本之间的一致性由分布式缓存系统维护,即HDFS等分布式缓存系统自身的多副本一致性维护机制。

SSD缓存集群是分布式缓存系统的一个组成部分,SSD缓存集群同时对分布式缓存系统的数据查询请求提供缓存服务,SSD缓存集群提供了分布式缓存系统的负载均衡能力。

所述可编程交换机集群930由若干带有缓存能力的可编程交换机组成。内存缓存集群920中的内存缓存节点通过可编程交换机连接到网络。当不同内存缓存节点由于存储的热数据的热度不同,导致内存缓存节点之间负载不均衡时,或者由于缓存了非常热的数据导致内存缓存节点过载或网络拥塞时,与之相连的可编程交换机可以缓存该内存缓存节点中访问频次最高的数据,即最热数据HT。提高响应速度,降低内存缓存节点的负载。

所述缓存控制器940具有数据的热度和关联度管理、热数据和关联数据的副本迁移管理、可编程交换机缓存控制的功能。(1)缓存控制器940周期性地统计一段时间内数据的访问频次,对数据热度进行划分,并计算数据之间的关联性。(2)在检测到某个数据的热度达到预设的门限值后,缓存控制器940通知分布式缓存系统910的控制节点进行数据迁移。(3)内存缓存节点在发生过载或网络阻塞时通知缓存控制器,缓存控制器940使能与其相连的可编程交换机的缓存功能,缓存内存缓存节点中的最热数据。

所述客户端950是数据查询请求的发起方。客户端950通过两个独立的哈希函数分别对内存缓存集群和SSD缓存集群中的目标数据发送查询请求。客户端950发送的查询请求数据包的包头中含有目标数据Key值。可编程交换机未开启缓存功能时,只对数据包进行转发,对目标数据Key值字段不做查询;当缓存功能开启时,可编程交换机将查看数据包头的目标数据Key值字段,并在自身的缓存区内进行查找匹配。

本申请根据数据热度将数据分为四类,包括:最热数据HT、热数据HD、热数据关联数据HR和冷数据CD。所述数据热度是指在单位时间内数据查询的频次。

本申请提供了一种基于上述多层存储架构的数据热度感知的副本升降迁移机制,包括数据热度升高后,数据副本从HDD存储集群升迁到SSD缓存集群,以及数据热度降低后数据副本从SSD缓存集群下沉到HDD存储集群。

缓存控制器根据一段时间内数据访问频次分析数据热度。当某数据热度超过一定门限值成为热数据时,缓存控制器通知分布式缓存系统的控制节点将上述热数据及其关联数据升迁。分布式缓存系统的控制节点对所述热数据及其关联数据使用一致性哈希函数h2计算升迁到SSD缓存集群的目标SSD缓存节点。得到目标SSD缓存节点后,分布式缓存系统的控制节点将上述热数据及其关联数据的一个副本分别升迁到目标SSD缓存节点。副本升迁后,分布式缓存系统的控制节点继续维护该数据三个副本之间的一致性。

当一段时间内某个热数据的访问频次减少,数据热度下降超过设定的门限后,缓存控制器根据缓存更新策略通知分布式缓存系统的控制节点将上述数据及其关联数据下沉。分布式缓存系统的控制节点利用自身的副本迁移方案对所述数据及其关联数据下沉到HDD存储集群中。

本申请提供一种数据副本即缓存RaaC(Replication as a Cache)的方法。分布式缓存系统中热数据及其关联数据三个数据副本中的一个副本通过一致性哈希算法升迁到SSD缓存集群的SSD缓存节点中。

客户端通过相同的一致性哈希直接查询SSD缓存集群中的热数据及其关联数据,不再通过分布式缓存系统本身的寻址机制。在此查询过程中,SSD缓存集群中的数据副本成为了分布式缓存系统的缓存,同时可以提供HDD存储节点之间的负载均衡。

本申请提供基于可编程交换机的最热数据缓存机制。不同内存缓存节点由于存储的数据的热度不同,会导致内存缓存节点之间负载不均衡,或者由于缓存了极热数据而导致内存缓存节点过载或网络拥塞。内存缓存节点在负载超过一定门限时将本节点中最热数据通知给缓存控制器,缓存控制器控制与该缓存节点相连的可编程交换机使能其缓存功能,并对所述最热数据进行缓存。当收到来自客户端的查询请求时,可编程交换机的缓存功能使能的话,将对查询请求中的查询对象与本可编程交换机缓存的数据进行哈希比对,如果查询的数据对象在本可编程交换机的缓存中,则从缓存中取出数据返回给客户端;如果查询对象与缓存内容不匹配,则将该查询请求进行转发。

内存缓存节点的负载低于门限后,内存缓存节点通知给缓存控制器,缓存控制器控制与该缓存节点相连的可编程交换机停止缓存功能。

图10为本申请实施例提供的基于数据热度感知的数据查询方法的实现流程示意图。

步骤S1001,客户端使用哈希函数h1计算目标数据存储在内存缓存集群中的哪个内存缓存节点;

步骤S1002,客户端向确定的内存缓存节点发送查询请求;

步骤S1003,可编程交换机收到来自客户端的查询请求时,判断缓存功能是否开启;

其中,是则执行步骤S1004,否则执行步骤S1006;

步骤S1004,可编程交换机判断查询请求中携带的目标数据Key与本可编程交换机缓存的数据Key是否一致;

其中,如果二者一致则执行下列步骤S1005,否则执行步骤S1006;

步骤S1005,可编程交换机将其缓存的数据返回客户端;

步骤S1006,可编程交换机转发数据查询请求至内存缓存节点;

步骤S1007,内存缓存节点收到数据查询请求时判断其缓存数据中是否包含查询请求的目标数据;

其中,若缓存了查询请求中的目标数据则执行步骤S1008,否则执行步骤S1009;

步骤S1008,内存缓存节点将缓存的目标数据返回客户端;

步骤S1009,内存缓存节点通知客户端查询失败消息。客户端收到来自内存缓存节点的查询失败消息后,使用的哈希函数h2计算目标数据存储在SSD缓存集群中的哪个SSD缓存节点;

步骤S1010,客户端向确定的SSD缓存节点发送查询请求;

步骤S1011,SSD缓存节点收到数据查询请求时判断其缓存数据中是否包含查询请求的目标数据;

其中,若缓存了查询请求中的目标数据则执行步骤S1012,否则执行步骤S1013;

步骤S1012,SSD缓存节点将缓存的目标数据返回客户端;

步骤S1013,SSD缓存节点通知客户端查询失败消息。客户端收到来自SSD缓存节点的查询失败消息后,客户端向分布式缓存系统的控制节点发出查询请求;

步骤S1014,分布式缓存系统的控制节点在收到来自客户端的查询请求后,依据分布式缓存系统自身的存储机制,将目标数据所在的数据存储节点的位置返回给客户端;

步骤S1015,客户端依据收到的数据存储节点信息向数据存储节点发起查询请求,得到目标数据。

图11为本申请实施例提供的基于所述数据热度感知的多层存储结构的数据更新方法的实现流程示意图,具体步骤如下:

步骤S1101,客户端向分布式缓存系统的控制节点发送数据更新请求;

步骤S1102,分布式缓存系统的控制节点将更新操作写入日志;

步骤S1103,分布式缓存系统的控制节点通知缓存控制器,缓存控制器判断所更新数据是否在可编程交换机的缓存中,若存在,则令其失效;

步骤S1104,分布式缓存系统的控制节点使用一致性哈希算法,找到目标更新数据所缓存的内存缓存节点,将新数据写入内存缓存集群中的内存缓存节点;

步骤S1105,分布式缓存系统按照日志中操作步骤更新数据。

该方法在系统执行更新操作时,通过更新内存缓存节点中的数据和将更新操作写入日志,实现内存数据更新和持久化存储副本更新的解耦合,缩短写操作的响应时间。

本申请的有益效果是:数据热度感知的多层存储结构中数据存储方式和位置会随数据热度而变化,保障了存储服务器的负载均衡;

数据热度感知的副本升降迁移机制可避免由用户对内存缓存中热数据发送大量并发请求导致的网络拥塞和分组丢失问题,并将数据的更新与副本一致性等管理操作与数据访问分离;

另外,数据副本即缓存方法利用SSD缓存集群实现副本作缓存,简化了数据一致性的维护。

图9提供的数据热度感知的多层存储结构包括:分布式缓存系统910、内存缓存集群920、可编程交换机集群930、缓存控制器940、客户端950。其中,在一个实施例中,数据持久化存储在所述HDD存储集群911中,分布存储集群采用分布式文件系统HDFS;其中,HDD存储集群911有4个节点,SSD缓存集群912有3个节点;其中,所述内存缓存集群920有3个节点;其中,所述可编程交换机集群有3个节点,分别与内存缓存节点直接相连。

为了更清楚的描述本申请实施例,示例性,以下实施例提供了以下数据的缓存过程,数据A是冷数据,数据B是冷数据,数据C是最热数据,数据D是热数据,数据E是C的关联数据,数据F是冷数据,数据G是D的关联数据。

图12是本申请实施例提供的数据热度感知的多层存储结构的一个可选的结构示意图,其中,1211至1213为可编程交换机,1221至1223为内存缓存节点,1231至1233为SSD缓存节点,1241至1244为HDD存储节点,其中,根据数据热度的不同,数据存储在不同位置。

其中,冷数据A、B、F、H的三个副本都存储在分布式缓存系统的HDD存储集群中。热数据C、D和关联数据E、G的两个副本存储在分布式缓存系统的HDD存储集群,热数据C、D和关联数据E、G的一个副本存储在分布式缓存系统的SSD缓存集群;内存缓存集群缓存了热数据C、D;与内存缓存节点1221相连的可编程交换机1211缓存了最热数据C。

需要说明的是,客户端通过一致性哈希算法对所述SSD缓存集群发送查询请求,SSD缓存集群使用的哈希函数为h2。一致性哈希算法通过一致性哈希环实现,哈希环的起点是0,终点是2^32-1,且起点与终点相连。图13为根据本申请实施例提供的SSD缓存集群的数据查询访问图。SSD缓存节点和缓存数据在哈希环上的位置如图13所示。

在一些实施例中,SSD缓存节点1231至1233,数据C、D、E、G的位置确定流程如图14所示。

S1401,使用哈希函数计算SSD缓存节点1231至1233的IP地址的哈希值,将哈希值取余2^32后,确定节点在哈希环上的位置。

本实施例中,SSD缓存节点1231的IP地址为10.128.226.24,SSD缓存节点1232的IP地址为10.128.226.25,SSD缓存节点1233的IP地址为10.128.226.26。使用哈希函数h2计算SSD缓存节点1231至1233的IP地址的哈希值,将哈希值对取余后,确定节点在哈希环上的位置,即

S1402,使用相同的哈希函数计算数据C、D、E、G的哈希值,将哈希值取余2^32后,确定数据在哈希环上的位置。

在一些实施例中,可以得到数据C、D、E、G的位置分别为:

S1403,在哈希环上顺时针分别查找距离数据C、D、E、G最近的SSD缓存节点,将数据C、D、E、G存储到最近的SSD缓存节点。

在一些实施例中,在哈希环上顺时针分别查找距离数据C、D、E、G最近的SSD缓存节点,将数据C、D、E、G存储到最近的SSD缓存节点。数据D和E存储到SSD缓存节点1231;数据C存储到SSD缓存节点1232;数据G存储到SSD缓存节点1233。

需要说明的是,内存缓存集群同样采用一致性哈希算法,数据存储位置的确定与上述SSD缓存集群中数据存储位置确定的过程一致,但内存缓存集群使用的哈希函数为h1,与SSD缓存集群使用的哈希函数h2不同。具体地,内存缓存节点和缓存数据在哈希环上的位置如图15所示。

内存缓存节点1221位于哈希环2048位置处,内存缓存节点1222位于哈希环98304位置处,内存缓存节点1223位于哈希环786432位置处,数据C存储在内存缓存节点1221中,数据D存储在内存缓存节点1222中。

在本申请的另一个实施例中,提供一种数据热度感知的副本升降迁移机制,其中所述分布式缓存系统分为HDD存储集群和SSD缓存集群,对数据通过三个副本存储,其中两个副本持久化存储在HDD中,另一个数据副本根据数据热度在HDD和SSD之间动态迁移。

具体地,图16为本申请实施例中的数据热度感知的副本迁移机制流程示意图,以数据C的升温迁移过程为例具体描述工作流程。其中,系统的初始化状态如图17所示,数据A、C、E为冷数据,三个副本存储在HDD存储集群中;数据D为热数据,两个副本存储在HDD存储集群中,一个副本存储在SSD缓存集群中;数据G为D的关联数据,两个副本存储在HDD存储集群中,一个副本存储在SSD缓存集群中。如图16所示,数据C升温迁移的步骤具体包括:

S1601,初始状态下数据C的三个副本存储在HDD存储集群中,数据C被频繁访问时,数据C的一个副本升迁到SSD缓存集群中。

如图17所示,初始状态下数据C的三个副本存储在HDD存储集群中;

如图18所示,当数据C被频繁访问时,分布式缓存系统的控制节点使用哈希函数h2得到数据C在SSD缓存集群中的缓存节点为SSD缓存节点2,并将数据C的一个副本升迁到SSD缓存节点2中;

S1602,缓存控制器会周期性监测数据的热度并计算数据关联性;

S1603,当缓存控制器监测到数据C存在关联数据E的情况下,缓存控制器通知分布式缓存系统的控制节点将热数据C的关联数据E的一个副本升迁;

S1604,分布式缓存系统的控制节点使用一致性哈希函数h2计算数据E的升迁目标节点为SSD缓存节点1。

其中,分布式缓存系统的控制节点使用一致性哈希函数h2计算数据E的升迁目标节点为SSD缓存节点1。得到目标SSD缓存节点后,分布式缓存系统的控制节点将数据E的一个副本升迁到目标SSD缓存节点,迁移结果如图19所示。

在一些实施例中,数据的降温迁移过程与上述实施例的步骤类似,此处不再赘述。

在一些实施例中,根据客户端请求数据的热度不同,数据的查询请求由不同的集群处理。包括:对最热数据HT的查询请求流程;对热数据HD的查询请求流程;对热数据关联数据HR的查询请求流程;对冷数据CD的查询请求流程。

具体地,图20为本申请实施例提供的对图12中最热数据C的查询流程示意图,步骤如下:

S2001,客户端使用哈希函数h1计算数据C所在内存缓存节点;

其中,客户端根据内存缓存集群使用的哈希函数h1计算数据C所在内存缓存节点,在本实施例中数据C被缓存在内存缓存节点1221;

S2002,客户端向内存缓存节点发送查询数据C的请求;

其中,客户端向S2001得到的内存缓存节点1221发送查询数据C的请求;

S2003,可编程交换机缓存功能已开启,缓存命中,交换机返回数据;

其中,可编程交换机1211缓存功能已开启,在收到查询数据C的请求后,可编程交换机将查询请求中携带的目标数据Key与本可编程交换机缓存的数据Key进行对比,二者一致,可编程交换机将其缓存的数据C返回给客户端。

图21为本申请实施例提供的对图12中热数据D的访问的流程示意图,步骤如下:

S2101,客户端使用哈希函数h1计算数据D所在内存缓存节点;

其中,客户端根据内存缓存集群使用的哈希函数h1计算数据D所在内存缓存节点,在本实施例中数据D被缓存在内存缓存节点1222;

S2102,客户端数据访问层向内存缓存节点发送查询数据D的请求;

其中,客户端向S2101得到的内存缓存节点1222发送查询数据D的请求;

S2103,可编程交换机缓存未开启或缓存开启但未命中,转发请求至内存缓存节点;

其中,可编程交换机1212缓存功能未开启或缓存功能开启但查询请求中携带的数据D的Key与缓存的数据Key匹配失败,转发查询D的请求至内存缓存节点1222;

S2104,内存缓存命中,返回数据;

其中,内存缓存节点1222缓存命中,将数据D返回客户端。

图22为本申请实施例提供的对图12中热数据关联数据G的查询流程示意图,步骤如下:

S2201,客户端数据访问层使用哈希函数h1计算数据G所在内存缓存节点;

其中,客户端根据内存缓存集群使用的哈希函数h1计算数据G所在的内存缓存节点,在本实施例中数据G未出现在内存缓存集群中;

S2202,客户端向内存缓存节点发送查询数据G的请求;

其中,客户端向S2201得到的内存缓存节点发送查询数据G的请求;

S2203,交换机缓存未开启或缓存开启但未命中,转发请求至内存缓存节点;

其中,查询请求到达可编程交换机,可编程交换机缓存功能未开启或但查询请求中携带的数据G的Key与缓存的数据Key匹配失败,转发查询请求至内存缓存节点;

S2204,内存缓存未命中,通知客户端查询失败;

在本实施例中,数据G未出现在内存缓存集群中,内存缓存未命中,通知客户端查询失败消息;

S2205,客户端使用哈希函数h2计算数据G所在SSD缓存节点;

其中,客户端收到来自内存缓存节点的查询失败消息后,根据SSD缓存集群使用的哈希函数h2计算数据G所在SSD缓存节点,在本实施例中数据G被缓存在SSD缓存节点1233;

S2206,客户端向SSD缓存节点发送查询数据G的请求;

其中,客户端向S2205得到的SSD缓存节点1233发送查询数据G的请求;

S2207,SSD缓存节点缓存命中,返回数据;

其中,SSD缓存节点1233缓存命中,将数据G返回客户端。

图23为本申请实施例提供的对图12中冷数据A的查询流程,步骤如下:

S2301,客户端使用哈希函数h1计算数据A所在内存缓存节点;

其中,客户端根据内存缓存集群使用的哈希函数h1计算数据A所在内存缓存节点,在本实施例中数据A未出现在内存缓存集群中;

S2302,客户端向内存缓存节点发送查询数据A的请求;

其中,客户端向S2301得到的内存缓存节点发送数据A的查询请求;

S2303,交换机缓存未开启或缓存开启但未命中,转发请求至内存缓存节点;

其中,在查询请求到达可编程交换机,可编程交换机缓存功能未开启或但查询请求中携带的数据A的Key与缓存的数据Key匹配失败,转发查询请求至内存缓存节点;

S2304,内存缓存未命中,通知客户端查询失败;

在本实施例中,数据A未出现在内存缓存集群中,内存缓存未命中,通知客户端查询失败消息;

S2305,客户端数据访问层使用哈希函数h2计算数据A所在SSD缓存节点;

其中,客户端收到来自内存缓存节点的查询失败消息后,根据SSD缓存集群使用的哈希函数h2计算数据A所在SSD缓存节点,本实施例中数据A未出现在SSD缓存集群中;

S2306,客户端向SSD缓存节点发送查询数据A的请求;

其中,客户端向S2305得到的SSD缓存节点发送查询数据A的请求;

S2307,SSD缓存节点缓存未命中,通知客户端查询失败;

在本实施例中,数据A未出现在SSD缓存集群中,SSD缓存节点缓存未命中,通知客户端查询失败消息;

S2308,客户端向分布式缓存系统的控制节点发送数据A的查询请求;

其中,客户端收到来自SSD缓存节点的查询失败消息后,向分布式缓存系统的控制节点发送数据A的查询请求;

S2309,分布式缓存系统的控制节点将数据A所在数据存储节点的位置返回给客户端;

其中,分布式缓存系统的控制节点在收到来自客户端的查询请求后,依据分布式缓存系统自身的存储机制,将数据A所在的数据存储节点的位置返回给客户端;

S2310,客户端向数据存储节点发起查询请求,得到数据A;

其中,客户端依据S2309收到的数据存储节点信息向数据存储节点发起查询请求,得到数据A。

在本申请实施例中提供一种数据更新方法。包括:分布式缓存系统的控制节点接收来自客户端的更新请求后,首先将更新操作写入分布式缓存系统的日志系统中;然后通知缓存控制器令可编程交换机中对该数据的缓存失效,并更新内存缓存集群中的数据;最后,根据日志更新分布式缓存系统中的数据。

具体地,图24为本申请实施例提供的对图12中数据C的更新的流程示意图,如图24所示,步骤如下:

S2401,客户端向分布式缓存系统发送对数据C的更新请求;

其中,客户端向分布式缓存系统控制节点发送对数据C的更新请求;

S2402,分布式缓存系统将更新操作写入日志;

其中,分布式缓存系统控制节点将更新操作写入日志;

S2403,分布式缓存系统控制节点通知缓存控制器,缓存控制器判断数据C在可编程交换机的缓存中,通知可编程交换机将数据C失效;

其中,分布式缓存系统控制节点通知缓存控制器,缓存控制器判断数据C在可编程交换机1211的缓存中,通知可编程交换机1211将数据C失效;

S2404,分布式缓存系统控制节点根据内存缓存集群使用的哈希函数h1,将更新后的数据C写入内存缓存节点中;

其中,分布式缓存系统控制节点根据内存缓存集群使用的哈希函数h1,将更新后的数据C写入内存缓存节点1221中;

S2405,分布式缓存系统根据日志更新SSD缓存集群以及HDD存储集群中的数据C;

其中,分布式缓存系统根据日志更新SSD缓存节点1232、HDD存储节点1241以及HDD存储节点1242中的数据C。

本申请实施例提供的数据热度感知的多层存储结构的数据更新方法只需更改内存缓存集群中的数据,不需要维护整个系统的数据,保证了数据的一致性;数据的延迟更新避免了对多副本的维护,减少了存储服务器用于保证数据一致性的开销。

基于上述实施例,本申请具有以下优点:

(1)本申请提出一种数据热度感知的分层存储机制。根据数据热度将数据分为四类:冷数据,热数据,热数据关联数据,最热数据。存储结构包括分布式缓存系统,内存缓存集群,可编程交换机缓存。分布式缓存系统由机械硬盘的数据副本持久化存储和数据副本固态硬盘的缓存组成。数据存储方式、存储位置、寻址模式会随数据热度而变化。

(2)本申请所提的数据热度感知的分层存储机制是一种通用的数据存储方案。存储对象可以是分布式文件系统GFS、HDFS等中的文件,可以是分布式键值存储集群Dynamo等中的键值对,可以是分布式面向列存储集群Bigtable/Cassandra等中的列族,可以是分布式文档存储集群MongoDB等中的文档。通过在分布式缓存系统中哈希寻址屏蔽数据的差异。

(3)提出数据副本即缓存的方法。通过将迁移到SSD缓存集群中的数据副本作为热数据和关联数据的缓存,客户端通过哈希函数直接访问SSD中缓存的数据对象,加快了数据查询的响应速度,提升了数据的整体缓存命中率。

(4)提出基于数据热度感知的热数据关联数据的缓存机制。将所有数据都缓存在内存中即不现实也无必要。但如果仅仅在缓存中缓存热度数据的话,就一定会发生缓存不命中的数据查询。基于数据之间的查询的关联性的,本申请提出基于数据热度感知的热数据关联数据的缓存机制,将分布式缓存系统的关联数据的一个副本升迁到SSD缓存集群,将SSD缓存集群中的数据副本作为缓存供客户端查询。

(5)提出热数据内存+固态双层缓存机制。热数据在内存和固态中独立组织管理缓存,独立寻址,具有不同的目的和作用。系统正常运行状态下,内存中的缓存响应客户端的访问请求;当内存缓存节点发生故障无法提供服务时,SSD缓存响应客户端请求,并协助内存缓存节点完成故障恢复。与经典的分布式缓存系统,如Redis/memcached相比,虽然本系统是双层缓存,但并没有增加缓存数据多副本的一致性的开销。

(6)提出的基于可编程交换机的最热数据缓存机制。为了避免对内存缓存中的热数据的大量并发请求导致的网络拥塞和分组丢失问题,本申请提出最热数据的交换机缓存机制。通过监测内存缓存节点网络拥塞状况,在发生拥塞时使能可编程交换机缓存功能,在可编程交换机中缓存最热数据。可编程交换机通过匹配用户查询目标数据与缓存数据,对请求分组进行响应。

(7)提出数据热度感知的副本升降迁移机制。本申请通过对数据副本进行升降迁移,而不是复制,简化了分布式系统的数据一致性的维护。

同时,本申请具有以下商业价值:

(1)由于本申请是一个通用的分层存储机制,与企业原有的分布式缓存系统具体方式和架构做到较好的兼容,例如原系统可以是分布式文件系统GFS、HDFS可以是分布式键值存储集群Dynamo等,可以是分布式面向列存储集群Bigtable/Cassandra等,也可以是分布式文档存储集群MongoDB等。应用范围广。

(2)本申请在没有改变分布式缓存系统的一致性的前提下,通过数据副本迁移,提升了热数据和关联数据的缓存命中概率。成本低,收益大。

(3)通过可编程交换机根据内存缓存节点网络请求量自适应使能缓存功能,实现了内存缓存节点中最热数据导致的内存缓存节点拥塞和分组丢失。目前可编程交换机、智能交换机已经进入市场,因此,申请具有较好的可行性。

(4)本申请所提的热数据关联数据具有较好的灵活性。在SSD硬盘成本较高,可以部署小规模的SCC集群,缓存关联度高的数据。随着固态硬盘技术的发展,性能不断提高,成本持续降低,SCC集群可以持续增大,缓存更多的关联数据。

基于前述的实施例,本申请实施例提供一种数据存储装置和数据查询装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(Central Processing Unit,CPU)、微处理器(Microprocessor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)或现场可编程门阵列(Field Programmable GateArray,FPGA)等。

图25为本申请实施例提供的一种数据存储装置的组成结构示意图,如图25所示,数据存储装置2500包括:获取模块2510、迁移模块2520,其中:

获取模块2510,用于获取分布式缓存系统中目标数据的数据热度;所述目标数据在所述分布式缓存系统中存储有多个数据副本,所述分布式缓存系统包括存储集群和第一缓存集群;

迁移模块2520,用于基于所述数据热度,将所述多个数据副本中的目标数据副本在所述第一缓存集群和所述存储集群之间动态迁移;所述多个数据副本中的其他数据副本持久化存储于所述存储集群。

在一些实施例中,所述迁移模块2520,还用于:在所述目标数据副本存储于所述存储集群,且所述数据热度超过第一阈值的情况下,将所述目标数据副本从所述存储集群迁移至所述第一缓存集群。

在一些实施例中,所述第一缓存集群包括多个第一缓存节点;所述迁移模块2520,还用于:基于第一哈希函数确定所述目标数据对应的第一哈希值;基于所述第一哈希值在所述多个第一缓存节点中确定第一目标缓存节点;将所述目标数据副本从所述存储集群中迁移至所述第一目标缓存节点。

在一些实施例中,所述迁移模块2520,还用于:基于所述第一哈希值,确定所述目标数据在第一哈希环中的第一数据位置;所述第一哈希环包括每一所述第一缓存节点对应的管理区域;将所述第一数据位置落入的管理区域对应的第一缓存节点作为所述第一目标缓存节点。

在一些实施例中,所述迁移模块2520,还用于:在所述目标数据副本存储于所述第一缓存集群,且所述数据热度小于第二阈值的情况下,将所述目标数据副本从所述第一缓存集群迁移至所述存储集群。

在一些实施例中,所述存储集群包括多个存储节点;所述迁移模块2520,还用于:基于所述存储集群自身的存储机制,在所述多个存储节点中确定目标存储节点;将所述目标数据副本从第一缓存集群迁移至所述目标存储节点。

在一些实施例中,所述迁移模块2520,还用于:在所述目标数据的数据热度超过第一阈值的情况下,将所述目标数据的关联数据的数据副本从所述存储集群迁移至所述第一缓存集群。

在一些实施例中,所述迁移模块2520,还用于:响应于针对所述目标数据的访问事件,将所述目标数据缓存至第二缓存集群。

在一些实施例中,所述第二缓存集群包括多个第二缓存节点;所述迁移模块2520,还用于:基于第二哈希函数确定所述目标数据对应的第二哈希值;基于所述第二哈希值在所述多个第二缓存节点中确定第二目标缓存节点;将所述目标数据缓存至所述第二目标缓存节点。

在一些实施例中,所述迁移模块2520,还用于:基于所述第二哈希值,确定所述目标数据在第二哈希环中的第二数据位置;所述第二哈希环包括每一所述第二缓存节点对应的管理区域;将所述第二数据位置落入的管理区域对应的第二缓存节点作为所述第二目标缓存节点。

在一些实施例中,所述迁移模块2520,还用于:响应于所述第二目标缓存节点的过载事件,开启与所述第二目标缓存节点连接的目标可编程交换机的缓存功能;将所述目标数据缓存至所述目标可编程交换机。

在一些实施例中,所述数据存储装置2500还包括:数据更新模块;

所述数据更新模块用于响应于针对所述目标数据的数据更新请求,将数据更新操作写入日志;所述数据更新请求携带更新后的目标数据;将所述目标可编程交换机中的目标数据失效,并基于所述更新后的目标数据更新所述第二目标缓存节点中的目标数据;基于所述日志更新所述目标数据在所述分布式缓存系统中存储的多个数据副本。

图26为本申请实施例提供的一种数据查询装置的组成结构示意图,如图26所示,数据查询装置2600包括:查询模块2610,其中:

查询模块2610,用于响应于针对目标数据的查询事件,向分布式缓存系统中的第一缓存集群发送第一查询请求,并接收第一查询反馈;

所述查询模块2610,还用于在所述第一查询反馈表征所述第一缓存集群中不存在所述目标数据的情况下,向所述分布式缓存系统中的存储集群发送第二查询请求,并接收第二查询反馈;

其中,所述目标数据在所述分布式缓存系统中存储有多个数据副本,所述多个数据副本中的目标数据副本在所述第一缓存集群和所述存储集群之间基于所述目标数据的热度动态迁移,所述多个数据副本中的其他数据副本持久化存储于所述存储集群。

在一些实施例中,所述第一缓存集群包括多个第一缓存节点;所述查询模块2610,还用于:基于第一哈希函数确定所述目标数据对应的第一哈希值;基于所述第一哈希值在所述多个第一缓存节点中确定第一目标缓存节点;向所述第一目标缓存节点发送所述第一查询请求。

在一些实施例中,所述查询模块2610,还用于:基于所述第一哈希值,确定所述目标数据在第一哈希环中的第一数据位置;所述第一哈希环包括每一所述第一缓存节点对应的管理区域;将所述第一数据位置落入的管理区域对应的第一缓存节点作为所述第一目标缓存节点。

在一些实施例中,所述存储集群包括多个存储节点;所述查询模块2610,还用于:基于所述存储集群自身的存储机制,在所述多个存储节点中确定目标存储节点;向所述目标存储节点中发送所述第二查询请求。

在一些实施例中,所述查询模块2610,还用于响应于针对目标数据的查询事件,向第二缓存集群发送第三查询请求,并接收第三查询反馈;在所述第三查询反馈表征所述第二缓存集群中不存在所述目标数据的情况下,向所述向分布式缓存系统中的第一缓存集群发送第一查询请求。

在一些实施例中,所述第二缓存集群包括多个第二缓存节点;所述查询模块2610,还用于基于第二哈希函数确定所述目标数据对应的第二哈希值;基于所述第二哈希值在所述多个第二缓存节点中确定第二目标缓存节点;向所述第二目标缓存节点发送第三查询请求。

在一些实施例中,所述查询模块2610,还用于基于所述第二哈希值,确定所述目标数据在第二哈希环中的第二数据位置;所述第二哈希环包括每一所述第二缓存节点对应的管理区域;将所述第二数据位置落入的管理区域对应的第二缓存节点作为所述第二目标缓存节点。

在一些实施例中,所述查询模块2610,还用于向与所述第二目标缓存节点连接的目标可编程交换机发送所述第三查询请求;所述第三查询请求用于指示所述目标可编程交换机在交换机缓存中查询所述目标数据,并在所述交换机缓存中不存在所述目标数据的情况下,向所述第二目标缓存节点转发所述第三查询请求;接收所述第二目标缓存节点发送的所述第三查询反馈。

在一些实施例中,所述第三查询请求还用于指示所述目标可编程交换机在交换机缓存中查询所述目标数据,并在所述交换机缓存中存在所述目标数据的情况下,发送携带所述目标数据的第三查询反馈;所述查询模块2610,还用于接收所述目标可编程交换机发送的携带所述目标数据的第三查询反馈。

以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。在一些实施例中,本申请实施例提供的装置具有的功能或包含的模块可以用于执行上述方法实施例描述的方法,对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的数据存储和数据查询方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。

本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。

本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。

本申请实施例提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。

本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。

这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请设备、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

图27为本申请实施例提供的一种计算机设备的硬件实体示意图,如图27所示,该计算机设备2700的硬件实体包括:处理器2701和存储器2702,其中,存储器2702存储有可在处理器2701上运行的计算机程序,处理器2701执行程序时实现上述任一实施例的方法中的步骤。

存储器2702存储有可在处理器上运行的计算机程序,存储器2702配置为存储由处理器2701可执行的指令和应用,还可以缓存待处理器2701以及计算机设备2700中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。

处理器2701执行程序时实现上述任一项的数据存储和数据查询方法的步骤。处理器2701通常控制计算机设备2700的总体操作。

本申请实施例提供一种计算机存储介质,计算机存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如上任一实施例的数据存储和数据查询方法的步骤。

这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

上述处理器可以为目标用途集成电路(Application Specific IntegratedCircuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(Programmable LogicDevice,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(CentralProcessing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。

上述计算机存储介质/存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-OnlyMemory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

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

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

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

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

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

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

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

相关技术
  • 一种数据存储方法、调度装置、系统、设备及存储介质
  • 一种元数据存储方法、装置、设备及计算机可读存储介质
  • 多版本数据存储管理方法及装置、电子设备、存储介质
  • 海量数据存储方法、装置、存储介质及电子设备
  • 一种数据存储方法及装置、一种计算设备及存储介质
  • 数据存储、查询装置和数据存储、查询方法
  • 数据存储和数据查询方法、装置及电子设备
技术分类

06120115801587