数据查询方法、装置及计算机可读存储介质与流程

文档序号:18193076发布日期:2019-07-17 05:40阅读:164来源:国知局
数据查询方法、装置及计算机可读存储介质与流程

本发明涉及大数据处理技术领域,特别涉及一种数据查询方法、装置及计算机可读存储介质。



背景技术:

随着互联网技术的发展,通常需要根据用户的需求对海量数据进行查询,以得到用户想要查询的数据,为了便于描述,将用户想要查询的数据称为目标数据。实际应用中,目标数据通常为一定时间段内的数据,如用户想要查询某个超市昨天的销售额,目标数据即为昨天一天该超市的销售额。

相关技术中,为了提高从海量数据中查询目标数据的效率,可以预先建立多维度的数据立方表,每个维度对应数据的一种属性类型,数据在某个属性类型上的属性值对应该维度上的维度值。比如,销售额数据的属性类型包括销售时间、产品类别和销售区域,则对应的多个维度分别为销售时间、产品类别和销售区域,其中,销售额数据在属性类型为销售时间上的属性值对应维度为销售时间上的维度值。其中,数据立方表包括多个立方单元,每个维度均包括多个层级粒度,每个立方单元用于存储该多个维度中一个层级粒度的数据。比如,对于销售额数据,销售时间这个维度包括的层级粒度可以为天、月、年,产品类别这个维度包括的层级粒度可以为牛奶、面包、饮料,销售区域这个维度包括的层级粒度可以为北京、上海、西安,此时,对于该多个立方单元中的某个立方单元,该立方单元可以用于存储一天内牛奶在西安的销售额。

在建立数据立方表之后,对于该多个立方单元中的每个立方单元,从源数据库中查找该立方单元对应的所有数据,并对查找的数据进行处理得到该立方单元的聚集值,比如对查找的数据进行求和处理或平均值处理等。后续当需要查询目标数据时,根据目标数据的属性类型,遍历该数据立方表中的每个立方单元,确定与该目标数据对应的立方单元,并将该立方单元的聚集值确定为目标数据。

当源数据库的数据量较多时,上述数据立方表包括的立方单元的数量也较多,此时,如果直接从该数据立方表中查询目标数据,导致查询量过大,从而影响查询目标数据的效率。



技术实现要素:

为了解决相关技术从数据立方表中查询目标数据效率低的问题,本发明实施例提供了一种数据查询方法、装置及计算机可读存储介质。所述技术方案如下:

第一方面,提供了一种数据查询方法,所述方法包括:

当接收到目标数据的查询请求时,确定所述目标数据对应的时间属性值;

当所述时间属性值位于第一预设时间段内时,从预先存储的数据立方表包括的近期数据立方表中查询所述目标数据,所述第一预设时间段为当前时间之前且与当前时间之间相差第一预设时长的时间段,所述近期数据立方表用于存储时间属性值位于所述第一预设时间段内的数据;

当所述时间属性值位于第二预设时间段内时,从所述数据立方表包括的历史数据立方表中查询所述目标数据,所述第二预设时间段为所述第一预设时间段中最早时间之前的时间段,所述历史数据立方表用于存储时间属性值位于所述第二预设时间段内的数据。

可选地,所述确定所述目标数据对应的时间属性值之后,还包括:

当所述时间属性值中的一部分位于所述第一预设时间段内,另一部分位于所述第二预设时间段内时,根据所述一部分的时间属性值从所述近期数据立方表中查询数据,得到第一数据;

根据所述另一部分的时间属性值从所述历史数据立方表中查询数据,得到第二数据,所述近期数据立方表的时间维度的层级粒度比所述历史数据立方表的时间维度的层级粒度细;

根据所述第一数据和所述第二数据,确定所述目标数据。

可选地,所述从预先存储的数据立方表包括的近期数据立方表中查询所述目标数据之前,还包括:

创建空白的数据立方表,所述空白的数据立方表包括空白的近期数据立方表和空白的历史数据立方表;

从源数据库中查找所述近期数据立方表中的每个立方单元对应的数据,并基于查找的数据确定所述近期数据立方表中每个立方单元的聚集值;

从所述源数据库中查找所述历史数据立方表中的每个立方单元对应的数据,并基于查找的数据确定所述历史数据立方表中每个立方单元的聚集值。

可选地,所述从源数据库中查找所述近期数据立方表中的每个立方单元对应的数据,并基于查找的数据确定所述近期数据立方表中每个立方单元的聚集值之后,还包括:

当所述源数据库中新增数据时,从所述近期数据立方表中查找与所述源数据库中新增的数据对应的立方单元;

根据所述新增的数据,更新查找到的立方单元的聚集值。

可选地,所述从所述源数据库中查找所述历史数据立方表中的每个立方单元对应的数据,并基于查找的数据确定所述历史数据立方表中每个立方单元的聚集值之后,还包括:

对于所述近期数据立方表中的每个立方单元,每隔第二预设时长确定所述立方单元的时间维度值;

当所述立方单元的时间维度值位于所述第二预设时间段内时,将所述立方单元从所述近期数据立方表中删除,并将所述立方单元的聚集值添加至所述历史数据立方表中对应的立方单元中。

可选地,所述从所述源数据库中查找所述历史数据立方表中的每个立方单元对应的数据,并基于查找的数据确定所述历史数据立方表中每个立方单元的聚集值之后,还包括:

当接收到数据更改请求时,确定待更改的数据的时间属性值;

当所述待更改的数据的时间属性值位于所述第一预设时间段内时,更改所述近期数据立方表中与所述待更改的数据对应的立方单元的聚集值;

当所述待更改的数据的时间属性值位于所述第二预设时间段内时,更改所述历史数据立方表中与所述待更改的数据对应的立方单元的聚集值。

第二方面,提供了一种数据查询装置,所述装置包括:

第一确定模块,用于当接收到目标数据的查询请求时,确定所述目标数据对应的时间属性值;

第一查询模块,用于当所述时间属性值位于第一预设时间段内时,从预先存储的数据立方表包括的近期数据立方表中查询所述目标数据,所述第一预设时间段为当前时间之前且与当前时间之间相差第一预设时长的时间段,所述近期数据立方表用于存储时间属性值位于所述第一预设时间段内的数据;

第二查询模块,用于当所述时间属性值位于第二预设时间段内时,从所述数据立方表包括的历史数据立方表中查询所述目标数据,所述第二预设时间段为所述第一预设时间段中最早时间之前的时间段,所述历史数据立方表用于存储时间属性值位于所述第二预设时间段内的数据。

可选地,所述装置还包括:

第三查询模块,用于当所述时间属性值中的一部分位于所述第一预设时间段内,另一部分位于所述第二预设时间段内时,根据所述一部分的时间属性值从所述近期数据立方表中查询数据,得到第一数据;

第四查询模块,用于根据所述另一部分的时间属性值从所述历史数据立方表中查询数据,得到第二数据,所述近期数据立方表的时间维度的层级粒度比所述历史数据立方表的时间维度的层级粒度细;

第二确定模块,用于根据所述第一数据和所述第二数据,确定所述目标数据。

可选地,所述装置还包括:

创建模块,用于创建空白的数据立方表,所述空白的数据立方表包括空白的近期数据立方表和空白的历史数据立方表;

第一查找模块,用于从源数据库中查找所述近期数据立方表中的每个立方单元对应的数据,并基于查找的数据确定所述近期数据立方表中每个立方单元的聚集值;

第二查找模块,用于从所述源数据库中查找所述历史数据立方表中的每个立方单元对应的数据,并基于查找的数据确定所述历史数据立方表中每个立方单元的聚集值。

可选地,所述装置还包括:

第三查找模块,用于当所述源数据库中新增数据时,从所述近期数据立方表中查找与所述源数据库中新增的数据对应的立方单元;

更新模块,用于根据所述新增的数据,更新查找到的立方单元的聚集值。

可选地,所述装置还包括:

第三确定模块,用于对于所述近期数据立方表中的每个立方单元,每隔第二预设时长确定所述立方单元的时间维度值;

删除模块,用于当所述立方单元的时间维度值位于所述第二预设时间段内时,将所述立方单元从所述近期数据立方表中删除,并将所述立方单元的聚集值添加至所述历史数据立方表中对应的立方单元中。

可选地,所述装置还包括:

第四确定模块,用于当接收到数据更改请求时,确定待更改的数据的时间属性值;

第一更改模块,当所述待更改的数据的时间属性值位于所述第一预设时间段内时,更改所述近期数据立方表中与所述待更改的数据对应的立方单元的聚集值;

第二更改模块,当所述待更改的数据的时间属性值位于所述第二预设时间段内时,更改所述历史数据立方表中与所述待更改的数据对应的立方单元的聚集值。

第三方面,提供一种数据查询装置,所述数据查询装置包括处理器、通信接口、存储器和通信总线;

所述处理器,所述通信接口和所述存储器通过所述通信总线完成相互间的通信;

所述存储器用于存放计算机程序;

所述处理器用于执行存储器上所存放的程序,以实现上述第一方面所述的数据查询方法。

第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的数据查询方法。

第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的数据查询方法。

本发明实施例提供的技术方案带来的有益效果是:

在本发明实施例中,当接收到目标数据的查询请求时,由于数据立方表包括的近期数据立方表用于存储时间属性值位于所述第一预设时间段内的数据,且数据立方表包括的历史数据立方表用于存储时间属性值位于所述第二预设时间段内的数据,因此可以根据目标数据对应的时间属性值,从历史数据立方表或近期数据立方表中查找目标数据,避免直接从整个数据立方表中查询目标数据,降低了从数据立方表中查询目标数据的工作量,从而可以提高目标数据的查询效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种数据立方表示意图;

图2是本发明实施例提供的一种数据查询方法流程图;

图3是本发明实施例提供的另一种数据查询方法流程图;

图4是本发明实施例提供的另一种数据查询方法流程图;

图5a是本发明实施例提供的一种数据查询装置框图;

图5b是本发明实施例提供的另一种数据查询装置框图;

图6是本发明实施例提供的另一种数据查询装置框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

为了后续便于说明,在对本发明实施例提供的数据查询方法进行详细说明之前,先对本发明实施例涉及的名词进行介绍

属性类型,是指用于描述数据本身固有属性的信息,一个数据可以有多个属性类型。比如,对于销售额数据,实际应用中通常使用销售时间、产品种类和销售区域来描述销售额数据,如“周一牛奶在西安地区的销售额”、“周二面包在上海地区的销售额”等,此时,该销售额数据的属性类型包括销售时间、产品类别和销售区域。

属性值,是指数据在某个属性类型上的具体数据,如上述“周一牛奶在西安地区的销售额”,此时,对于销售时间这个属性类型,属性值为周一;对于产品类别这个属性类型,属性值为牛奶,对于销售地区这个属性类型,属性值为西安。

数据立方表,是指根据源数据库中数据的属性类型建立的一种用于存储数据的表,数据立方表是由多个立方单元构成,每个立方单元用于存储多个维度上一个层级粒度上的数据。下面对数据立方表中涉及的名词进行解释。

维度,是指数据立方中用于描述数据属性类型的信息,也即在多维度数据立方表中,每个维度对应数据的一个属性类型。

维度值,对于数据在某个属性类型上的属性值,该属性值在数据立方表对应的维度上具体数据即为该数据在该维度上的维度值。

层级粒度,是指数据立方表的各个维度上计量单位,比如,对于根据销售额数据建立的数据立方表,该数据立方表的三个维度分别为销售时间、产品类别和销售区域。对于销售时间这个维度,该维度的计量单位可以为天、月或年,也即对于销售时间这个维度,该维度的层级粒度可以为天、月或年。对于产品类别这个维度,该维度的计量单位可以为不同食品或不同生活用品,也即该维度的层级粒度可以为不同食品或不同生活用品,当该维度的层级粒度为不同食品时,该维度的层级粒度具体可以为牛奶、面包或饮料等。对于销售区域这个维度,该维度的计量单位可以为不同城市、不同省份或不同国家,也即该维度的层级粒度可以为城市、省份或国家,当该维度的层级粒度为城市时,该维度的层级粒度具体可以为西安、上海或北京等。

图1为本发明实施例提供的一种数据立方表100的示意图,该数据立方表100包括三个维度,该三个维度分别标记为维度t、维度o和维度e,其中,维度t对应的数据的属性类型为a,维度o对应的数据的属性类型为b,维度e对应的数据的属性类型为c。另外,对于该三个维度中的每个维度,对每个维度设置有一个层级粒度。

如图1所示,在维度t上有多个不同的维度值t1、t2、t3等,在维度o上有多个不同的维度值o1、o2、o3等,在维度e上有多个不同的维度值e1、e2、e3等。其中,对于每个维度,该维度的层级粒度用于表征该维度上两个相邻的维度值之间的区别。也即,维度t上的层级粒度用于表征维度值t1和t2之间的区别,维度o上的层级粒度用于表征维度值o1和o2之间的区别,维度e上的层级粒度用于表征维度值e1和e2之间的区别。另外,该数据立方表100包括多个立方单元,每个立方单元在该三个维度的每个维度上分别对应一个维度值。

例如,该数据立方表100是根据销售额数据建立的数据立方表,其中,维度t为销售时间,维度o为产品类别,维度e为销售区域。属性类型a为销售时间,属性类型b为产品类别,属性类型c为销售区域。其中,t1为5月1号、t2为5月2号、t2为5月3号。o1为牛奶、o2为面包、o3为饮料,e1为西安、e2为上海、e3为北京。5月1号、5月2号和5月3号是依据天划分的时间,所以销售时间这个维度的层级粒度为天,牛奶、面包和饮料是依据不同食品划分的,所以产品类别这个维度的层级粒度为不同的食品,西安、上海和北京是依据不同的城市划分的,所以销售区域这个维度的层级粒度为不同的城市。此时,对于由t1、o1和e1构成的立方单元,该立方单元用于存储5月1号牛奶在西安的销售额。

另外,在此对本发明实施例的应用场景也予以介绍。在本发明实施例中,源数据库中存储的数据通常为原始数据。比如,针对某个超市的销售情况建立的源数据库,该源数据库中存储的是原始的销售数据,如在××时间销售××产品,销售额为××。但是实际应用中,用户想要查询的目标数据通常为一定时间段内的数据,此时需要从源数据库中查询该一定时间段内的所有原始数据,并根据该一定时间段内的所有原始数据,确定目标数据。比如,目标数据为5月3号牛奶的销售额,此时需要从源数据库中查找5月3号当天所有的牛奶的销售数据,并将5月3号当天所有的牛奶的销售数据进行求和,得到5月3号牛奶的销售额。当源数据库中存储的原始数据数量较多时,从该源数据库中查询目标数据的工作量较大,所以,相关技术中根据源数据库中存储的原始数据,预先建立多维度的数据立方表,该立方数据表包括多个立方单元,当需要查询目标数据时,直接从该数据立方表中查询目标数据。而本发明实施例就应用于从数据立方表中查询目标数据的场景。

下面对本发明实施例提供的数据查询方法进行详细说明

图2为本发明实施例提供的一种数据查询方法流程图,该数据查询方法应用于终端或服务器中,如图2所示,该数据查询方法包括以下步骤。

步骤201:当接收到目标数据的查询请求时,确定该目标数据对应的时间属性值。

由于在本发明实施例中,数据立方表包括近期数据立方表和历史数据立方表,因此,为了确定是从近期数据立方表查询目标数据还是从历史数据立方表查询目标数据,当接收到目标数据的查询请求时,需先确定目标数据对应的时间属性值。

步骤202:当该时间属性值位于第一预设时间段内时,从预先存储的数据立方表包括的近期数据立方表中查询该目标数据,该第一预设时间段为当前时间之前且与当前时间之间相差第一预设时长的时间段,该近期数据立方表用于存储时间属性值位于该第一预设时间段内的数据。

由于近期数据立方表用于存储时间属性值位于该第一预设时间段内的数据,因此当该时间属性值位于第一预设时间段内时,可以直接从该近期数据立方表中查询该目标数据,避免直接从整个数据立方表中查询目标数据,降低了查询目标数据的工作量。

步骤203:当该时间属性值位于第二预设时间段内时,从该数据立方表包括的历史数据立方表中查询该目标数据,该第二预设时间段为该第一预设时间段中最早时间之前的时间段,该历史数据立方表用于存储时间属性值位于该第二预设时间段内的数据。

由于历史数据立方表用于存储时间属性值位于该第二预设时间段内的数据,因此当该时间属性值位于第二预设时间段内时,可以直接从该历史数据立方表中查询该目标数据,避免直接从整个数据立方表中查询目标数据,同样降低了查询目标数据的工作量。

在本发明实施例中,当接收到目标数据的查询请求时,由于数据立方表包括的近期数据立方表用于存储时间属性值位于第一预设时间段内的数据,且数据立方表包括的历史数据立方表用于存储时间属性值位于第二预设时间段内的数据,因此可以根据目标数据对应的时间属性值,从历史数据立方表或近期数据立方表中查找目标数据,避免直接从整个数据立方表中查询目标数据,降低了从数据立方表中查询目标数据的工作量,从而可以提高目标数据的查询效率。

在本发明实施例中,查询目标数据是从预先建立的数据立方表中查询的,因此本发明实施例提供的数据查询方法主要包括两个方面的内容,一是创建数据立方表,二是根据已经创建的数据立方表查询目标数据。接下来的实施例将分别对这两个方面的内容进行详细解释说明。

图3为本发明实施例提供的一种数据查询方法流程图,该数据查询方法应用于终端或服务器中,该方法用于对创建数据立方表的过程进行详细解释说明。如图3所示,该数据查询方法包括以下步骤。

步骤301:创建空白的数据立方表,该空白的数据立方表包括空白的近期数据立方表和空白的历史数据立方表。

具体地,根据源数据库中存储的数据的属性类型,确定待创建的近期数据立方表的维度和历史数据立方表的维度,以及每个维度上的层级粒度;并根据近期数据立方表中每个维度上的层级粒度,确定近期数据立方表包括的多个立方单元中每个立方单元在各个维度上的维度值;根据历史数据立方表中每个维度上的层级粒度,确定历史数据立方表包括的多个立方单元中每个立方单元在各个维度上的维度值。

需要说明的是,由于近期数据立方表用于存储时间属性值位于第一预设时间段内的数据,且历史数据立方表用于存储时间属性值位于第二预设时间段内的数据,因此,本发明实施例提供的数据立方表的多个维度中一个维度为时间维度。

其中,第一预设时间段为当前时间之前且与当前时间之间相差第一预设时长的时间段,该第一预设时长为预先设置的时长。如该第一预设时长可以为一天、一周或一个月,此时该第一预设时间段可以为当前时间之前最近一天的时间段,可以为当前时间之前最近一周的时间段,也可以为当前时间之前最近一个月的时间段。第二预设时间段为该第一预设时间段中最早时间之前的时间段。当第一预设时间段为当前时间之前最近一天的时间段时,则第二预设时间段为在当前时间之前且距离当前时间一天的时间之前的时间段。当第一预设时间段为当前时间之前最近一周的时间段时,则第二预设时间段为在当前时间之前且距离当前时间一周的时间之前的时间段。

另外,空白的近期数据立方表的维度和空白的历史数据立方表的维度均相同,也即,当空白的近期数据立方表的维度分别为维度t、维度o和维度e时,该空白的历史数据立方表的维度也分别为维度t、维度o和维度e。其中,近期数据立方表和历史数据立方表的区别在于,二者的时间维度的维度值区间不同,也即,近期数据立方表的时间维度的维度值区间为第一预设时间段,历史数据立方表的时间维度的维度值区间为第二预设时间段,以实现近期数据立方表用于存储时间属性值位于第一预设时间段内的数据,历史数据立方表用于存储时间属性值位于第二预设时间段内的数据。

进一步地,由于实际应用中,用户查询近期的数据时通过需要查询比较详细的数据,而在查询近期之前的数据时,通常只需查询大致的数据,比如,对于销售额数据,用户想要查询当月销售数据时,通常想要查询当月的每天的销售数据,对于当月之前的销售数据,用户一般只需查询当月之前每个月的销售数据即可。

因此,在本发明实施例中,在创建空白的近期数据立方表和空白的历史数据立方表时,该近期数据立方表的时间维度的层级粒度比该历史数据立方表的时间维度的层级粒度细,以实现近期数据立方表中存储的数据比较详细,历史数据立方表中存储的数据比较粗略。比如,近期数据立方表的时间维度的层级粒度为天,历史数据立方表的时间维度的层级粒度为月,或者,近期数据立方表的时间维度的层级粒度为月,历史数据立方表的时间维度的层级粒度为年。

并且,若相关技术中的数据立方表的各个维度的层级粒度和本明实施例提供的近期数据立方表的各个维度的层级粒度一致时,由于本发明实施例提供的历史数据立方表的时间维度的层级粒度比近期数据立方表的时间维度的层级粒度要粗,此时,相对于相关技术中的数据立方表中存储的数据的数量,本发明实施例提供的数据立方表中存储的数据的数量将减少,从而可以减少存储所需的空间。

步骤302:从源数据库中查找该近期数据立方表中的每个立方单元对应的数据,并基于查找的数据确定该近期数据立方表中每个立方单元的聚集值。

在确定出近期数据立方表包括的多个立方单元中每个立方单元在各个维度上的维度值之后,由于对于多维度的数据立方表而言,每个维度对应数据的一种属性类型,数据在某个属性类型上的属性值对应该维度上的维度值,因此,可以根据每个立方单元在各个维度上的维度值,从源数据库中查找与该立方单元对应的数据,也即,从源数据库中查找在各个属性类型上的属性值属于该每个立方单元在各个维度上的维度值的数据,得到多个数据。对该多个数据进行处理,以确定该每个立方单元的聚集值,并存储该每个立方单元的聚集值。

其中,对该多个数据进行处理可以为求和处理和平均值处理,实际应用中,根据需要确定该处理的类型。

例如,对于销售额数据,近期数据立方表包括的多个立方单元中某个立方单元在销售时间这个维度上的维度值为5月1号,在产品类别这个维度上的维度值为牛奶,在销售区域这个维度上的维度值为西安。此时,从源数据库中查找满足指定条件的数据,该指示指定条件为在销售时间这个属性类型上的属性值属于5月1号,在产品类别这个属性类型上的属性值属于牛奶,在销售区域这个属性类型上的属性值属于西安。将查找到的数据进行求和处理,并将得到的和确定为该立方单元的聚集值。

步骤303:从该源数据库中查找该历史数据立方表中的每个立方单元对应的数据,并基于查找的数据确定该历史数据立方表中每个立方单元的聚集值。

其中,步骤303的实现过程和步骤302的实现过程基本相同,在此不再详细说明。

进一步地,在根据源数据库中存储的数据创建数据立方表之后,由于源数据库源源不断进入新的数据,导致创建的数据立方表已不能包括源数据库中的每个数据。因此,在创建数据立方表之后,还需根据源数据库中新增的数据,对创建的数据立方表进行更新。具体地,对数据立方表进行更新可以通过下述步骤304实现。

步骤304:根据源数据库中新增的数据,更新近期数据立方发表。

具体地,当该源数据库中新增数据时,从该近期数据立方表中查找与该源数据库中新增的数据对应的立方单元,根据该新增的数据,更新查找到的立方单元的聚集值。

当该新增的数据包括多条数据时,对于新增的数据中的每条数据,确定该条数据的属性类型和在该属性类型上的属性值,根据该条数据的属性类型和在该属性类型上的属性值,从近期数据立方表中查找与该条数据对应的立方单元,并对该条数据和查找到的立方单元的聚集值进行处理,并将处理后的数据重新确定为该查找到的立方单元的聚集值,以实现对近期数据立方表的更新。

例如,对于销售额数据,当查找到与该条数据对应的立方单元时,将该条数据和查找到的立方单元的聚集值相加,并将相加后的数据新确定为该查找到的立方单元的聚集值。

需要说明的是,当该源数据库中新增数据时,可以实时采用上述步骤304更新近期数据立方发表,也即,每当源数据库中新增一个数据,则采用步骤304更细近期数据立方表。

当然,当该源数据库中新增数据时,可以定期采用步骤304更新近期数据立方发表,也即,每隔第三预设时长确定源数据库中新增的数据,并采用步骤304更新近期数据立方表。

其中,第三预设时长可以为1min、1h或2h等。另外,该第三预设时长不能大于第一预设时间段表征的时间周期,也即,该第三预设时长不能大于第一预设时长,比如,第一预设时间段为当前时间之前最近一天的时间段,也即第一预设时长为一天,此时,该第三预设时长不能大于该第一预设时长。

由步骤304可知,根据源数据库中新增的数据对数据立方表进行更新,只是对近期数据立方表进行更新。另外,由于第一预设时间段为当前时间之前且与当前时间之间相差第一预设时长的时间段,第二预设时间段为该第一预设时间段中最早时间之前的时间段,因此,历史数据立方表中存储的数据的数量要远远多于近期数据立方表中存储的数据的数量。所以,相对于根据源数据库中新增的数据对整个数据立方表进行更新,根据源数据库中新增的数据对近期数据立方表进行更新,可以减少更新数据立方表时的工作量,从而提高更新数据库的速度,避免由于更新数据立方表而影响正常数据业务的使用,比如,数据查询等业务。

值得注意的是,上述步骤304对数据立方表进行更新,只是更新近期数据立方表。实际应用中,对于源数据库中新增的数据,该新增的数据对应的时间属性值可能位于第二预设时间段内,也即,需要根据该新增的数据,对历史数据立方表进行更新。此时,可以根据该新增的数据,参考步骤304更新历史数据立方表,本发明实施例在此不再详细阐述。

再进一步地,由于第一预设时间段为当前时间之前且与当前时间之间相差第一预设时长的时间段,因此,随着时间的推移,在第一预设时长固定不变时,该第一预设时间段为是随着当前时间的变化而变化的。例如,第一预设时长为一天,在当天8:00时,该第一预设时间段为昨天8:00至当天8:00;在当天12:00时,该第一预设时间段为昨天12:00至当天12:00。

因此,随着时间的推移,该近期数据表中可能存储有过期的数据。所以需对该近期数据立方表中过期的数据进行清理。具体地,可以通过下述步骤305和步骤306来实现对近期数据立方表中过期数据的清理。

步骤305:对于该近期数据立方表中的每个立方单元,每隔第二预设时长确定该立方单元的时间维度值。

其中,第二预设时长为预先设置的时长,该第二预设时长可以为一天、二天或三天等,但是第二预设时长不能大于第一预设时长。例如,第一预设时长为一天,也即,第一预设时间段为当前时间之前最近一天的时间段,此时,如果第二预设时长为两天,将导致近期数据立方表中存在大量过期数据,不利于终端或服务器从近期数据立方发表中精确查询目标数据。

步骤306:当该立方单元的时间维度值位于该第二预设时间段内时,将该立方单元从该近期数据立方表中删除,并将该立方单元的聚集值添加至该历史数据立方表中对应的立方单元中。

当该立方单元的时间维度值位于该第二预设时间段内时,表明该立方单元代表的数据为过期数据,此时需将该过期数据从近期数据立方表中清理,并转移至历史数据立方表中,以实现对近期数据立方表和历史数据立方表的更新。

具体地,根据该立方单元在各个维度上的维度值,从该历史数据立方表中查找与该立方单元对应的立方单元,并确定查找到的立方单元的聚集值,对该立方单元的聚集值和查找到的立方单元的聚集值进行处理,将处理得到的数据重新确定为查找到的立方单元的聚集值,以实现将近期数据立方表中的过期数据转移至历史数据立方表中。

例如,第一预设时长为一周,第二预设时长为一天,每隔一天确定近期数据立方表中每个立方单元的时间维度值,并判断该立方单元的时间维度值是否位于当前时间最近一周内,当该立方单元的时间维度值不再位于当前时间之前最近一周内,而是位于在当前之前且距离当前时间一周的时间之前的时间段内时,也即位于第二预设时间段内时,确定该立方单元的聚集值,并按照上述方法将该立方单元从近期数据立方表中删除,并根据该立方单元的聚集值,更新历史数据立方表。

由步骤305和步骤306可知,将近期数据立方表中过期的数据进行清理并将该过期的数据转移到历史数据立方表中是每隔第二预设时长进行的,而该第二预设时长为预先设置的时长。因此,可以在每天业务空闲期将近期数据立方表中过期的数据进行清理并将该过期的数据转移到历史数据立方表中,如每天0:00将近期数据立方表中过期的数据进行清理并将该过期的数据转移到历史数据立方表中,避免在白天业务繁忙期时,由于将近期数据立方表中过期的数据进行清理并将该过期的数据转移到历史数据立方表中而影响正常数据业务的使用。

进一步地,实际应用中,当用户确定已存储的数据存在错误时,可能需要对存储的数据进行更改,此时,则需对数据立方表中数据进行更改。其中,对数据立方表中数据进行更改可以通过下述步骤307来实现。

步骤307:当接收到数据更改请求时,对近期数据立方表中数据或历史数据立方表中的数据进行更改。

具体地,当接收到数据更改请求时,确定待更改的数据的时间属性值。当该待更改的数据的时间属性值位于该第一预设时间段内时,更改该近期数据立方表中与该待更改的数据对应的立方单元的聚集值。当该待更改的数据的时间属性值位于该第二预设时间段内时,更改该历史数据立方表中与该待更改的数据对应的立方单元的聚集值。

在一种可能的实现方式中,该数据更改请求携带第一数据和第二数据,第一数据为更改前的数据,第二数据更改后的数据。

此时,可以根据第一数据的时间属性值,判断第一数据时间属性值位于该第一预设时间段内还是位于第二预设时间段内。当该第一数据的时间属性值位于该第一预设时间段内时,根据该第一数据的属性类型和在该属性类型上的属性值,从近期数据立方表中查找与该第一数据对应的立方单元,并根据第一数据,对该立方单元的聚集值进行更新,以实现将该第一数据中该立方单元中清理。当该第一数据的时间属性值位于该第二预设时间段内时,按照上述同样方法将该第一数据从历史数据立方表中对应的立方单元中清理。

对于第二数据,确定第二数据的时间属性值,判断第二数据时间属性值位于该第一预设时间段内还是位于第二预设时间段内。当该第二数据的时间属性值位于该第一预设时间段内时,根据该第二数据的属性类型和在该属性类型上的属性值,从近期数据立方表中查找与该第二数据对应的立方单元,并根据第二数据,对该立方单元的聚集值进行更新,以实现将该第一数据添加至该立方单元中。当该第二数据的时间属性值位于该第二预设时间段内时,按照上述同样方法将该第二数据添加至历史数据立方表中对应的立方单元。

另外,实际应用中,近期数据立方表中存储的数据为使用频率较高的数据,因此,近期数据立方表中的数据存在错误的几率较高,所以通常对数据进行更改,也即更改近期数据立方表中的数据,由于近期数据立方表中的数据只是源数据库中的部分数据,因此,相对于更改整个数据立方表中的数据,更改近期数据立方表中的数据可以减少更改数据立方表时所需的工作量,从而提高更改数据立方表的速度。

值得注意的是,上述步骤304为对数据立方表进行更新的过程,上述步骤305和步骤306为对数据立方表进行清理和合并的过程,上述步骤307为对数据立方表进行更改的过程,该三个过程之间没有明确的执行顺序,实际应用中,可以根据需要确定这三个过程之间的执行顺序,本发明实施例在此不做具体限定。

在本发明实施例中,当接收到目标数据的查询请求时,由于数据立方表包括的近期数据立方表用于存储时间属性值位于第一预设时间段内的数据,且数据立方表包括的历史数据立方表用于存储时间属性值位于第二预设时间段内的数据,因此可以根据目标数据对应的时间属性值,从历史数据立方表或近期数据立方表中查找目标数据,避免直接从整个数据立方表中查询目标数据,降低了从数据立方表中查询目标数据的工作量,从而可以提高目标数据的查询效率。

当根据图3所示的实施例创建数据立方表之后,可以根据该创建的数据立方表查询目标数据。下面将对根据图3创建的数据立方表查询目标数据的过程进行详细说明。

图4为本发明实施例提供的另一种数据查询方法流程图,该数据查询方法应用于终端或服务器中,该方法用于根据图3创建的数据立方表查询目标数据的过程进行详细解释说明。如图4所示,该数据查询方法包括以下步骤。

步骤401:当接收到目标数据的查询请求时,确定该目标数据对应的时间属性值。

其中,目标数据的查询请求携带目标数据的至少一个属性类型和在该至少一个属性类型中的每个属性类型上的属性值。此时,根据该查询请求携带的至少一个属性类型,确定该目标数据的时间属性类型,并根据确定的时间属性类型,确定目标数据在该时间属性类型上的属性值。

例如,对于销售额数据,目标数据的查询请求携带的至少一个属性类型为销售时间、产品类别和销售区域,并且目标数据在销售时间这个属性类型上的属性值为“5月1号”,目标数据在产品类别这个属性类型上的属性值为“牛奶”,目标数据在销售类别这个属性类型上的属性值为“西安”,也即,用户想要查询的目标数据为“5月1号牛奶在西安的销售额”。此时确定目标数据对应的时间属性值为“5月1号”。

另外,当该数据查询方法应用于终端时,该目标数据的查询请求由用户通过预设操作触发,该预设操作可以为点击操作或语音操作等。当该数据查询方法应用于服务器时,该目标数据的查询请求由用户通过预设操作触发,终端在检测到该目标数据查询请求时,将该目标数据的查询请求发送至服务器,由服务器接收该目标数据的查询请求。

当通过步骤401确定出目标数据的时间属性值之后,判断该目标数据的时间属性值位于第一预设时间段内还是位于第二预设时间段内。得到判断结果之后,根据该判断结果,通过下述步骤402、步骤403或步骤404查询目标数据。

其中,判断该目标数据的时间属性值位于第一预设时间段内还是位于第二预设时间段内的实现过程可以为:确定该时间属性值的起始时间和和终止时间,标记为第一起始时间和第一终止时间,确定第一预设时间段的起始时间和终止时间,标记为第二起始时间和第二终止时间。其中,第一终止时间为当前时间,第二预设时间段为在第二起始时间之前的时间段,也即,第二预设时间段的终止时间为第二起始时间。根据第一起始时间,第一终止时间、第二起始时间和第二终止时间,判断该目标数据的时间属性值位于第一预设时间段内还是位于第二预设时间段内。

具体地,当该第一起始时间比第二起始时间晚时,确定该时间属性值位于第一预设时间段内,此时,执行步骤402。当该第一终止时间比第二起始时间早时,确定该时间属性值位于第二预设时间段内,此时,执行步骤403。当该第一起始时间比第二起始时间早,且该第一终止时间比第二终止时间晚时,确定该时间属性值中的一部分位于该第一预设时间段内,另一部分位于该第二预设时间段内,此时,执行步骤404。

需要说明的是,当该时间属性值为具体的某个时间时,此时该时间属性值的起始时间和终止时间为同一时间,同样可以通过上述方法判断该目标数据的时间属性值位于第一预设时间段内还是位于第二预设时间段内。

步骤402:当该时间属性值位于第一预设时间段内时,从预先存储的数据立方表包括的近期数据立方表中查询该目标数据。

由图3所示的实施例中的步骤301可知,对于近期数据立方表中的每个立方单元,该立方单元在各个维度上的维度值是确定的,因此,可以根据目标数据的查询请求携带目标数据的至少一个属性类型和在该至少一个属性类型中的每个属性类型上的属性值,从该近期数据立方表中查找与该目标数据对应的立方单元,并将查找到的立方单元的聚集值确定为目标数据。

需要说明的是,查找到的立方单元可能包括两个及两个以上的立方单元,此时,对查找到的立方单元的聚集值进行处理,将处理后的数据确定为该目标数据。

例如,近期数据立方表的时间维度的层级粒度为天,若目标数据为“5月1号至5月3号牛奶在西安的销售额”,此时查找到的与目标数据对应的立方单元为3个立方单元,该3个立方单元分别用于存储5月1号牛奶在西安的销售额,5月2号牛奶在西安的销售额,5月3号牛奶在西安的销售额。此时,确定查找到的三个立方单元中每个立方单元的聚集值,将该三个立方单元的聚集值相加,并将相加后的数据确定为该目标数据。

步骤403:当该时间属性值位于第二预设时间段内时,从该数据立方表包括的历史数据立方表中查询该目标数据。

其中,步骤403的实现方式和步骤402的实现方式基本相同,在此不再详细说明。

步骤404:当该时间属性值中的一部分位于该第一预设时间段内,另一部分位于该第二预设时间段内时,根据该时间属性值,从近期数据立方表和历史数据立方表中查询目标数据。

步骤404的实现过程可以为,根据该一部分的时间属性值从该近期数据立方表中查询数据,得到第一数据。根据该另一部分的时间属性值从该历史数据立方表中查询数据,得到第二数据。根据该第一数据和该第二数据,确定该目标数据。

其中,根据该一部分的时间属性值从该近期数据立方表中查询数据,得到第一数据可以参考步骤402的实现过程,在此不再详细阐述。根据该另一部分的时间属性值从该历史数据立方表中查询数据,得到第二数据可以参考步骤403的实现过程,在此同样不再详细阐述。

在得到第一数据和第二数据之后,对第一数据和第二数据进行处理,并将处理后的数据确定为目标数据。例如,对于销售额数据,可以将第一数据和第二数据相加,将相加后的数据确定为目标数据。

在本发明实施例中,当接收到目标数据的查询请求时,由于数据立方表包括的近期数据立方表用于存储时间属性值位于第一预设时间段内的数据,且数据立方表包括的历史数据立方表用于存储时间属性值位于第二预设时间段内的数据,因此可以根据目标数据对应的时间属性值,从历史数据立方表或近期数据立方表中查找目标数据,避免直接从整个数据立方表中查询目标数据,降低了从数据立方表中查询目标数据的工作量,从而可以提高目标数据的查询效率。

本发明实施例除了提供上述数据查询的方法,还提供了数据查询装置,该数据查询装置应用于终端或服务器中,如图5a所示,该数据查询装置500包括第一确定模块501、第一查询模块502和第二查询模块503。

第一确定模块501,用于当接收到目标数据的查询请求时,确定该目标数据对应的时间属性值;

第一查询模块502,用于当该时间属性值位于第一预设时间段内时,从预先存储的数据立方表包括的近期数据立方表中查询该目标数据,该第一预设时间段为当前时间之前且与当前时间之间相差第一预设时长的时间段,该近期数据立方表用于存储时间属性值位于该第一预设时间段内的数据;

第二查询模块503,用于当该时间属性值位于第二预设时间段内时,从该数据立方表包括的历史数据立方表中查询该目标数据,该第二预设时间段为该第一预设时间段中最早时间之前的时间段,该历史数据立方表用于存储时间属性值位于该第二预设时间段内的数据。

可选地,参见图5b,该装置500还包括第三查询模块504、第四查询模块505和第二确定模块506:

第三查询模块504,用于当该时间属性值中的一部分位于该第一预设时间段内,另一部分位于该第二预设时间段内时,根据该一部分的时间属性值从该近期数据立方表中查询数据,得到第一数据;

第四查询模块505,用于根据该另一部分的时间属性值从该历史数据立方表中查询数据,得到第二数据,该近期数据立方表的时间维度的层级粒度比该历史数据立方表的时间维度的层级粒度细;

第二确定模块506,用于根据该第一数据和该第二数据,确定该目标数据。

可选地,该装置500还包括:

创建模块,用于创建空白的数据立方表,该空白的数据立方表包括空白的近期数据立方表和空白的历史数据立方表;

第一查找模块,用于从源数据库中查找该近期数据立方表中的每个立方单元对应的数据,并基于查找的数据确定该近期数据立方表中每个立方单元的聚集值;

第二查找模块,用于从该源数据库中查找该历史数据立方表中的每个立方单元对应的数据,并基于查找的数据确定该历史数据立方表中每个立方单元的聚集值。

可选地,该装置500还包括:

第三查找模块,用于当该源数据库中新增数据时,从该近期数据立方表中查找与该源数据库中新增的数据对应的立方单元;

更新模块,用于根据该新增的数据,更新查找到的立方单元的聚集值。

可选地,该装置500还包括:

第三确定模块,用于对于该近期数据立方表中的每个立方单元,每隔第二预设时长确定该立方单元的时间维度值;

删除模块,用于当该立方单元的时间维度值位于该第二预设时间段内时,将该立方单元从该近期数据立方表中删除,并将该立方单元的聚集值添加至该历史数据立方表中对应的立方单元中。

可选地,该装置500还包括:

第四确定模块,用于当接收到数据更改请求时,确定待更改的数据的时间属性值;

第一更改模块,当该待更改的数据的时间属性值位于该第一预设时间段内时,更改该近期数据立方表中与该待更改的数据对应的立方单元的聚集值;

第二更改模块,当该待更改的数据的时间属性值位于该第二预设时间段内时,更改该历史数据立方表中与该待更改的数据对应的立方单元的聚集值。

在本发明实施例中,当接收到目标数据的查询请求时,由于数据立方表包括的近期数据立方表用于存储时间属性值位于第一预设时间段内的数据,且数据立方表包括的历史数据立方表用于存储时间属性值位于第二预设时间段内的数据,因此可以根据目标数据对应的时间属性值,从历史数据立方表或近期数据立方表中查找目标数据,避免直接从整个数据立方表中查询目标数据,降低了从数据立方表中查询目标数据的工作量,从而可以提高目标数据的查询效率。

需要说明的是:上述实施例提供的数据查询装置在触发数据查询时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据查询装置与数据查询方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图6是本发明实施例提供的另一种数据查询装置600的框图。例如,装置600可以被提供为一服务器或一终端。参照图6,装置600包括处理器601、通信接口602、存储器603和通信总线604。

如图6所示,处理器601,通信接口602和存储器603通过通信总线604完成相互间的通信。

处理器601可以是一个cpu(centralprocessingunit,中央处理器),微处理器,asic(application-specificintegratedcircuit,特定应用集成电路),或一个或多个用于控制本申请方案程序执行的集成电路。

通信总线604可包括一通路,在上述组件之间传送信息。

存储器603可以是rom(read-onlymemory,只读存储器)或可存储静态信息和指令的其它类型的静态存储设备,ram(randomaccessmemory,随机存取存储器)或者可存储信息和指令的其它类型的动态存储设备,也可以是eeprom(electricallyerasableprogrammableread-onlymemory,电可擦可编程只读存储器)、cd-rom(compactdiscread-onlymemory,只读光盘)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器603可以是独立存在,通过通信总线604与处理器601相连接。存储器603也可以和处理器601集成在一起。

通信接口602,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网,wlan(wirelesslocalareanetworks,无线局域网)等。

其中,存储器603用于存储执行本申请方案的计算机程序,并由处理器601来控制执行。也即,处理器601用于执行存储器上所存放的程序,以实现图2、图3和图4所示实施例提供的数据查询方法。

在示例性实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,当该计算机可读存储介质中存储的计算机程序由服务器的处理器执行时,使得服务器能够执行图2、图3和图4所示实施例提供的数据查询方法。

另外,在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,使得计算机执行上述实施例所述的数据查询方法。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digitalsubscriberline,dsl))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digitalversatiledisc,dvd))、或者半导体介质(例如:固态硬盘(solidstatedisk,ssd))等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1