CN116775692B - 一种用于时序数据库的分段聚合查询方法及系统 - Google Patents
一种用于时序数据库的分段聚合查询方法及系统 Download PDFInfo
- Publication number
- CN116775692B CN116775692B CN202310436472.0A CN202310436472A CN116775692B CN 116775692 B CN116775692 B CN 116775692B CN 202310436472 A CN202310436472 A CN 202310436472A CN 116775692 B CN116775692 B CN 116775692B
- Authority
- CN
- China
- Prior art keywords
- aggregation
- time sequence
- time
- data
- segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000002776 aggregation Effects 0.000 title claims abstract description 225
- 238000004220 aggregation Methods 0.000 title claims abstract description 225
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000011218 segmentation Effects 0.000 claims abstract description 76
- 238000012545 processing Methods 0.000 claims abstract description 23
- 230000006870 function Effects 0.000 claims description 22
- 230000008569 process Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000003860 storage Methods 0.000 claims description 8
- 230000001174 ascending effect Effects 0.000 claims description 5
- 238000005520 cutting process Methods 0.000 claims description 4
- 238000012423 maintenance Methods 0.000 claims description 4
- 230000002123 temporal effect Effects 0.000 claims 1
- 238000004458 analytical method Methods 0.000 abstract description 7
- 238000004891 communication Methods 0.000 description 8
- 238000006116 polymerization reaction Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000007405 data analysis Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种用于时序数据库的分段聚合查询方法及系统,包括:从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段;通过时间序列的第一个数据点初始化第一个子段并计算聚合值;从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果;根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成;对于定长时间区段分段,当子段之间存在重叠,将时间序列切分成多个长度固定的子段,每个子段产生一个聚合值;所述时间序列全部遍历完成后生成聚合结果,输出结果集,完成分段聚合查询。本发明解决了现有时序数据分析处理效率低的问题。
Description
技术领域
本发明涉及计算机数据管理技术领域,尤其涉及一种用于时序数据库的分段聚合查询方法及系统。
背景技术
随着社会信息化程度的不断提高,万物互联的智能时代来临。越来越多的设备、传感器以及应用软件产生了大量的时序数据。为了对高维度、大数据量并且不断产生的时序数据进行处理,需要将连续的时间序列分段并降维,从而提高对数据分析处理的效率。如将一台工业起重机设备产生的时序数据按照工作状态切分成多个不同的子段,然后对每个子段的数据进行聚合以达到降维效果,最后基于分段聚合后的数据进行统计与分析。所以,时序数据库需要支持高效的分段聚合查询以满足应用需求,但是现有针对时序数据处理通常是整体处理,花费时间多,效率低下,成本极高。
发明内容
本发明提供一种用于时序数据库的分段聚合查询方法及系统,用以解决现有时序数据分析处理效率低的问题。
本发明提供一种用于时序数据库的分段聚合查询方法,包括:
从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段;
通过时间序列的第一个数据点初始化第一个子段并计算聚合值;
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果;
根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成;
对于定长时间区段分段,当子段之间存在重叠,将时间序列切分成多个长度固定的子段,每个子段产生一个聚合值;
所述时间序列全部遍历完成后生成聚合结果,输出结果集,完成分段聚合查询。
根据本发明提供的一种用于时序数据库的分段聚合查询方法,所述从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段,具体包括:
获取时序数据库中的时序数据,按照设定时间区间对时序数据的时间序列进行切分;
切分后形成时间区间相同的多个子段。
根据本发明提供的一种用于时序数据库的分段聚合查询方法,所述通过时间序列的第一个数据点初始化第一个子段并计算聚合值,具体包括:
将时间序列的第一个数据点的时间初始化第一个子段的开始时间和结束时间;
通过第一个数据点的值和聚合函数初始化第一个子段的聚合值,生成聚合结果。
根据本发明提供的一种用于时序数据库的分段聚合查询方法,所述从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果,具体包括:
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点为分割点,则生成第一判断结果;
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点不是分割点,则生成第二判断结果。
根据本发明提供的一种用于时序数据库的分段聚合查询方法,根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成,具体包括:
根据第一判断结果,将聚合结果加入所有子段的聚合结果集合,将开始时间和结束时间设置为当前点的时间,使用当前点的值及聚合函数重新初始化聚合值;
根据第二判断结果,将结束时间设置为当前点的时间,使用当前点的值及聚合函数更新聚合值;
将时间序列全部遍历完成后,将聚合结果加入所有子段的聚合结果集合,结束对时间序列的处理。
根据本发明提供的一种用于时序数据库的分段聚合查询方法,将聚合区间按照待求解子段的边界划分为一系列无重叠子段,记为预聚合子段;
多所述预聚合子段的聚合值进行求解,在求解过程中维护一个队列保存当前待求解子段内的预聚合值;
当聚合函数为最大/小值时,队列按照单调队列进行维护,降低队列维护的复杂度。
根据本发明提供的一种用于时序数据库的分段聚合查询方法,时序数据库中每个数据块按照时间戳升序排列;
在生成数据库过程中,进行预聚合计算,并将预聚合结果作为数据块头部信息与数据块共同写入文件;
在执行分段聚合查询过程中,扫描每个数据块,先判断当前段的时间范围是否完全覆盖此数据块的时间范围,如果是,直接用数据块头部包含的预聚合结果更新当前段的聚合值,否则,遍历此数据块中的数据点进行计算。
本发明还提供一种用于时序数据库的分段聚合查询系统,述系统包括:
分段模块,用于从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段;
初始化模块,用于通过时间序列的第一个数据点初始化第一个子段并计算聚合值;
分割点判断模块,用于从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果;
聚合结果生成模块,用于根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成;
切分子段模块,对于定长时间区段分段,当子段之间存在重叠,将时间序列切分成多个长度固定的子段,每个子段产生一个聚合值;
结果输出模块,用于所述时间序列全部遍历完成后生成聚合结果,输出结果集,完成分段聚合查询。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述用于时序数据库的分段聚合查询方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述用于时序数据库的分段聚合查询方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述用于时序数据库的分段聚合查询方法。
本发明提供的一种用于时序数据库的分段聚合查询方法及系统,对高维度、大数据量并且不断产生的时序数据进行处理,将连续的时间序列分段并降维,从而提高对数据分析处理的效率;定义不同的数据分段方式以应对不同的应用场景和需求,并且只需要对时间序列数据进行一次遍历即可得到所有子段的聚合结果,提升时序数据分析处理效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种用于时序数据库的分段聚合查询方法的流程示意图之一;
图2是本发明提供的一种用于时序数据库的分段聚合查询方法的流程示意图之二;
图3是本发明提供的一种用于时序数据库的分段聚合查询方法的流程示意图之三;
图4是本发明提供的一种用于时序数据库的分段聚合查询方法的流程示意图之四;
图5是本发明提供的一种用于时序数据库的分段聚合查询方法的流程示意图之五;
图6是本发明提供的一种用于时序数据库的分段聚合查询方法的流程示意图之六;
图7是本发明提供的一种用于时序数据库的分段聚合查询系统的模块连接示意图;
图8是本发明提供的电子设备的结构示意图;
图9是本发明提供的时序数据库分段聚合方法流程框图;
图10是本发明提供的针对文件结构的优化流程框图;
图11是本发明提供的数据块分布示意图;
图12是本发明提供的时间序列分段示意图;
附图标记:
110:分段模块;120:初始化模块;130:分割点判断模块;140:聚合结果生成模块;150:结果输出模块;
810:处理器;820:通信接口;830:存储器;840:通信总线。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图6描述本发明的一种用于时序数据库的分段聚合查询方法,包括:
S100、从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段;
S200、通过时间序列的第一个数据点初始化第一个子段并计算聚合值;
S300、从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果;
S400、根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成;
S500、对于定长时间区段分段,当子段之间存在重叠,将时间序列切分成多个长度固定的子段,每个子段产生一个聚合值;
S600、所述时间序列全部遍历完成后生成聚合结果,输出结果集,完成分段聚合查询。
本发明中提出了一种通用的时间序列分段聚合方法,可以定义不同的数据分段方式以应对不同的应用场景和需求,并且只需要对时间序列数据进行一次遍历即可得到所有子段的聚合结果,具有线性时间的算法复杂度。针对时序数据库文件格式的特点,本发明提出一种优化方案,通过利用预先存储的数据块聚合值,加快分段聚合查询的执行速度。
从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段,具体包括:
S101、获取时序数据库中的时序数据,按照设定时间区间对时序数据的时间序列进行切分;
S102、切分后形成时间区间相同的多个子段。
通过对整体的时间序列切分为多个字段,在针对每个字段进行数据聚合处理,能够明显提升数据统计分析的效率。
通过时间序列的第一个数据点初始化第一个子段并计算聚合值,具体包括:
S202、将时间序列的第一个数据点的时间初始化第一个子段的开始时间和结束时间;
S202、通过第一个数据点的值和聚合函数初始化第一个子段的聚合值,生成聚合结果。
本发明中,定义TS表示输入的时间序列,UDSF表示时间序列分段逻辑,AGGR表示聚合计算函数,SOAR_SET表示所有子段的聚合结果集合。
使用TS的第一个数据点的时间初始化第一个子段的开始时间ST与结束时间ET,并使用它的值及聚合函数AGGR,初始化第一个子段的聚合值V。
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果,具体包括:
S301、从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点为分割点,则生成第一判断结果;
S302、从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点不是分割点,则生成第二判断结果。
根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成,具体包括:
S401、根据第一判断结果,将聚合结果加入所有子段的聚合结果集合,将开始时间和结束时间设置为当前点的时间,使用当前点的值及聚合函数重新初始化聚合值;
S402、根据第二判断结果,将结束时间设置为当前点的时间,使用当前点的值及聚合函数更新聚合值;
S403、将时间序列全部遍历完成后,将聚合结果加入所有子段的聚合结果集合,结束对时间序列的处理。
在本发明中,使用UDSF(时间序列分段逻辑)判断当前数据点是否为分割点。如果是,将聚合结果<ST,ET,V>加入SOAR_SET(所有子段的聚合结果集合),然后将ST、ET设置为当前点的时间,并使用当前点的值及聚合函数AGGR,重新初始化V,进入下一步;否则,将ET设置为当前点的时间,使用当前点的值及聚合函数AGGR,更新V,进入下一步。
判断时间序列TS是否处理完成,如果是,将聚合结果<ST,ET,V>加入SOAR_SET,并结束对TS的处理;
否则读取TS的下一个数据点,返回判断当前数据点是否为分割点的步骤。
时间序列全部遍历完成后生成聚合结果,输出结果集,完成分段聚合查询,只需要对时间序列数据进行一次遍历即可得到所有子段的聚合结果。
在数据库系统中,保存在磁盘上的数据以文件的形式组织,数据块是读写文件的最小单位。在时序数据库中,每个数据块包含一个时间区间的数据,并且在数据块内部按照时间戳升序组织。在查询数据时,按照时间戳顺序(升序或降序)扫描查询时间范围内的数据块。
对于定长时间区段分段,当子段之间存在重叠,将时间序列切分成多个长度固定的子段,每个子段产生一个聚合值,具体包括:
将聚合区间按照待求解子段的边界划分为一系列无重叠子段,记为预聚合子段;
多所述预聚合子段的聚合值进行求解,在求解过程中维护一个队列保存当前待求解子段内的预聚合值;
当聚合函数为最大/小值时,队列按照单调队列进行维护,降低队列维护的复杂度。
在本发明中,将聚合区间按照待求解子段的边界划分为一系列无重叠子段,记为预聚合子段。如果interval能被step整除,则每个预聚合子段的长度均为step。否则,首先有interval/step向下取整个长度为step的子段,之后循环出现长度分别为interval%step和step-interval%step的子段。为了方便处理,可以忽略开始的若干个长度为step的子段,即预聚合子段的长度为interval%step和step-interval%step循环;
按照本发明提出的方法对这些预聚合子段的聚合值进行求解,在求解过程中维护一个队列(记为PAQ)来保存当前待求解子段内的预聚合值。同时,维护一个聚合值(记为V)保存当前队列中预聚合值的进一步聚合结果。定义ST和ET分别为当前待求解子段的开始时间和结束时间,PST和PET分别为当前预聚合子段的开始时间和结束时间,SOAR_SET表示所有子段的聚合结果集合。执行步骤如下:
①初始化第一个(或下一个)待求解子段的开始时间ST和结束时间ET。从队列PAQ的队头开始检查,将不在[ST,ET]内的预聚合子段的聚合值从队列中弹出,同时更新V;
②初始化第一个(或下一个)预聚合子段的开始时间PST和结束时间PET。计算得到当前预聚合子段的聚合值PV。将预聚合结果<PST,PET,PV>加入PAQ队尾,同时更新V;
③若PET=ET,说明当前待求解子段内全部预聚合子段均以求解完毕,此时V即为待求解子段的聚合值。将聚合结果<ST,ET,V>加入SOAR_SET,返回步骤①,求解下一个子段,直至全部子段求解完毕;否则,返回步骤②,处理下一个预聚合子段。
特别地,当聚合函数为最大/小值时,PAQ可以按照单调队列进行维护,进一步降低队列维护的复杂度。如求解最大值时,得到当前预聚合子段的聚合值PV后,对于此时队列中小于PV的值,由于其不可能作为任何子段的最大值,因此可以将其直接弹出队列。
在一个具体实施例中,采用定长时间区间分段,求每个子段内的最大值,待查询的时间区间为[0,15),子段区间长度为5,相邻子段起点间的距离为3。此时时间序列待求解子段之间存在重叠。图12给出了该示例中时间序列的分段情况
分段聚合的执行过程如下:
首先根据需求得知interval=5,step=3,得到预聚合子段的长度为3和2循环;
第一个待求解子段的时间范围是[0,4],初始化队列PAQ=[],当前聚合值V=null;
第一个预聚合子段的时间范围是[0,2],求解得到PV=3。更新队列为PAQ=[<0,2,3>],聚合值V=3。此时预聚合子段的结束时间不等于待求解子段的结束时间,继续求解下一个预聚合子段;
第二个预聚合子段的时间范围是[3,4],求解得到PV=2。队列中预聚合值均大于2,直接将当前预聚合值加入队列,更新队列为PAQ=[<3,4,2>,<0,2,3>],聚合值V=3。此时预聚合子段的结束时间等于待求解子段的结束时间,将第一个待求解子段的聚合结果<0,4,3>加入结果集,进入下一个待求解子段的求解;
第二个待求解子段的时间范围是[3,7]。将PAQ中不在该范围内的预聚合值弹出,更新为PAQ=[<3,4,2>],更新V=2;
第三个预聚合子段的时间范围是[5,7],求解得到PV=7。将队列中预聚合值小于7的元素弹出,然后将当前预聚合值加入队列,更新队列为PAQ=[<5,7,7>],聚合值V=7。此时预聚合子段的结束时间等于待求解子段的结束时间,将第二个待求解子段的聚合结果<3,7,7>加入结果集,进入下一个待求解子段的求解;
重复以上过程,直至全部待求解子段求解完成。
本发明公开的用于时序数据库的分段聚合查询方法,还包括:
S501、时序数据库中每个数据块按照时间戳升序排列;
S502、在生成数据库过程中,进行预聚合计算,并将预聚合结果作为数据块头部信息与数据块共同写入文件;
S503、在执行分段聚合查询过程中,扫描每个数据块,先判断当前段的时间范围是否完全覆盖此数据块的时间范围,如果是,直接用数据块头部包含的预聚合结果更新当前段的聚合值,否则,遍历此数据块中的数据点进行计算。
为了进一步加快执行速度,对于每个数据块,在生成过程中进行预聚合计算,并将预聚合结果作为数据块的头部信息与数据块一同写入文件。预聚合计算的内容包括数据块的开始时间和结束时间,数据的最大值、最小值、总和、计数、均值。
在执行分段聚合查询的过程中,对于扫描的每个数据块,先判断当前段的时间范围是否完全覆盖该数据块的时间范围。如果是,直接用数据块头部包含的预聚合结果更新当前段的聚合值。否则,遍历该数据块中的数据点进行计算。
通过上述方法能够进一步提升时序数据聚合查询速度。
采用的时间序列分段方式为定长时间区间分段,即按照一系列定长的时间区间将一个时间序列切分成多个子段。这种分段方式非常实用,因为在实际应用中用户往往并不关心非常细粒度的反应每个时刻信息的数据,而是更关注一段时期的数据总量或均值信息。
参考图9-图11,在一个具体实施例中,采用定长时间区间分段,求每个子段的数据和,待查询的时间区间为[0,15),时间区间分段长度为5,因此可以将时间序列分为3段。图3给出了该示例中数据块的分布情况。
分段聚合的执行过程如下:
(1)扫描数据块1:数据块1的时间范围是[0,3],子段1时间范围是[0,5),因此第一个子段的范围覆盖数据块1,可以使用数据块1的预聚合信息初始化子段1的开始时间为0,结束时间为3,聚合值为6;
(2)扫描数据块2:数据块2的时间范围是[4,11],开始时间在子段1内,但子段1的范围无法覆盖数据块2,因此需要逐点处理;
(2.1)对于数据点4:该点不是分割点,更新子段1的结束时间为4,聚合值为10;
(2.2)对于数据点5:该点是分割点。将上一个子段的聚合结果<0,4,10>加入结果集,并初始化子段2的开始时间为5,结束时间为5,聚合值为5;
(2.3)对于数据点7:该点不是分割点,更新子段2的结束时间为7,聚合值为12;
(2.4)对于数据点9:该点不是分割点,更新子段2的结束时间为9,聚合值为31;
(2.5)对于数据点10:该点是分割点。将上一个子段的聚合结果<5,9,31>加入结果集,并初始化子段3的开始时间为10,结束时间为10,聚合值为10;
(2.6)对于数据点11:该点不是分割点,更新子段3的结束时间为11,聚合值为21。
(3)扫描数据块3:数据块3的时间范围是[12,16],开始时间在子段3内,但子段3的范围无法覆盖数据块3,因此需要逐点处理;
(3.1)对于数据点12:该点不是分割点,更新子段3的结束时间为12,聚合值为33;
(3.2)对于数据点13:该点不是分割点,更新子段3的结束时间为13,聚合值为46;
(3.3)对于数据点14:该点不是分割点,更新子段3的结束时间为14,聚合值为60;
(3.4)对于数据点15:该点不在待查询区间内,说明序列处理结束。将上一个子段的聚合结果<10,14,60>加入结果集。
(4)计算结束,返回结果集。
通过本发明提供的一种用于时序数据库的分段聚合查询方法,对高维度、大数据量并且不断产生的时序数据进行处理,将连续的时间序列分段并降维,从而提高对数据分析处理的效率;定义不同的数据分段方式以应对不同的应用场景和需求,并且只需要对时间序列数据进行一次遍历即可得到所有子段的聚合结果,提升时序数据分析处理效率。
参考图7,本发明还公开了一种用于时序数据库的分段聚合查询系统,所述系统包括:
分段模块110,用于从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段;
初始化模块120,用于通过时间序列的第一个数据点初始化第一个子段并计算聚合值;
分割点判断模块130,用于从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果;
聚合结果生成模块140,用于根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成;
结果输出模块150,用于所述时间序列全部遍历完成后生成聚合结果,输出结果集,完成分段聚合查询。
其中,分段模块110获取时序数据库中的时序数据,按照设定时间区间对时序数据的时间序列进行切分;
切分后形成时间区间相同的多个子段。
初始化模块120,将时间序列的第一个数据点的时间初始化第一个子段的开始时间和结束时间;
通过第一个数据点的值和聚合函数初始化第一个子段的聚合值,生成聚合结果。
分割点判断模块130,从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点为分割点,则生成第一判断结果;
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点不是分割点,则生成第二判断结果。
聚合结果生成模块140,根据第一判断结果,将聚合结果加入所有子段的聚合结果集合,将开始时间和结束时间设置为当前点的时间,使用当前点的值及聚合函数重新初始化聚合值;
根据第二判断结果,将结束时间设置为当前点的时间,使用当前点的值及聚合函数更新聚合值;
将时间序列全部遍历完成后,将聚合结果加入所有子段的聚合结果集合,结束对时间序列的处理。
通过本发明提供的一种用于时序数据库的分段聚合查询系统,对高维度、大数据量并且不断产生的时序数据进行处理,将连续的时间序列分段并降维,从而提高对数据分析处理的效率;定义不同的数据分段方式以应对不同的应用场景和需求,并且只需要对时间序列数据进行一次遍历即可得到所有子段的聚合结果,提升时序数据分析处理效率。
图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行一种用于时序数据库的分段聚合查询方法,该方法包括:从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段;
通过时间序列的第一个数据点初始化第一个子段并计算聚合值;
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果;
根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成;
对于定长时间区段分段,当子段之间存在重叠,将时间序列切分成多个长度固定的子段,每个子段产生一个聚合值;
所述时间序列全部遍历完成后生成聚合结果,输出结果集,完成分段聚合查询。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的一种用于时序数据库的分段聚合查询方法,该方法包括:从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段;
通过时间序列的第一个数据点初始化第一个子段并计算聚合值;
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果;
根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成;
对于定长时间区段分段,当子段之间存在重叠,将时间序列切分成多个长度固定的子段,每个子段产生一个聚合值;
所述时间序列全部遍历完成后生成聚合结果,输出结果集,完成分段聚合查询。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的一种用于时序数据库的分段聚合查询方法,该方法包括:从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段;
通过时间序列的第一个数据点初始化第一个子段并计算聚合值;
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果;
根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成;
对于定长时间区段分段,当子段之间存在重叠,将时间序列切分成多个长度固定的子段,每个子段产生一个聚合值;
所述时间序列全部遍历完成后生成聚合结果,输出结果集,完成分段聚合查询。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种用于时序数据库的分段聚合查询方法,其特征在于,包括:
从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段;
通过时间序列的第一个数据点初始化第一个子段并计算聚合值;
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果;
根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成;
对于定长时间区段分段,当子段之间存在重叠,将时间序列切分成多个长度固定的子段,每个子段产生一个聚合值;
所述时间序列全部遍历完成后生成聚合结果,输出结果集,完成分段聚合查询;
其中,从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果,具体包括:
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点为分割点,则生成第一判断结果;
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点不是分割点,则生成第二判断结果;
根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成,具体包括:
根据第一判断结果,将聚合结果加入所有子段的聚合结果集合,将开始时间和结束时间设置为当前点的时间,使用当前点的值及聚合函数重新初始化聚合值;
根据第二判断结果,将结束时间设置为当前点的时间,使用当前点的值及聚合函数更新聚合值;
将时间序列全部遍历完成后,将聚合结果加入所有子段的聚合结果集合,结束对时间序列的处理。
2.根据权利要求1所述的用于时序数据库的分段聚合查询方法,其特征在于,所述从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段,具体包括:
获取时序数据库中的时序数据,按照设定时间区间对时序数据的时间序列进行切分;
切分后形成时间区间相同的多个子段。
3.根据权利要求1所述的用于时序数据库的分段聚合查询方法,其特征在于,所述通过时间序列的第一个数据点初始化第一个子段并计算聚合值,具体包括:
将时间序列的第一个数据点的时间初始化第一个子段的开始时间和结束时间;
通过第一个数据点的值和聚合函数初始化第一个子段的聚合值,生成聚合结果。
4.根据权利要求1所述的用于时序数据库的分段聚合查询方法,其特征在于,所述对于定长时间区段分段,当子段之间存在重叠,将时间序列切分成多个长度固定的子段,每个子段产生一个聚合值,具体包括:
将聚合区间按照待求解子段的边界划分为一系列无重叠子段,记为预聚合子段;
对所述预聚合子段的聚合值进行求解,在求解过程中维护一个队列保存当前待求解子段内的预聚合值;
当聚合函数为最大/小值时,队列按照单调队列进行维护,降低队列维护的复杂度。
5.根据权利要求1所述的用于时序数据库的分段聚合查询方法,其特征在于,还包括:
时序数据库中每个数据块按照时间戳升序排列;
在生成数据库过程中,进行预聚合计算,并将预聚合结果作为数据块头部信息与数据块共同写入文件;
在执行分段聚合查询过程中,扫描每个数据块,先判断当前段的时间范围是否完全覆盖此数据块的时间范围,如果是,直接用数据块头部包含的预聚合结果更新当前段的聚合值,否则,遍历此数据块中的数据点进行计算。
6.一种用于时序数据库的分段聚合查询系统,其特征在于,所述系统包括:
分段模块,用于从时序数据库中获取时序数据,将所述时序数据的时间序列进行切分,分为多个子段;
初始化模块,用于通过时间序列的第一个数据点初始化第一个子段并计算聚合值;
分割点判断模块,用于从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点是否为分割点,生成判断结果;
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点为分割点,则生成第一判断结果;
从时间序列的第二个数据点开始,通过时间序列分段逻辑判断当前数据点不是分割点,则生成第二判断结果;
聚合结果生成模块,用于根据所述判断结果更新聚合值或重新初始化聚合值,直至所述时间序列全部遍历完成;
根据第一判断结果,将聚合结果加入所有子段的聚合结果集合,将开始时间和结束时间设置为当前点的时间,使用当前点的值及聚合函数重新初始化聚合值;
根据第二判断结果,将结束时间设置为当前点的时间,使用当前点的值及聚合函数更新聚合值;
将时间序列全部遍历完成后,将聚合结果加入所有子段的聚合结果集合,结束对时间序列的处理;
切分子段模块,对于定长时间区段分段,当子段之间存在重叠,将时间序列切分成多个长度固定的子段,每个子段产生一个聚合值;
结果输出模块,用于所述时间序列全部遍历完成后生成聚合结果,输出结果集,完成分段聚合查询。
7.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述用于时序数据库的分段聚合查询方法。
8.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述用于时序数据库的分段聚合查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310436472.0A CN116775692B (zh) | 2023-04-21 | 2023-04-21 | 一种用于时序数据库的分段聚合查询方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310436472.0A CN116775692B (zh) | 2023-04-21 | 2023-04-21 | 一种用于时序数据库的分段聚合查询方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116775692A CN116775692A (zh) | 2023-09-19 |
CN116775692B true CN116775692B (zh) | 2024-01-30 |
Family
ID=87984938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310436472.0A Active CN116775692B (zh) | 2023-04-21 | 2023-04-21 | 一种用于时序数据库的分段聚合查询方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775692B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108509990A (zh) * | 2018-03-29 | 2018-09-07 | 重庆大学 | 一种时序键值型工业过程数据并行分析方法 |
CN114291025A (zh) * | 2021-12-31 | 2022-04-08 | 成都路行通信息技术有限公司 | 一种基于数据分段聚合分布的车辆碰撞检测方法及系统 |
CN115514376A (zh) * | 2022-08-29 | 2022-12-23 | 北京思维实创科技有限公司 | 基于改进符号聚合近似的高频时序数据压缩方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9361329B2 (en) * | 2013-12-13 | 2016-06-07 | International Business Machines Corporation | Managing time series databases |
US11269877B2 (en) * | 2017-06-22 | 2022-03-08 | Sap Se | Visualization-oriented time series data aggregation |
-
2023
- 2023-04-21 CN CN202310436472.0A patent/CN116775692B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108509990A (zh) * | 2018-03-29 | 2018-09-07 | 重庆大学 | 一种时序键值型工业过程数据并行分析方法 |
CN114291025A (zh) * | 2021-12-31 | 2022-04-08 | 成都路行通信息技术有限公司 | 一种基于数据分段聚合分布的车辆碰撞检测方法及系统 |
CN115514376A (zh) * | 2022-08-29 | 2022-12-23 | 北京思维实创科技有限公司 | 基于改进符号聚合近似的高频时序数据压缩方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于统计特征的时序数据符号化算法;钟清流;蔡自兴;;计算机学报(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116775692A (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111709533B (zh) | 机器学习模型的分布式训练方法、装置以及计算机设备 | |
CN110633277A (zh) | 时序数据存储方法、装置、计算机设备和存储介质 | |
US11935049B2 (en) | Graph data processing method and apparatus, computer device, and storage medium | |
WO2021103403A1 (zh) | 区块链交易信息管理方法、装置、计算机设备及存储介质 | |
US10650559B2 (en) | Methods and systems for simplified graphical depictions of bipartite graphs | |
CN115865607A (zh) | 一种分布式训练的计算节点管理方法及相关装置 | |
CN116775692B (zh) | 一种用于时序数据库的分段聚合查询方法及系统 | |
CN111242286A (zh) | 一种数据格式变换方法、装置及计算机可读存储介质 | |
CN111122222B (zh) | 一种样本点位置确定方法及系统 | |
CN114117878A (zh) | 一种基于改进粒子群寻优的目标运动轨迹分段压缩方法 | |
CN116127400B (zh) | 基于异构计算的敏感数据识别系统、方法及存储介质 | |
CN116484016B (zh) | 一种基于时序路径自动维护的时序知识图谱推理方法和系统 | |
CN110765360A (zh) | 文本话题处理方法、装置、电子设备及计算机存储介质 | |
CN106933882A (zh) | 一种大数据增量计算方法和装置 | |
CN113094945B (zh) | 一种sa-beso联合拓扑优化方法 | |
CN111966889B (zh) | 一种图嵌入向量的生成方法以及推荐网络模型的生成方法 | |
CN114691630A (zh) | 一种智慧供应链大数据共享方法及系统 | |
CN114201369A (zh) | 一种服务器集群管理方法、装置、电子设备及存储介质 | |
CN114240179A (zh) | 一种基于事件图谱的财务流程挖掘方法和相关装置 | |
KR20140006491A (ko) | 확률 그래프의 효과적인 그래프 클러스터링 장치 및 방법 | |
JP2017167980A (ja) | 特徴選択装置、特徴選択方法およびプログラム | |
CN112256725A (zh) | 一种基于gpu和cpu的相似数据查询方法及系统 | |
CN112836827A (zh) | 模型训练方法、装置以及计算机设备 | |
CN116302178B (zh) | 一种列存数据的加速处理方法和装置 | |
CN114595280B (zh) | 基于滑动窗口的时间成员查询方法、装置、终端及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |