时序数据的聚合查询方法、装置、计算机设备及可读介质与流程

文档序号:14911354发布日期:2018-07-10 23:30阅读:192来源:国知局

本发明涉及计算机应用技术领域,尤其涉及一种时序数据的聚合查询方法、装置、计算机设备及可读介质。



背景技术:

在物联网场景下,时序数据会持续大量产生,时序数据库往往使用多节点分片存储,这些历史时序数据可以用来有效进行监控以及趋势预测,一个典型的例子就是查询最近一个月每个小时的平均温度,因此时序数据库需要能够支持高效聚合运算查询,简称聚合查询。

现有的时序数据聚合查询时,接收到用户的查询请求之后,对查询请求进行解析和构建逻辑查询树,对逻辑查询树分析优化,最后由物理引擎执行逻辑查询,查询并获取所有原始时序数据,最后对获取到的所有原始时序数据做聚合运算。也就是说,现有的聚合查询由负责聚合查询处理的计算节点从存储时序数据的各个节点中获取大量的原始时序数据,然后,由计算节点进行聚合运算处理。

现有技术采用的上述聚合查询处理,各个数据存储节点需要传输大量的原始时序数据至计算节点,导致系统的输入/输出(Input/Output;I/O)压力很大;且计算节点需要执行所有的聚合运算,计算压力过大;进而导致整个聚合查询时延较大,聚合查询效率较低。



技术实现要素:

本发明提供了一种时序数据的聚合查询方法、装置、计算机设备及可读介质,用于提高聚合查询效率。

本发明提供一种时序数据的聚合查询方法,所述方法包括:

接收用户的时序数据的聚合查询请求;所述聚合查询请求中携带聚合函数、查询的时间窗口以及查询的时间范围;

根据所述聚合函数的内层聚合函数的所述时间窗口、所述时间范围、以及时序数据的时间与时序数据的存储节点的对应关系,建立所述时间范围内的、时间维度与存储维度上的二维分片信息,所述二维分片信息中标识所述时间范围内的、各所述时间窗口对应的多个所述存储节点标识;

根据所述内层聚合函数以及各所述时间窗口对应的多个所述存储节点标识,控制各所述时间窗口对应的所述存储节点在本地执行所述内层聚合函数的相关操作,并返回操作结果;

根据接收到的所述时间范围内的、各所述时间窗口对应的操作结果以及所述聚合函数,生成聚合查询结果。

进一步可选地,如上所述的方法中,若所述聚合函数为单聚合函数,所述聚合函数仅包括所述内层聚合函数,根据接收到的所述时间范围内的、各所述时间窗口对应的操作结果以及所述聚合函数,生成聚合查询结果,具体包括:

根据接收到的所述时间范围内的、各所述时间窗口对应的操作结果以及所述内层聚合函数,获取各所述时间窗口对应的所述内层聚合函数的处理结果,作为所述聚合查询结果。

进一步可选地,如上所述的方法中,若所述聚合函数为嵌套聚合函数,所述聚合函数还包括外层聚合函数,根据所述时间范围内的、各所述时间窗口对应的操作结果以及所述聚合函数,生成聚合查询结果,具体包括:

根据接收到的所述时间范围内的、各所述时间窗口对应的操作结果以及所述内层聚合函数,获取各所述时间窗口对应的所述内层聚合函数的处理结果;

根据各所述时间窗口对应的所述内层聚合函数的处理结果以及所述外层聚合函数,获取所述外层聚合函数的处理结果,作为所述聚合查询结果。

进一步可选地,如上所述的方法中,根据所述内层聚合函数以及各所述时间窗口对应的多个所述存储节点标识,控制各所述时间窗口对应的所述存储节点在本地执行所述内层聚合函数的相关操作,并返回操作结果,具体包括:

根据所述内层聚合函数,生成各所述时间窗口对应的所述存储节点的本地任务,以供所述存储节点在本地执行所述内层聚合函数的相关操作;

根据各所述时间窗口对应的多个所述存储节点标识,向各所述时间窗口对应的所述存储节点下发所述本地任务,以供对应的所述存储节点执行所述本地任务,并返回所述操作结果。

进一步可选地,如上所述的方法中,若所述内层聚合函数为时序无关的函数,根据所述内层聚合函数,生成各所述时间窗口对应的所述存储节点的本地任务,具体包括:

根据所述内层聚合函数,生成各所述时间窗口对应的每个所述存储节点的本地任务;

对应地,根据各所述时间窗口对应的每个所述存储节点标识,向各所述时间窗口对应的所述存储节点下发所述本地任务,具体包括:

根据各所述时间窗口对应的多个所述存储节点标识,向各所述时间窗口对应的每个所述存储节点下发对应的所述本地任务。

进一步可选地,如上所述的方法中,若所述内层聚合函数为时序有关的函数,根据所述内层聚合函数,生成各所述时间窗口对应的所述存储节点的本地任务,具体包括:

从各所述时间窗口对应的多个所述存储节点标识中选取一个作为目标存储节点标识;

根据所述内层聚合函数以及各所述时间窗口对应的多个所述存储节点标识,生成各所述时间窗口对应的所述目标存储节点的本地任务;所述本地任务中指示所述目标存储节点先从对应于同一所述时间窗口的其他所述存储节点拷贝所述时间窗口的所有时序数据,然后执行所述内层聚合函数的相关操作;

对应地,根据各所述时间窗口对应的多个所述存储节点标识,向各所述时间窗口对应的每个所述存储节点下发对应的所述本地任务,具体包括:

根据各所述时间窗口对应的所述目标存储节点标识,向各所述时间窗口对应的所述目标存储节点下发对应的所述本地任务。

进一步可选地,如上所述的方法中,从各所述时间窗口对应的多个所述存储节点标识中选取一个作为目标存储节点标识,具体包括:

根据各所述时间窗口对应的多个所述存储节点中存储对应的所述时间窗口内的时序数据的数量的多少,从各所述时间窗口对应的多个所述存储节点标识中选取存储对应的所述时间窗口内的时序数据最多的存储节点的标识,作为所述目标存储节点标识。

本发明提供一种时序数据的聚合查询装置,所述装置包括:

接收模块,用于接收用户的时序数据的聚合查询请求;所述聚合查询请求中携带聚合函数、查询的时间窗口以及查询的时间范围;

分片建立模块,用于根据所述聚合函数的内层聚合函数的所述时间窗口、所述时间范围、以及时序数据的时间与时序数据的存储节点的对应关系,建立所述时间范围内的、时间维度与存储维度上的二维分片信息,所述二维分片信息中标识所述时间范围内的、各所述时间窗口对应的多个所述存储节点标识;

控制模块,用于根据所述内层聚合函数以及各所述时间窗口对应的多个所述存储节点标识,控制各所述时间窗口对应的所述存储节点在本地执行所述内层聚合函数的相关操作,并返回操作结果;

结果生成模块,用于根据接收到的所述时间范围内的、各所述时间窗口对应的操作结果以及所述聚合函数,生成聚合查询结果。

进一步可选地,如上所述的装置中,若所述聚合函数为单聚合函数,所述聚合函数仅包括所述内层聚合函数,所述结果生成模块,具体用于:

根据接收到的所述时间范围内的、各所述时间窗口对应的操作结果以及所述内层聚合函数,获取各所述时间窗口对应的所述内层聚合函数的处理结果,作为所述聚合查询结果。

进一步可选地,如上所述的装置中,若所述聚合函数为嵌套聚合函数,所述聚合函数还包括外层聚合函数,所述结果生成模块,具体用于:

根据接收到的所述时间范围内的、各所述时间窗口对应的操作结果以及所述内层聚合函数,获取各所述时间窗口对应的所述内层聚合函数的处理结果;

根据各所述时间窗口对应的所述内层聚合函数的处理结果以及所述外层聚合函数,获取所述外层聚合函数的处理结果,作为所述聚合查询结果。

进一步可选地,如上所述的装置中,所述控制模块,具体包括:

任务生成单元,用于根据所述内层聚合函数,生成各所述时间窗口对应的所述存储节点的本地任务,以供所述存储节点在本地执行所述内层聚合函数的相关操作;

任务下发单元,用于根据各所述时间窗口对应的多个所述存储节点标识,向各所述时间窗口对应的所述存储节点下发所述本地任务,以供对应的所述存储节点执行所述本地任务,并返回所述操作结果。

进一步可选地,如上所述的装置中,若所述内层聚合函数为时序无关的函数,所述任务生成单元,具体用于:

根据所述内层聚合函数,生成各所述时间窗口对应的每个所述存储节点的本地任务;

对应地,所述任务下发单元,具体用于:

根据各所述时间窗口对应的多个所述存储节点标识,向各所述时间窗口对应的每个所述存储节点下发对应的所述本地任务。

进一步可选地,如上所述的装置中,若所述内层聚合函数为时序有关的函数,所述任务生成单元,具体用于:

从各所述时间窗口对应的多个所述存储节点标识中选取一个作为目标存储节点标识;

根据所述内层聚合函数以及各所述时间窗口对应的多个所述存储节点标识,生成各所述时间窗口对应的所述目标存储节点的本地任务;所述本地任务中指示所述目标存储节点先从对应于同一所述时间窗口的其他所述存储节点拷贝所述时间窗口的所有时序数据,然后执行所述内层聚合函数的相关操作;

对应地,所述任务下发单元,具体用于:

根据各所述时间窗口对应的所述目标存储节点标识,向各所述时间窗口对应的所述目标存储节点下发对应的所述本地任务。

进一步可选地,如上所述的装置中,所述任务生成单元,具体用于根据各所述时间窗口对应的多个所述存储节点中存储对应的所述时间窗口内的时序数据的数量的多少,从各所述时间窗口对应的多个所述存储节点标识中选取存储对应的所述时间窗口内的时序数据最多的存储节点的标识,作为所述目标存储节点标识。

本发明还提供一种计算机设备,所述设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的时序数据的聚合查询方法。

本发明还提供一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的时序数据的聚合查询方法。

本发明的时序数据的聚合查询方法、装置、计算机设备及可读介质,通过由存储节点本地执行本地任务,并返回操作结果,实现分担内层聚合函数的相关操作运算,而仅由时序数据的聚合查询装置执行聚合函数的部分操作运算,因此,本实施例的技术方案,能够减少了存储节点返回的数据量,从而降低聚合查询时系统的I/O压力,而且还能够有效地减少时序数据的聚合查询装置的计算压力,进而能够有效地减小聚合查询的时延,提高聚合查询的效率。

【附图说明】

图1为本发明的时序数据的聚合查询方法实施例一的流程图。

图2为本发明的时序数据的聚合查询方法实施例二的流程图。

图3为本发明的时序数据的聚合查询装置实施例一的结构图。

图4为本发明的时序数据的聚合查询装置实施例二的结构图。

图5为本发明的计算机设备实施例的结构图。

图6为本发明提供的一种计算机设备的示例图。

【具体实施方式】

为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。

图1为本发明的时序数据的聚合查询方法实施例一的流程图。如图1所示,本实施例的时序数据的聚合查询方法,具体可以包括如下步骤:

100、接收用户的时序数据的聚合查询请求;聚合查询请求中携带聚合函数、查询的时间窗口以及查询的时间范围;

本实施例的时序数据的聚合查询方法的执行主体可以为时序数据的聚合查询装置,该时序数据的聚合查询装置接收用户的时序数据的聚合查询请求,并可以访问时序数据库的所有存储节点,实现时序数据的聚合查询。

例如,本实施例中,用户的时序数据的聚合查询请求可以为查询最近一个月每个小时的平均温度、或者查询最近一个月的小时平均温度的最小值、或者查询最近一个月每个小时中的第30个温度、或者查询最近一个月各个小时的第 30个温度的最小值。无论是哪种查询,都包括有对时序时间的聚合运算处理,都隐含携带有聚合函数。

例如,若聚合查询请求为查询最近一个月每个小时的平均温度时,对应的聚合函数为求每小时的平均温度,时间范围为最近一个月;该聚合函数为单聚合函数,对应的时间窗口为一小时,时间范围为一个月。

若聚合查询请求为查询最近一个月的小时平均温度的最小值时,对应的聚合函数为先求每小时的平均温度,再求各小时的平均温度的最小值,时间范围为最近一个月;此时需要分步骤执行聚合查询处理,对应的聚合函数为嵌套聚合,此时求每小时的平均温度为内层聚合函数,内层聚合函数的时间窗口为一小时,时间范围为一个月;外层聚合函数为求各小时的平均温度的最小值,外层聚合函数的时间窗口为一个月,时间范围也为一个月。

同理,若聚合查询请求为查询最近一个月每个小时中的第30个温度时,对应的聚合函数为求每小时的第30个温度,时间范围为最近一个月;该聚合函数为单聚合函数,对应的时间窗口为一小时,时间范围为一个月。

若聚合查询请求为查询最近一个月各个小时的第30个温度的最小值时,对应的聚合函数为先求每小时的第30个温度,再求各小时的第30个最小值,时间范围为最近一个月;此时需要分步骤执行聚合查询处理,对应的聚合函数为嵌套聚合,此时求每小时的第30个温度为内层聚合函数,内层聚合函数的时间窗口为一小时,时间范围为一个月;外层聚合函数为求各小时的第30个温度的最小值,外层聚合函数的时间窗口为一个月,时间范围也为一个月。

上述实施例中的聚合函数仅为本实施例的举例,实际应用中,还可以包括其他形式的单聚合函数以及嵌套聚合函数,且本实施例的上述举例中的嵌套聚合函数仅包括两层,实际应用中,嵌套聚合函数可以包括多层,在此不再举例赘述。

具体地,根据上述分析,可以知道用户的聚合查询请求中携带有聚合函数、时间窗口以及时间范围等信息,通过对聚合查询请求进行分析,均可以获取到这些信息。

101、根据聚合函数的内层聚合函数的时间窗口、时间范围、以及时序数据的时间与时序数据的存储节点的对应关系,建立时间范围内的、时间维度与存储维度上的二维分片信息,二维分片信息中标识时间范围内的、各时间窗口对应的多个存储节点标识;

为了便于对时序数据进行管理,存储时序数据时,会记录时序数据的时间与时序数据的存储节点的对应关系。例如,某一个存储节点存储1月2日 11:00-11:30的时序数据,其相邻的存储节点存储1月2日11:30-11:50的时序数据,再相邻的存储节点存储1月2日11:50-12:00的时序数据等等。因此,本实施例的时序数据的聚合查询装置为了便于访问时序数据库的每个存储节点,可以提前获取到时序数据的时间与时序数据的存储节点的对应关系。

根据聚合查询请求中的聚合函数,可以获取到内层聚合函数,并进一步获取到内层聚合函数的时间窗口和时间范围。其中若该聚合查询请求中的聚合函数为单聚合函数,该内层聚合函数为该聚合函数本身。若聚合查询请求中的聚合函数为嵌套聚合函数,该内层聚合函数为嵌套聚合函数的最内层聚合函数。也就是说,本实施例针对聚合函数进行聚合查询处理时,是从内层向外层进行处理。

根据聚合函数的内层聚合函数的时间窗口和时间范围,可以在时间维度上将时间范围分成数个连续的时间窗口,实现时间维度上的分片。然后根据时序数据的时间与时序数据的存储节点的对应关系,将属于同一个时间窗口的时间划分在同一时间窗口中,并可以获取到同一时间窗口对应的多个存储节点标识,从而实现存储维度上的分片。本实施例中,由于时序数据产生量非常大,且都是分节点存储的,所以,对于同一个时间窗口,可以对应多个存储节点。

根据上述时间维度和存储维度的分片,可以建立时间范围内的、时间维度与存储维度上的二维分片信息,该二维分片信息中标识时间范围内的、各时间窗口对应的多个存储节点标识。这样根据该二维分片信息,可以知道每个时间窗口对应的时序数据存储在哪几个存储节点中。

102、根据内层聚合函数以及二维分片信息中标识的各时间窗口对应的多个存储节点标识,控制各时间窗口对应的存储节点在本地执行内层聚合函数的相关操作,并返回操作结果;

本实施例中实现聚合查询与现有技术不同,不是由一个计算节点来获取所有数据进行聚合运算处理。而是由时序数据的聚合查询装置控制各个时间窗口的对应的存储节点在本地执行内层聚合函数的相关操作,,并返回中间操作结果即可。本实施例的内层聚合函数的相关操作可以为内层聚合函数的全部操作也可以进包括内层聚合函数的一部分中间操作。存储节点返回的操作结果的数据量相对于原始的时序数据的数据量小的多,这样通过由存储节点在本地执行内层聚合函数的相关操作的计算,不仅可以减少聚合查询时整个系统的I/O的压力,还可以降低时序数据的聚合查询装置的计算压力,从而有助于缩短聚合查询的时间,提高聚合查询的效率。

本实施例的各时间窗口对应的存储节点在本地执行的内层聚合函数的相关操作,具体可以根据聚合函数来确定。例如,若聚合函数为求每小时的平均温度,时间范围为最近一个月时,若某小时的时间窗口对应的存储节点包括有3 个,该小时平均温度,需要获取这3个存储节点上的所有温度,并求和,然后取平均。为了便于数据的获取,本实施例中,可以控制3个存储节点分别计算各自存储的该时间窗口中的温度数据之和、以及温度的时序数据的数量,作为聚合函数的相关操作,此时相当于存储节点执行内层聚合函数的一部分中间操作。这样,3个存储节点分别返回的中间操作结果是各自存储的该时间窗口的温度数据之和、以及温度的时序数据的数量即参与求和的时序数据的数量,为内层聚合函数的一部分中间操作的结果。

按照上述方式,对于任意一种内层聚合函数,均可以控制各时间窗口对应的存储节点在本地执行内层聚合函数的相关操作,并返回操作结果。

在具体实施时,该步骤102具体可以包括如下步骤:

(a1)根据内层聚合函数,生成各时间窗口对应的存储节点的本地任务,以供存储节点在本地执行内层聚合函数的相关操作;

(b1)根据各时间窗口对应的多个存储节点标识,向各时间窗口对应的存储节点下发本地任务,以供对应的存储节点执行本地任务,并返回操作结果。

也就是说,时序数据的聚合查询装置在根据内层的聚合函数在控制各时间窗口对应的存储节点在本地执行内层聚合函数的相关操作时,可以先根据内层的聚合函数生成各时间窗口对应的存储节点的本地任务,然后向对应的存储节点下发生成的本地任务,由存储节点在存储节点本地根据接收到的本地任务,执行内层聚合函数的相关操作,并返回操作结果。

需要说明的是,本实施例中,根据内层聚合函数是否为时序相关的情况,还可以控制各时间窗口对应的不同存储节点执行内层聚合函数的相关操作。具体可以包括如下情况:

第一种情况:若内层聚合函数为时序无关的函数,此时步骤(a1)具体可以包括:根据内层聚合函数,生成各时间窗口对应的每个存储节点的本地任务;对应地步骤(b1)具体可以包括:根据各时间窗口对应的多个存储节点标识,向各时间窗口对应的每个存储节点下发对应的本地任务。

例如对于单聚合函数“求时间范围为最近一个月每小时的平均温度”,或者对于嵌套聚合函数“求最近一个月的小时平均温度的最小值”,其内层聚合函数也是“求最近一个月的每小时的平均温度”,此时时序数据的聚合查询装置根据内层聚合函数设计本地任务时,对于每个时间窗口即每小时,可以让对应的每个存储节点计算各自存储的温度数据之和,并反馈温度数据之和以及参与求和的温度数据的数量。然后时序数据的聚合查询装置可以将该时间窗口的多个存储节点返回的温度数据之和再求和,作为该时间窗口的所有温度数据之和;将该时间窗口的多个存储节点返回的温度数据的数量求和,作为该时间窗口的所有温度数据的数量,所以该时间窗口的温度的平均值等于该时间窗口的所有温度数据之和,除以该时间窗口的所有温度数据的数量,从而得到每个时间窗口的温度。

基于上述分析,时序数据的聚合查询装置可以为每个时间窗口对应的多个存储节点中的每个存储节点都生成本地任务,该本地任务是用于让各存储节点执行计算各自存储的时序数据之和以及时序数据的数量,如上述实施例中的温度数据之和以及参与求和的温度数据的数量。然后根据各时间窗口对应的多个存储节点标识,向各时间窗口对应的每个存储节点下发对应的本地任务,每个存储节点接收到本地任务之后,执行本地任务,便相当于执行了内层聚合函数的一部分中间操作,各存储节点将中间操作的结果返回,供时序数据的聚合查询装置进行后续处理。

第二种情况:若内层聚合函数为时序有关的函数,此时对应的步骤(a1),具体可以包括:从各时间窗口对应的多个存储节点标识中选取一个作为目标存储节点标识;根据内层聚合函数以及各时间窗口对应的多个存储节点标识,生成各时间窗口对应的目标存储节点的本地任务;本地任务中指示目标存储节点先从对应于同一时间窗口的其他存储节点拷贝时间窗口的所有时序数据,然后执行内层聚合函数的相关操作。对应地,步骤(b1)具体可以包括:根据各时间窗口对应的目标存储节点标识,向各时间窗口对应的目标存储节点下发对应的本地任务。

例如对于单聚合函数“求时间范围为最近一个月每小时的第30个温度”,或者对于嵌套聚合函数“最近一个月各个小时的第30个温度的最小值”,其内层聚合函数也是“求最近一个月的每小时的第30个温度”,此时时序数据的聚合查询装置根据内层聚合函数设计本地任务时,对于每个时间窗口即每小时,可以让对应的该时间窗口的存储节点找出第30个温度即可。此时不需要向每个存储节点下发任务,让其取寻找,可以向每个时间窗口的对应的多个存储节点中的其中一个下存储节点发任务,让其将同一时间窗口的其余存储节点的温度数据都拷贝在其本地,便得到该时间窗口的所有温度数据,然后可以从找获取到第30分值的温度。

本实施例中,可以从各时间窗口对应的多个存储节点标识中选取一个作为目标存储节点标识,作为该时间窗口的用于接收下发任务,并执行下发任务的存储节点。但是该目标存储节点不是该时间窗口对应的多个存储节点中数据量最大的节点,将会导致该目标存储节点从同一时间窗口的其余存储节点拷贝数据时,数据量过大,增强数据拷贝时的I/O压力。因此本实施例中,可以根据各时间窗口对应的多个存储节点中存储对应的时间窗口内的时序数据的数量的多少,从各时间窗口对应的多个存储节点标识中选取存储对应的时间窗口内的时序数据最多的存储节点的标识,作为目标存储节点标识,这样可以减少目标存储节点从同一时间窗口的其余存储节点拷贝的数据量,降低数据拷贝时的I/O压力。

基于上述分析,时序数据的聚合查询装置可以为每个时间窗口对应的目标存储节点生成本地任务,该本地任务是用于让该目标存储节点在本地从同一时间窗口的其余存储节点拷贝该时间窗口的时序数据,存储在目标存储节点本地,这样目标存储节点便拥有该时间窗口的所有数据,然后目标存储节点从该时间窗口的所有数据中查找要找的时序数据,如第30个温度。然后根据各时间窗口对应的目标存储节点标识,向各时间窗口对应的目标存储节点下发对应的本地任务。每个目标存储节点接收到本地任务之后,执行本地任务,便相当于执行了内层聚合函数的主要操作,各存储节点将操作的结果返回,时序数据的聚合查询装置将每个时间窗口对应的目标存储节点返回的操作结果集合在一起,便得到全部的聚合查询结果。

103、根据接收到的时间范围内的、各时间窗口对应的操作结果以及聚合函数,生成聚合查询结果。

存储节点在本地执行内层聚合函数的相关操作后,向时序数据的聚合查询装置返回操作结果,然后时序数据的聚合查询装置根据聚合函数以及返回的各操作结果继续进行聚合处理,获取最终的聚合查询结果。

若聚合函数仅为单聚合时,聚合函数仅包括内层聚合函数,此时该步骤103 具体可以包括:根据接收到的时间范围内的、各时间窗口对应的操作结果以及内层聚合函数,获取各时间窗口对应的内层聚合函数的处理结果,作为聚合查询结果。由于聚合函数为单聚合函数,经过聚合函数的处理,便得到最终要的聚合查询结果。

例如,对于上述实施例中的聚合函数“求最近一个月的每小时的平均温度”,各时间窗口的每个存储节点返回的操作结果是各自存储的温度数据之和以及参与求和的温度数据的数量。然后时序数据的聚合查询装置将每个时间窗口的多个存储节点返回的温度数据之和再求和,作为该时间窗口的所有温度数据之和;将每个时间窗口的多个存储节点返回的温度数据的数量求和,作为该时间窗口的所有温度数据的数量,每个时间窗口的温度的平均值等于该时间窗口的所有温度数据之和,除以该时间窗口的所有温度数据的数量,从而得到该时间窗口的温度。最后将每个时间窗口的温度聚合在一起,便得到聚合查询的结果。

若聚合函数为嵌套聚合函数时,聚合函数不仅包括内层聚合函数,还包括外层聚合函数。此时该步骤103具体可以包括:根据接收到的时间范围内的、各时间窗口对应的操作结果以及内层聚合函数,获取各时间窗口对应的内层聚合函数的处理结果;根据各时间窗口对应的内层聚合函数的处理结果以及外层聚合函数,获取外层聚合函数的处理结果,作为聚合查询结果。

例如,对于上述实施例中的聚合查询请求“查询最近一个月各个小时的第30个温度的最小值”,所对应的嵌套聚合函数的内层聚合函数为求每小时的第 30个温度为内层聚合函数,内层聚合函数的时间窗口为一小时,时间范围为一个月;所对应的外层聚合函数为求各小时的第30个温度的最小值,外层聚合函数的时间窗口为一个月,时间范围也为一个月。时序数据的聚合查询装置控制各时间窗口对应的目标存储节点在本地执行本地任务之后,各目标存储节点返回该时间窗口内第30个温度,这样时序数据的聚合查询装置可以得到每个时间窗口即每小时的第30个温度,然后根据外层聚合函数,求各小时的第30个温度的最小值,便得到聚合查询的结果。

需要说明的是,上述本实施例的嵌套聚合函数仅以两层嵌套为例,实际应用中,本实施例的技术方案可以适用于多层嵌套的嵌套聚合函数,处理方式也是从内而外依次处理,详细可以参考上述实施例中的两层嵌套,在此不再赘述。

本实施例的时序数据的聚合查询方法,通过由存储节点本地执行本地任务,并返回操作结果,实现分担内层聚合函数的相关操作运算,而仅由时序数据的聚合查询装置执行聚合函数的部分操作运算,因此,本实施例的技术方案,能够减少了存储节点返回的数据量,从而降低聚合查询时系统的I/O压力,而且还能够有效地减少时序数据的聚合查询装置的计算压力,进而能够有效地减小聚合查询的时延,提高聚合查询的效率。

图2为本发明的时序数据的聚合查询方法实施例二的流程图。如图2所示,本实施例的时序数据的聚合查询方法在上述图1所示实施例的技术方案的基础上,详细描述一下本实施例的时序数据的聚合查询的使用流程。如图2所示,本实施例的时序数据的聚合查询方法,具体可以包括如下步骤:

200、接收用户的时序数据的聚合查询请求;

201、解析接收到的聚合查询请求,获取聚合函数;

202、判断聚合函数是单聚合函数还是嵌套聚合函数;若是单聚合函数,执行步骤203;否则若是嵌套聚合函数,执行步骤204;

203、根据聚合函数的时间窗口、时间范围、以及时序数据的时间与时序数据的存储节点的对应关系,建立时间范围内的、时间维度与存储维度上的二维分片信息;执行步骤205;

其中二维分片信息中标识时间范围内的、各时间窗口对应的多个存储节点标识。

204、获取聚合函数的内层聚合函数;并根据内层聚合函数的时间窗口、时间范围、以及时序数据的时间与时序数据的存储节点的对应关系,建立时间范围内的、时间维度与存储维度上的二维分片信息;执行步骤212;

本实施例的二维分片信息中标识时间范围内的、各时间窗口对应的多个存储节点标识。

205、判断聚合函数是否为时序无关的函数,若是,执行步骤206;否则执行步骤208;

206、根据聚合函数,生成各时间窗口对应的每个存储节点的本地任务;执行步骤207;

207、根据各时间窗口对应的多个存储节点标识,向各时间窗口对应的每个存储节点下发对应的本地任务,以供对应的存储节点执行本地任务,并返回操作结果;执行步骤210;

208、从各时间窗口对应的多个存储节点标识中选取一个作为目标存储节点标识;根据聚合函数、以及各时间窗口对应的多个存储节点标识,生成各时间窗口对应的目标存储节点的本地任务;执行步骤209;

本实施例中的本地任务中指示目标存储节点先从对应于同一时间窗口的其他存储节点拷贝时间窗口的所有时序数据,然后执行聚合函数的相关操作。

209、根据各时间窗口对应的目标存储节点标识,向各时间窗口对应的目标存储节点下发对应的本地任务,以供对应的目标存储节点执行本地任务,并返回操作结果;执行步骤211;

210、根据接收到的各时间窗口的每个存储节点返回的操作结果以及聚合函数,获取各时间窗口对应的聚合函数的处理结果,作为聚合查询结果;执行步骤219;

211、根据接收到的各时间窗口的目标存储节点返回的操作结果以及聚合函数,获取各时间窗口对应的聚合函数的处理结果;作为聚合查询结果;执行步骤219;

212、判断内层聚合函数是否为时序无关的函数,若是,执行步骤213;否则执行步骤215;

213、根据内层聚合函数,生成各时间窗口对应的每个存储节点的本地任务;执行步骤214;

214、根据各时间窗口对应的多个存储节点标识,向各时间窗口对应的每个存储节点下发对应的本地任务,以供对应的存储节点执行本地任务,并返回操作结果;执行步骤217;

215、从各时间窗口对应的多个存储节点标识中选取一个作为目标存储节点标识;根据内层聚合函数、以及各时间窗口对应的多个存储节点标识,生成各时间窗口对应的目标存储节点的本地任务;执行步骤216;

该本地任务中指示目标存储节点先从对应于同一时间窗口的其他存储节点拷贝时间窗口的所有时序数据,然后执行内层聚合函数的相关操作;

216、根据各时间窗口对应的目标存储节点标识,向各时间窗口对应的目标存储节点下发对应的本地任务,以供对应的目标存储节点执行本地任务,并返回操作结果;执行步骤218;

217、根据接收到的各时间窗口的每个存储节点返回的操作结果以及内层聚合函数,获取各时间窗口对应的内层聚合函数的处理结果;根据各时间窗口对应的内层聚合函数的处理结果以及外层聚合函数,获取外层聚合函数的处理结果,作为聚合查询结果;执行步骤219;

218、根据接收到的各时间窗口的目标存储节点返回的操作结果以及内层聚合函数,获取各时间窗口对应的内层聚合函数的处理结果;根据各时间窗口对应的内层聚合函数的处理结果以及外层聚合函数,获取外层聚合函数的处理结果,作为聚合查询结果;执行步骤219;

219、向用户返回聚合查询结果。

同理,本实施例的嵌套聚合函数也可以为多层,聚合处理方式参考两层的处理,由内层向外层处理即可。或者也可以直接将最内层的放在存储节点本地处理,而外面其它层的放在时序数据的聚合查询装置侧处理,实现方式参考上述实施例的记载,在此不再赘述。

本实施例的时序数据的聚合查询方法,通过由存储节点本地执行本地任务,并返回操作结果,实现分担内层聚合函数的相关操作运算,而仅由时序数据的聚合查询装置执行聚合函数的部分操作运算,因此,本实施例的技术方案,能够减少了存储节点返回的数据量,从而降低聚合查询时系统的I/O压力,而且还能够有效地减少时序数据的聚合查询装置的计算压力,进而能够有效地减小聚合查询的时延,提高聚合查询的效率。

图3为本发明的时序数据的聚合查询装置实施例一的结构图。如图3所示,本实施例的时序数据的聚合查询装置,具体可以包括:

接收模块10用于接收用户的时序数据的聚合查询请求;聚合查询请求中携带聚合函数、查询的时间窗口以及查询的时间范围;

分片建立模块11用于根据接收模块10接收的聚合查询请求中的聚合函数的内层聚合函数的时间窗口、时间范围、以及时序数据的时间与时序数据的存储节点的对应关系,建立时间范围内的、时间维度与存储维度上的二维分片信息,二维分片信息中标识时间范围内的、各时间窗口对应的多个存储节点标识;

控制模块12用于根据接收模块10接收的聚合查询请求中的聚合函数的内层聚合函数以及分片建立模块11建立的二维分片信息中的各时间窗口对应的时序数据库的多个存储节点标识,控制各时间窗口对应的存储节点在本地执行内层聚合函数的相关操作,并返回操作结果;

结果生成模块13用于根据接收到的时序数据库中的各时间窗口对应的存储节点返回的时间范围内的、各时间窗口对应的操作结果以及聚合函数,生成聚合查询结果。

本实施例的时序数据的聚合查询装置,通过采用上述模块实现时序数据的聚合查询的实现原理以及技术效果与上述相关方法实施例的实现相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。

图4为本发明的时序数据的聚合查询装置实施例二的结构图。如图4所示,本实施例的时序数据的聚合查询装置,在上述图3所示实施例的技术方案的基础上,进一步更加详细地包括如下技术方案。

本实施例的时序数据的聚合查询装置中,若聚合函数为单聚合函数,聚合函数仅包括内层聚合函数,此时,结果生成模块13具体用于根据接收到的时间范围内的、各时间窗口对应的操作结果以及内层聚合函数,获取各时间窗口对应的内层聚合函数的处理结果,作为聚合查询结果。

若聚合函数为嵌套聚合函数,聚合函数还包括外层聚合函数,结果生成模块13具体用于:

根据接收到的时间范围内的、各时间窗口对应的操作结果以及内层聚合函数,获取各时间窗口对应的内层聚合函数的处理结果;

根据各时间窗口对应的内层聚合函数的处理结果以及外层聚合函数,获取外层聚合函数的处理结果,作为聚合查询结果。

进一步可选地,如图3所示,本实施例的时序数据的聚合查询装置中,控制模块12具体包括:

任务生成单元121用于根据接收模块10接收的聚合查询请求中的聚合函数的内层聚合函数,生成各时间窗口对应的存储节点的本地任务,以供存储节点在本地执行内层聚合函数的相关操作;

任务下发单元122用于根据建立模块11建立的二维分片信息中的各时间窗口对应的多个存储节点标识,向各时间窗口对应的存储节点下发任务生成单元 121生成的本地任务,以供对应的存储节点执行本地任务,并返回操作结果。

进一步可选地,若内层聚合函数为时序无关的函数,任务生成单元121具体用于:

根据内层聚合函数,生成各时间窗口对应的每个存储节点的本地任务;

对应地,任务下发单元122具体用于:

根据各时间窗口对应的多个存储节点标识,向各时间窗口对应的每个存储节点下发对应的本地任务。

进一步可选地,若内层聚合函数为时序有关的函数,任务生成单元121具体用于:

从各时间窗口对应的多个存储节点标识中选取一个作为目标存储节点标识;

根据内层聚合函数以及各时间窗口对应的多个存储节点标识,生成各时间窗口对应的目标存储节点的本地任务;本地任务中指示目标存储节点先从对应于同一时间窗口的其他存储节点拷贝时间窗口的所有时序数据,然后执行内层聚合函数的相关操作;

对应地,任务下发单元122具体用于:

根据各时间窗口对应的目标存储节点标识,向各时间窗口对应的目标存储节点下发对应的本地任务。

进一步可选地,任务生成单元121具体用于根据各时间窗口对应的多个存储节点中存储对应的时间窗口内的时序数据的数量的多少,从各时间窗口对应的多个存储节点标识中选取存储对应的时间窗口内的时序数据最多的存储节点的标识,作为目标存储节点标识。

本实施例的时序数据的聚合查询装置,通过采用上述模块实现时序数据的聚合查询的实现原理以及技术效果与上述相关方法实施例的实现相同,详细可以参考上述相关方法实施例的记载,在此不再赘述。

图5为本发明的计算机设备实施例的结构图。如图5所示,本实施例的计算机设备,包括:一个或多个处理器30,以及存储器40,存储器40用于存储一个或多个程序,当存储器40中存储的一个或多个程序被一个或多个处理器30 执行,使得一个或多个处理器30实现如图1-图2所示实施例的时序数据的聚合查询方法。图5所示实施例中以包括多个处理器30为例。

例如,图6为本发明提供的一种计算机设备的示例图。图6示出了适于用来实现本发明实施方式的示例性计算机设备12a的框图。图6显示的计算机设备12a仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图6所示,计算机设备12a以通用计算设备的形式表现。计算机设备 12a的组件可以包括但不限于:一个或者多个处理器16a,系统存储器28a,连接不同系统组件(包括系统存储器28a和处理器16a)的总线18a。

总线18a表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

计算机设备12a典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12a访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28a可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30a和/或高速缓存存储器32a。计算机设备12a 可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34a可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18a相连。系统存储器28a可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明上述图1-图4各实施例的功能。

具有一组(至少一个)程序模块42a的程序/实用工具40a,可以存储在例如系统存储器28a中,这样的程序模块42a包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42a通常执行本发明所描述的上述图1-图4各实施例中的功能和/或方法。

计算机设备12a也可以与一个或多个外部设备14a(例如键盘、指向设备、显示器24a等)通信,还可与一个或者多个使得用户能与该计算机设备 12a交互的设备通信,和/或与使得该计算机设备12a能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22a进行。并且,计算机设备12a还可以通过网络适配器20a与一个或者多个网络(例如局域网(LAN),广域网(WAN) 和/或公共网络,例如因特网)通信。如图所示,网络适配器20a通过总线18a 与计算机设备12a的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12a使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

处理器16a通过运行存储在系统存储器28a中的程序,从而执行各种功能应用以及数据处理,例如实现上述实施例所示的时序数据的聚合查询方法。

本发明还提供一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例所示的时序数据的聚合查询方法。

本实施例的计算机可读介质可以包括上述图6所示实施例中的系统存储器28a中的RAM30a、和/或高速缓存存储器32a、和/或存储系统34a。

随着科技的发展,计算机程序的传播途径不再受限于有形介质,还可以直接从网络下载,或者采用其他方式获取。因此,本实施例中的计算机可读介质不仅可以包括有形的介质,还可以包括无形的介质。

本实施例的计算机可读介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如 Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN) 或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

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

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等) 或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

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

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