1.本发明涉及互联网技术领域,尤其涉及一种数据存储方法、装置、设备及介质。
背景技术:2.随着互联网技术的发展,在访问大量数据时需要对经常读取的数据预先存储在缓存结构(cache)中,以避免直接从硬盘读取而耗费大量时间,以商业智能(business intelligence,简称bi)领域为例,在访问某些数据或数据集用于分析时,会对经常被读取的数据或数据集进行缓存,但是缓存的大小是有限,因此需要对缓存进行管理。
3.在实现本发明构思的过程中,发明人发现相关技术中至少存在如下技术问题:已有的缓存管理方案中,例如较为通用的先进先出、最近最久未使用的方案,在具体应用到真实场景时效果差、效率低,难以根据实际需求将最需要缓存的数据预先存储在缓存中,存在无法针对具体应用场景进行自适应优化的问题。
技术实现要素:4.第一方面,本发明的实施例提供了一种数据存储方法,上述方法包括:从查询日志中获取作为在上一计算周期内的查询操作对象的数据集的查询信息,上述计算周期是相邻两次计算数据集的查询优先值之间的时间间隔;根据上述数据集的查询信息计算上述数据集的查询优先值;根据上述数据集的查询优先值由高到低的顺序将数据集依次存储至不同级别的缓存。
5.根据本发明的实施例,上述查询信息包括执行查询操作的查询指令、通过各查询指令查询的数据集和上述数据集的查询耗时。
6.根据本发明的实施例,上述根据上述数据集的查询信息计算上述数据集的查询优先值,包括:对于每个数据集,计算在上一计算周期内对该数据集执行的各次查询操作对应的查询耗时的加权求和。
7.根据本发明的实施例,上述对于每个数据集,计算在上一计算周期内对该数据集执行的各次查询操作对应的查询耗时的加权求和,包括:对于每个数据集,获取该数据集对应的预设权重p,根据计算该数据集的查询优先值s
d
,t
k
表示当前计算周期内第k次查询该数据集的耗时,k≥0且k为整数。
8.根据本发明的实施例,上述根据上述数据集的查询信息计算上述数据集的查询优先值,包括:获取各数据集的容量信息;对于每个数据集,计算在上一计算周期内对该数据集执行的各次查询操作对应的查询耗时之和与该数据集的容量的比值。
9.根据本发明的实施例,上述对于每个数据集,计算在上一计算周期内对该数据集执行的各次查询操作对应的查询耗时之和与该数据集的容量的比值,包括:对于每个数据集,获取该数据集d
m
对应的预设权重a
m
和预设偏置b
m
,根据计算该数据集的查询优先值s
m
,v
m
表示该数据集的容量,t
k
表示当前计算周期内第k次查询该数据集
的耗时,k≥0且k为整数。
10.根据本发明的实施例,上述预设权重a
m
和预设偏置b
m
根据数据集所对应的业务的存储优先级来设置。
11.根据本发明的实施例,上述预设权重a
m
和预设偏置b
m
根据不同数据集来设置。
12.根据本发明的实施例,在根据上述数据集的查询优先值由高到低的顺序将数据集依次存储至不同级别的缓存之后,上述方法还包括:接收用户的查询指令,上述查询指令包括当前计算周期内的查询操作和各查询操作对应的待查询的数据集信息;基于上述待查询的数据集信息,优先在上述不同级别的缓存中进行查询。
13.根据本发明的实施例,上述方法还包括:获取当前计算周期内的查询日志,用于为下一次计算数据集的查询优先值提供查询信息。
14.第二方面,本发明的实施例提供了一种用于数据存储的装置,上述装置包括:获取模块,用于从查询日志中获取上一计算周期内的数据集的查询信息;计算模块,用于根据所述数据集的查询信息计算所述数据集的查询优先值;存储模块,用于根据所述数据集的查询优先值由高到低的顺序将数据集依次存储至不同级别的缓存。
15.第三方面,本发明的实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现如上所述的方法。
16.第四方面,本发明的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的方法。
17.本发明实施例提供的上述技术方案与相关技术相比至少具有如下优点的部分或全部:
18.本发明实施例采用多级缓存结构,通过从查询日志中获取上一计算周期内的查询操作对象的数据集的查询信息,从而计算数据集的查询优先值,按照查询优先值由高到低顺序依次存储在各级缓存中,实现了基于历史的查询情况进行分析计算来动态调整缓存来优化未来的查询效果,从而自适应地调整各级缓存中加载的数据集,使得在有限的缓存空间约束下,高效管理缓存,将查询优先值由高到低的数据依次存储在传输速度由高到低的各级缓存中,从而适应工程实践应用的需求将不同数据集合理地存储于不同级别的缓存中,有效降低查询耗时,并显著提高查询效率。
附图说明
19.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
20.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
21.图1示意性示出适用于本发明实施例的数据存储的方法及装置的系统架构;
22.图2示意性示出了根据本发明一实施例的数据存储的方法的流程图;
23.图3示意性示出了根据本发明另一实施例的数据存储的方法的流程图;
24.图4示意性示出了根据本发明又一实施例的数据存储的方法的流程图;
25.图5示意性示出了根据本发明一实施例的用于数据存储的装置的结构框图;
26.图6示意性示出了本发明实施例提供的电子设备的结构框图。
具体实施方式
27.随着互联网技术的发展,缓存的概念已被扩充,凡是位于速度相差较大的两种硬件之间(例如内存和硬盘之间、硬盘与网络之间等),用于协调两者数据传输速度差异的结构,均可称之为缓存(cache),而不仅仅局限于传统意义上cpu和主内存之间的缓存。缓存广泛存在于互联网技术架构中,以商业智能(business intelligence,简称bi)领域为例,在访问某些数据或数据集用于分析时,会对经常被读取的数据或数据集进行缓存,但是有限的缓存空间约束下,需要对缓存进行管理。
28.相关技术中,使用常用的缓存管理方案,例如lru(least recently used,最近最久未使用)、fifo(first in first out,先进先出)等,来实现对经常读取的数据预先存储在缓存中,以避免直接从硬盘读取而耗费大量时间,然而,这些通用的方案在具体应用到真实场景时效果差、效率低,若要针对具体场景取得较好的效果往往需要通过人为设定关键参数来进行优化(例如,lru的k值),难以根据实际需求将最需要缓存的数据预先存储在缓存中,存在无法针对具体应用场景进行自适应优化的问题。综上所述,在有限的缓存空间约束下,如何将最需要缓存的数据预先存储在缓存中,且实现能够针对具体应用场景进行自适应优化,从而更高效地利用有限的缓存空间,具有重要的实际价值。
29.有鉴于此,本发明的实施例提供了一种数据存储的方法,上述方法包括:从查询日志中获取作为在上一计算周期内的查询操作对象的数据集的查询信息;根据上述数据集的查询信息计算上述数据集的查询优先值;根据上述数据集的查询优先值由高到低的顺序将数据集依次存储至不同级别的缓存。
30.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
31.图1示意性示出了适用于本发明实施例的数据存储的方法及装置的系统架构。
32.参照图1所示,适用于本发明实施例的数据存储的方法及装置的系统架构100包括:终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
33.用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。发送的消息可以是查询信息,接收的消息可以是查询结果。终端设备101、102、103上可以安装有各类通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
34.终端设备101、102、103可以是显示屏并且支持网页浏览的各种电子设备,例如电子设备包括但不限于智能手机、平板电脑、笔记本电脑、台式计算机、智能手表等等。
35.服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103访问的网页进行数据处理提供服务支持的后台管理服务器(仅为示例)。后台管理服务器可
以对接收到的访问请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
36.需要说明的是,本发明实施例所提供的数据存储的方法一般可以由服务器105或具有一定运算能力的终端设备执行。相应地,本发明实施例所提供的数据存储的装置一般可以设置于服务器105中或上述具有一定运算能力的终端设备中。本发明实施例所提供的数据存储的方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本发明实施例所提供的数据存储的装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
37.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
38.本发明实施例中,例如在商业智能(business intelligence,bi)等应用场景下,通常会基于业务需求频繁查询数据以用于商业分析。其中,由数据仓库为诸多应用系统提供数据支撑,例如bi系统,数据挖掘系统,数据分析系统等。在数据仓库中,通常以一定的工作周期(运行周期)对其中数据进行计算,该过程可以称为“定时计算作业”,各工作周期的定时计算作业所得到的结果可以是规模不同、大小不一的数据集合(还可以称为结果集数据),包括诸多数据集。这些数据集可以分布于各数据集市中,用于供前台应用访问、查询以进行商业分析。
39.本发明实施例中,数据集市中的数据是通过对数据仓库中的原始数据有选择的进行加工而得到的,即,并不是加工数据仓库中的全部原始数据,而是基于实际应用需求选择所需要的数据进行加工,形成多个数据集市,各数据集市可以为一个或多个应用系统提供用于业务所需的数据,各应用系统业务也可以从一个或多个应用/系统获取业务所需的数据。基于业务需求所需查询的用于商业分析的数据来自于数据集市,可以是数据集市中的多个数据集。可以理解为从一个或多个数据集市获取对与具体业务需求相关的一个或多个数据集,并进行查询和分析。
40.为使得经常被查询的数据或数据集更快速地被访问到,可以将其加载到缓存中,本发明实施例采用多级缓存结构,通过从查询日志中获取上一计算周期内的查询操作对象的数据集的查询信息,从而计算数据集的查询优先值,按照查询优先值由高到低顺序依次存储在各级缓存中,实现了基于历史的查询情况进行分析计算来动态调整缓存来优化未来的查询效果,从而自适应地调整各级缓存中加载的数据集,使得在有限的缓存空间约束下,高效管理缓存,将查询优先值由高到低的数据依次存储在传输速度由高到低的各级缓存中,从而适应工程实践应用的需求将不同数据集合理地存储于不同级别的缓存中,有效降低查询耗时,并显著提高查询效率。
41.需要说明的是,本发明的应用场景的多级缓存架构是基于广义的缓存,即,凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存。因此,在不同层级硬件/软件之间都可以存在缓存,示例性的,例如,硬盘与网络之间的缓存可以是internet临时文件夹或网络内容缓存等,又如,在cpu和主内存之间的缓存、内存和硬盘之间的缓存。
42.尽管本发明的实施场景中的多级缓存架构中以内存为示例,作为缓存速度最快且
容量最小的第一存储空间,但不局限于此,多级缓存架构中,缓存速度最快且容量最小的存储空间均可以作为相对意义上的第一存储空间,即,一级缓存,类似地,随着缓存速度的逐级递减少和容量的逐级递增,比第一级缓存速度更慢且容量更大的存储空间可以依次称为二级缓存(第二存储空间)、三级缓存(第三存储空间)等等。
43.本发明的第一个示例性实施例提供了一种数据存储的方法。
44.图2示意性示出了根据本发明一实施例的数据存储的方法的流程图。图3示意性示出了根据本发明另一实施例的数据存储的方法的流程图。图4示意性示出了根据本发明又一实施例的数据存储的方法的流程图。
45.参照图2所示,本发明实施例提供的数据存储的方法,包括以下操作:s202、s204和s206。上述操作s202~s206可以由服务器或具有一定运算能力的终端设备执行。
46.在操作s202,从查询日志中获取上一计算周期内的数据集的查询信息。
47.其中,计算周期可以理解为统计周期,即,执行上一次计算数据集的查询优先值的操作与执行当前计算操作之间的时间间隔。在该周期内执行的全部查询操作的查询信息可以用于进行分析和统计。可选的,相邻任意两次计算数据集的查询优先值之间的时间间隔可以是相同的,可以根据实际应用场景的需求进行设置,例如将计算周期设置为一天、两天、一周等。示例性的,查询操作可以通过例如presto等的大规模计算框架来实现。
48.示例性的,若将计算周期设置为一天,则每天执行一次计算数据集的查询优先值的操作,以bi领域常用的报表系统为例,报表系统可以在每天的指定时间,从查询日志获取昨日执行的查询操作对应的数据集的查询信息,上述查询信息可以包括执行查询操作的查询指令、通过各查询指令查询的数据集和数据集的查询耗时等信息。具体的,查询指令例如可以是sql语句,用于执行相应的查询操作,上一个计算周期内可以包括多条sql语句,执行多次查询操作,且日志中记录有每一条sql语句的执行时间、该语句的具体内容,例如,查询了哪些数据集和每个数据集的查询耗时等相关信息,基于此,可以根据日志分析出昨日执行的全部查询操作查询了哪些数据集,查询各个数据集消耗了多少时间等信息。
49.在操作s204,根据上述数据集的查询信息计算上述数据集的查询优先值。
50.可选的,参照图3,操作s204还可以进一步包括操作s2041a,即,可以对于每个数据集,计算在上一计算周期内对该数据集执行的各次查询操作对应的查询耗时的加权求和。
51.在操作s2041a,对于每个数据集,计算在上一计算周期内对该数据集执行的各次查询操作对应的查询耗时的加权求和。若将计算周期设置为一天,以bi领域常用的报表系统为例,基于上述通过日志分析出昨日执行的查询操作的查询信息,可以获取到查询了哪些数据集和各个数据集的查询耗时(查询延迟),从而计算各个数据集的查询优先值(例如,可以具体实施为对数据集进行打分,所得的分值用于表征数据集的优先值)。
52.具体的,对于每个数据集,获取该数据集对应的预设权重p,结合上述获取的上一计算周期内该数据集的查询耗时,根据计算该数据集的查询优先值s
d
,t
k
表示当前计算周期内第k次查询该数据集的耗时,k≥0且k为整数。该数据集的查询优先值s
d
,可以用于表征上一计算周期内各次查询该数据集产生的总耗时,即,上一计算周期内对该数据集执行的各次查询操作对应的查询耗时的加权求和。
53.其中,上述预设权重p根据数据集所对应的业务的存储优先级来设置。例如,在针对不同业务所对应的数据集计算查询优先值时,可以通过变化数据集所对应的预设权重p
来调整、优化数据集的查询优先值,例如,对于两个不同的数据集d’、d”,分别对应两种优先级不同的业务,d’对应的业务优先级高于d”对应的业务的优先级,需要优先将d’存储在一级缓存中,那么,在根据s
d
=p’计算得到s
d’和根据s
d
=p”计算得到s
d”时,如果s
d’和s
d”的大小并不符合业务需要,不能实现优先缓存d’,则可以通过调整预设权重p’和p”,使得s
d’高于s
d”从而实现优先缓存d’,进一步满足实际业务需要。
54.示例性的,当上述预设权重p取值为1时,对于每个数据集,可以根据计算该数据集的查询优先值s
d
,可以用于表征上一计算周期内各次查询该数据集产生的总耗时,即,上一计算周期内对该数据集执行的各次查询操作对应的查询耗时的加权求和。
55.可选的,参照图4,操作s204还可以进一步包括操作s2041b和s2042b,即,可以获取各数据集的容量信息;对于每个数据集,计算在上一计算周期内对该数据集执行的各次查询操作对应的查询耗时之和与该数据集的容量的比值。
56.在操作s2041b,获取各数据集的容量信息。若将计算周期设置为一一天,以bi领域常用的报表系统为例,基于上述通过日志分析出昨日执行的查询操作的查询信息,可以获取到查询了哪些数据集和各个数据集的查询耗时,该操作中还包括获取各数据集的容量信息。具体的,数据集的容量信息可以从数据仓库获取,数据仓库中包含数据集的基本信息,例如数据集容量等可以描述数据源元信息的元数据。
57.在操作s2042b,对于每个数据集,计算在上一计算周期内对该数据集执行的各次查询操作对应的查询耗时之和与该数据集的容量的比值。
58.具体的,对于每个数据集,获取该数据集d
m
对应的预设权重a
m
和预设偏置b
m
,并结合上述获取的该数据集容量信息和上一计算周期内该数据集的查询耗时,可以根据计算该数据集d
m
的查询优先值s
m
,其中,t
k
表示当前计算周期内第k次查询该数据集的耗时,k≥0且k为整数,v
m
表示该数据集的容量,查询优先值s
m
可以用于表征上一计算周期内各次查询该数据集产生的总耗时与该数据集的容量的比值,即,上一计算周期内对该数据集执行的各次查询操作对应的查询耗时之和与该数据集的容量的比值。
59.上述计算的查询优先值s
m
还可以用于表征数据集每单位数据量所产生的查询优先值,可以衡量缓存该数据集的性价比。示例性的,上述预设权重a
m
和预设偏置b
m
,可以根据具体应用场景的不同业务类型进行不同的设置,例如,当预设权重a
m
和预设偏置b
m
的取值均为0时,计算该数据集的查询优先值s
d
则可以根据进行计算。
60.针对不同业务所对应的数据集,在计算该数据集的查询优先值时,可以通过变化预设权重a
m
和预设偏置b
m
来调整、优化数据集的查询优先值,a
m
可以表示业务相关的预设的权重,b可以表示业务相关的预设的偏置,二者均可以根据数据集所对应的业务的存储优先级来设置。
61.例如,对于两个不同的数据集d1、d2,分别对应两种优先级不同的业务,d1对应的业务优先级高于d2对应的业务的优先级,需要优先将d1存储在一级缓存中,那么,在根据分别计算两个数据集的查询优先值s1和s2时,如果s1和s2值的大小并不符合业务需要,不能实现优先缓存d1,则可以通过调整预设权重a
m
和/或预设偏置b
m
,使得在根据
计算该数据集的查询优先值得到s1和s2时,能够使数据集d1查询优先值高于d2,从而实现优先缓存d1,进一步满足实际业务需要。
62.针对不同业务所对应的数据集,在计算该数据集的查询优先值时,可以通过变化预设权重a
m
和预设偏置b
m
来调整、优化数据集的查询优先值,a
m
可以表示业务相关的预设的权重,b可以表示业务相关的预设的偏置,二者均可以根据数据集所对应的业务的存储优先级来设置。
63.例如,对于两个不同的数据集d1、d2,分别对应两种优先级不同的业务,d1对应的业务优先级高于d2对应的业务的优先级,需要优先将d1存储在一级缓存中,那么,在根据分别计算两个数据集的查询优先值s1和s2时,如果s1和s2值的大小并不符合业务需要,不能实现优先缓存d1,则可以通过调整预设权重a
m
和/或预设偏置b
m
,使得在根据计算该数据集的查询优先值得到s1和s2时,能够使数据集d1查询优先值高于d2,从而实现优先缓存d1,进一步满足实际业务需要。
64.可选的,预设权重a
m
和预设偏置b
m
可以根据不同数据集来设置,针对特定的业务所对应的多个数据集,可以通过变化预设权重和预设偏置来调整、优化不同数据集的查询优先值。例如,对于同一特定业务所涉及的两个不同的数据集d1、d2,数据集d1优先级高于d2,需要优先将d1存储在一级缓存中,那么,在根据分别计算两个数据集的查询优先值s1和s2时,可以通过调整预设权重a
m
和预设偏置b
m
,将数据集d1的查询优先值调高,使得d1的查询优先值s1高于d2的查询优先值s2,从而实现优先缓存d1,进一步满足实际业务需要。达到通过针对于不同的数据集设置不同的预设权重a
m
和预设偏置b
m
,进一步根据实际需求调整特定业务涉及的数据集的查询优先值,从而实现对不同数据集查询优先级的调整。
65.可选的,上述计算操作包括但不限于上述算式,还可以通过例如机器学习模型等来实现,可以根据具体应用场景下的业务需求进行选择和设计,例如,当业务上更关注数据集的查询耗时的加权求和时可以采用如操作s2041a的方法来计算查询优先值,当业务上更关注数据集的单位数据量的查询耗时之和时可以采用如操作s2041b和s2042b的方法来计算查询优先值。
66.无论以何种计算方案实施上述操作s204,本发明提供的数据存储方法均可适用。此外,在具体应用场景中实施上述方案时,经过一定次数的计算周期之后,作为查询对象的诸多数据集的查询优先值可能会呈现出一定的规律性,可以反映所对应业务的相关数据集被查询的情况,从而进一步反映所对应业务的访问情况(例如,一些bi分析场景下的数据访问模式)。基于此,通过上述实施方案可以进一步调整、优化对数据集查询优先值的计算方案,进而影响将数据集存储至多个不同级别缓存的顺序,持续不断地进行优化,给出最佳缓存策略,实现了根据实际需求将最需要缓存的数据预先存储在缓存中,使得可以针对具体应用场景进行自适应优化,达到不断提升查询效率的效果,进一步体现根据本发明实施例的方法的效果导向和数据驱动等优点。
67.在操作s206,根据上述数据集的查询优先值由高到低的顺序将数据集依次存储至
不同级别的缓存。具体的,基于上述计算所得的数据集的查询优先值,按照由高到低的顺序依次加载至一级缓存空间、二级缓存空间等多级缓存结构中,当一级缓存被加载满之后,再向二级缓存中加载,类似的,二级缓存被加载满之后,再向三级缓存中加载,以此类推。
68.可选的,在根据上述数据集的查询优先值由高到低的顺序将数据集依次存储至不同级别的缓存之后,本发明实施例提供的方法还可以包括接收用户的查询指令,上述查询指令包括当前计算周期内的查询操作和各查询操作对应的待查询的数据集信息;基于上述各查询操作对应的待查询的数据集信息,优先在上述不同级别的缓存中进行查询。例如,在接收用户的查询指令后,根据查询指令包含所要执行的查询操作和查询操作对应的待查询的数据集信息,数据集q为待查询的数据集。由于在已执行的根据本发明实施例的数据存储方法的操作中,已计算出数据集q的查询优先值s
q
,且该数据集q已存储在某一级别的缓存中,因此在查询该数据集q时,优先在不同级别的缓存中进行查询,如,一级缓存、二级缓存等。
69.具体的,当用户通过例如报表系统等应用发起查询时,运行本发明实施例提供的方法服务器或设备等接收用户的查询指令,查询指令例如可以是sql语句,各条语句可以对多个不同对数据集执行的查询操作,查询指令中可以包含所要查询哪些数据集、各数据集的基本信息(例如,属性信息)等相关信息,优先在多级缓存中逐级查询,如所需查询的数据集已在上述操作s206中被存储在缓存中,则可以高速的查询到该数据集,如不在缓存中,则继续在其他存储设备(例如,本地存储设备)等中继续查询。查询操作的查询信息均会中查询日志中生成相应的记录。
70.示例性的,在实际应用场景下运用了本发明实施例提供的方法后,在无人维护和干预的情况下,根据查询日志中的记录,采用上述存储方法后,数据集的平均查询优先值明显下降了60
‑
70%,并持续稳定。进一步验证了本发明实施例提供的上述方法可以自适应地将不同数据集合理地存储于不同级别的缓存中,实现了基于历史的查询情况进行分析计算来动态调整缓存从而优化未来的查询效果,有效降低查询耗时,并显著提高查询效率,上述可选的多种分析计算方法还体现了数据驱动的思想,以效果为导向优化了查询性能,并能够自动且持续地实现上述优化效果。
71.可选的,在上述查询操作后,还可以获取当前计算周期内的查询日志,用于为下一次计算数据集的查询优先值提供查询信息,当前计算周期内的查询日志即为下一次计算查询优先值前操作s202中需要获取的数据集的查询信息,并重复上述任一实施例的s202~s206的操作步骤。
72.基于上述操作,本发明实施例采用多级缓存结构,通过从查询日志中获取上一计算周期内的查询操作对象的数据集的查询信息,从而计算数据集的查询优先值,按照查询优先值由高到低顺序依次存储在各级缓存中,实现了基于历史的查询情况进行分析计算来动态调整缓存来优化未来的查询效果,从而自适应地调整各级缓存中加载的数据集,使得在有限的缓存空间约束下,高效管理缓存,将查询优先值由高到低的数据依次存储在传输速度由高到低的各级缓存中,从而适应工程实践应用的需求将不同数据集合理地存储于不同级别的缓存中,有效降低查询耗时,并显著提高查询效率。
73.本发明的第三个示例性实施例提供了一种用于数据存储的装置。
74.图5示意性示出了根据本发明又一实施例的用于数据存储的装置的结构框图。
75.参照图5所示,本发明实施例提供的用于数据存储的装置500,包括获取模块501、计算模块502和存储模块503。
76.上述获取模块501用于从查询日志中获取作为在上一计算周期内的查询操作对象的数据集的查询信息,上述计算周期是相邻两次计算数据集的查询优先值之间的时间间隔。
77.上述计算模块502用于根据上述数据集的查询信息计算上述数据集的查询优先值。
78.上述存储模块503用于根据上述数据集的查询优先值由高到低的顺序将数据集依次存储至多级缓存。
79.上述数据存储的装置500除了包括获取模块501、计算模块502和存储模块503之外,还可以进一步包括:查询模块。
80.上述查询模块用于接收用户的查询指令,上述查询指令包括当前计算周期内的查询操作和各查询操作对应的数据集信息;基于上述各查询操作对应的数据集信息,优先在上述多级缓存中进行查询。
81.上述查询模块还可以进一步包括日志获取模块,上述日志获取模块用于获取当前计算周期内的查询日志,用于为下一次计算数据集的查询优先值提供查询信息。
82.上述获取模块501、计算模块502和存储模块503中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。获取模块501、计算模块502和存储模块503中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块501、计算模块502和存储模块503中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
83.本发明的第四个示例性实施例提供了一种电子设备。
84.图6示意性示出了本发明实施例提供的电子设备的结构框图。
85.参照图6所示,本发明实施例提供的电子设备600包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601、通信接口602和存储器603通过通信总线604完成相互间的通信;存储器603,用于存放计算机程序;处理器601,用于执行存储器上所存放的程序时,实现如上所述的数据存储的方法。
86.本发明的第五个示例性实施例还提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的数据存储的方法。
87.该计算机可读存储介质可以是上述实施例中描述的设备/装置中所包含的;也可以是单独存在,而未装配入该设备/装置中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本发明实施例的数据存储的方法。
88.根据本发明的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器
(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd
‑
rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
89.在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
90.以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所发明的原理和新颖特点相一致的最宽的范围。