一种基于预分组的时序数据查询优化方法与流程

专利2026-02-14  25


本发明公开一种方法,涉及物联网数据管理分析,具体地说是一种基于预分组的时序数据查询优化方法。


背景技术:

1、物联网环境中具有大量的传感器数据/实时数据,这类数据具有高频、数据量大、数据价值密度低等特点,对数据库提出了新的要求和挑战。数据库领域提出了时序数据库的概念,并不断涌现出开源时序数据库系统,包括influxdb、timescaledb、tdengine等,浪潮也推出了分布式多模开务数据库,支持关系数据模型、时序数据模型和预测分析模型。

2、随着时序数据库的不断推广,物联网应用对时序数据库系统需求的不断提高,但时序数据库还不具备更多复杂查询处理能力,查询处理性能也有待提高,以满足物联网大型系统的管理和复杂分析需求。


技术实现思路

1、本发明针对现有技术的问题,提供一种基于预分组的时序数据查询优化方法,能够利用时序数据存储引擎按照设备分组管理的特性,避免对大量时序数据的分组聚合,提高时序数据聚合效率,以提高时序数据库复杂查询性能。

2、本发明提出的具体方案是:

3、本发明提供一种基于预分组的时序数据查询优化方法,包括:

4、步骤1:根据开务数据库的时序表,创建tag表和data表,利用tag表存储设备对应的标签,标签包含标签属性和entity id,利用data表存储时间戳和相应的设备采集的时序数据,

5、步骤2:基于预分组进行时序数据查询:扫描tag表根据标签属性对设备的tag进行预分组,获取相同预分组设备的tag,根据每个tag对应的entity id扫描data表中对应的时序数据,根据时序数据进行聚合计算,得出当前相同组tag对应的时序数据的聚合计算结果,再获取下一个设备分组进行data表扫描和聚合计算,合并各聚合计算结果,根据合并后聚合计算结果返回查询结果。

6、进一步,所述的一种基于预分组的时序数据查询优化方法中步骤1中利用tag表存储设备对应的标签,将所有标签属性都连续存储于同一个文件中,利用data表中的时序数据按照不同的标签分文件进行存储,每一个标签的entity id对应一个数据文件,数据文件中存储标签的所有历史数据,将所有历史数据以block方式连接起来,新写入的数据以block方式追加到末尾。

7、进一步,所述的一种基于预分组的时序数据查询优化方法中步骤2中具体包括:

8、将tag表根据entity id平均划分为m个不同的范围,启动m个线程,分别进行tag表扫描和预分组处理,

9、进行预分组处理:对tag表扫描出来的所有entity id根据标签属性进行预分组,预分组之后tag被分成k个组,分别是group 1、group 2、…、group k,k个分组对于m个线程共享,

10、根据data表扫描的并发度n,启动n个线程同时进行data表的扫描:从k个分组中每次取出一个分组进行处理,扫描data表线程每次处理将对本次分组中的所有entity id进行遍历,分别从data表中读取时序数据进行聚合计算,获取聚合计算结果,然后再取下一个分组进行data表扫描和聚合计算,合并各聚合计算结果,根据合并后聚合计算结果返回查询结果。

11、进一步,所述的一种基于预分组的时序数据查询优化方法中步骤2中针对历史数据,结合时间窗口进行分组聚合计算,包括:

12、将tag表根据entity id平均划分为m个不同的范围,启动m个线程,分别进行tag表扫描和预分组处理,

13、进行预分组处理:对tag表扫描出来的所有entity id根据标签属性进行预分组,预分组之后tag被分成k个组,分别是group 1、group 2、…、group k,k个分组对于m个线程共享,

14、根据data表扫描的并发度n,启动n个线程同时进行data表的扫描:从k个分组中每次取出一个分组进行处理,扫描data表的线程每次处理将对本次分组中的所有entity id进行遍历,分别从data表中读取时序数据,将时序数据按照time_bucket进行分组,

15、其中time_bucket(timestamp)=timestamp%time_window,time_bucket的时间窗口大小为time_window秒,

16、然后根据time_bucket分组后时序数据进行聚合计算,获取聚合计算结果,然后再取下一个tag分组进行data表扫描和聚合计算,合并各聚合计算结果,根据合并后聚合计算结果返回查询结果。

17、进一步,所述的一种基于预分组的时序数据查询优化方法中步骤2中将时序数据按照time_bucket进行分组,包括:

18、对预分组内获得的每一条时序数据计算time_bucket,

19、将时序数据按照time_bucket进行排序,

20、遍历预分组内每条时序数据,将相同time_bucket的时序数据分为一组。

21、本发明还提供一种基于预分组的时序数据查询优化装置,包括数据表管理模块和分组查询模块,

22、数据表管理模块根据开务数据库的时序表,创建tag表和data表,利用tag表存储设备对应的标签,标签包含标签属性和entity id,利用data表存储时间戳和相应的设备采集的时序数据,

23、分组查询模块基于预分组进行时序数据查询:扫描tag表根据标签属性对设备的tag进行预分组,获取相同预分组设备的tag,根据每个tag对应的entity id扫描data表中对应的时序数据,根据时序数据进行聚合计算,得出当前相同组tag对应的时序数据的聚合计算结果,再获取下一个设备分组进行data表扫描和聚合计算,合并各聚合计算结果,根据合并后聚合计算结果返回查询结果。

24、进一步,所述的一种基于预分组的时序数据查询优化装置的数据表管理模块利用tag表存储设备对应的标签,将所有标签属性都连续存储于同一个文件中,利用data表中的时序数据按照不同的标签分文件进行存储,每一个标签的entity id对应一个数据文件,数据文件中存储标签的所有历史数据,将所有历史数据以block方式连接起来,新写入的数据以block方式追加到末尾。

25、进一步,所述的一种基于预分组的时序数据查询优化装置的分组查询模块将tag表根据entity id平均划分为m个不同的范围,启动m个线程,分别进行tag表扫描和预分组处理,

26、进行预分组处理:对tag表扫描出来的所有entity id根据标签属性进行预分组,预分组之后tag被分成k个组,分别是group 1、group 2、…、group k,k个分组对于m个线程共享,

27、根据data表扫描的并发度n,启动n个线程同时进行data表的扫描:从k个分组中每次取出一个分组进行处理,扫描data表线程每次处理将对本次分组中的所有entity id进行遍历,分别从data表中读取时序数据进行聚合计算,获取聚合计算结果,然后再取下一个分组进行data表扫描和聚合计算,合并各聚合计算结果,根据合并后聚合计算结果返回查询结果。

28、进一步,所述的一种基于预分组的时序数据查询优化装置的分组查询模块针对历史数据,结合时间窗口进行分组聚合计算,包括:

29、将tag表根据entity id平均划分为m个不同的范围,启动m个线程,分别进行tag表扫描和预分组处理,

30、进行预分组处理:对tag表扫描出来的所有entity id根据标签属性进行预分组,预分组之后tag被分成k个组,分别是group 1、group 2、…、group k,k个分组对于m个线程共享,

31、根据data表扫描的并发度n,启动n个线程同时进行data表的扫描:从k个分组中每次取出一个分组进行处理,扫描data表的线程每次处理将对本次分组中的所有entity id进行遍历,分别从data表中读取时序数据,将时序数据按照time_bucket进行分组,

32、其中time_bucket(timestamp)=timestamp%time_window,time_bucket的时间窗口大小为time_window秒,

33、然后根据time_bucket分组后时序数据进行聚合计算,获取聚合计算结果,然后再取下一个tag分组进行data表扫描和聚合计算,合并各聚合计算结果,根据合并后聚合计算结果返回查询结果。

34、进一步,所述的一种基于预分组的时序数据查询优化装置的分组查询模块将时序数据按照time_bucket进行分组,包括:

35、对预分组内获得的每一条时序数据计算time_bucket,

36、将时序数据按照time_bucket进行排序,

37、遍历预分组内每条时序数据,将相同time_bucket的时序数据分为一组。

38、本发明的有益之处是:

39、本发明在开务数据库时序模型基础上,利用设备tag分组特性,进行预分组,然后按照设备tag分组进行时序数据扫描,并对扫描结果直接进行聚合计算,能够避免大量时序数据的分组计算,提高时序数据聚合计算性能。避免了时序数据扫描之后的分组聚合,因此能够允许在进行时序数据扫描过程中,将聚合算子下推给时序存储引擎,从而大大提高时序数据扫描性能。


技术特征:

1.一种基于预分组的时序数据查询优化方法,其特征是包括:

2.根据权利要求1所述的一种基于预分组的时序数据查询优化方法,其特征是步骤1中利用tag表存储设备对应的标签,将所有标签属性都连续存储于同一个文件中,利用data表中的时序数据按照不同的标签分文件进行存储,每一个标签的entityid对应一个数据文件,数据文件中存储标签的所有历史数据,将所有历史数据以block方式连接起来,新写入的数据以block方式追加到末尾。

3.根据权利要求1所述的一种基于预分组的时序数据查询优化方法,其特征是步骤2中具体包括:

4.根据权利要求1所述的一种基于预分组的时序数据查询优化方法,其特征是步骤2中针对历史数据,结合时间窗口进行分组聚合计算,包括:

5.根据权利要求4所述的一种基于预分组的时序数据查询优化方法,其特征是步骤2中将时序数据按照time_bucket进行分组,包括:

6.一种基于预分组的时序数据查询优化装置,其特征是包括数据表管理模块和分组查询模块,

7.根据权利要求6所述的一种基于预分组的时序数据查询优化装置,其特征是数据表管理模块利用tag表存储设备对应的标签,将所有标签属性都连续存储于同一个文件中,利用data表中的时序数据按照不同的标签分文件进行存储,每一个标签的entityid对应一个数据文件,数据文件中存储标签的所有历史数据,将所有历史数据以block方式连接起来,新写入的数据以block方式追加到末尾。

8.根据权利要求6所述的一种基于预分组的时序数据查询优化装置,其特征是分组查询模块将tag表根据entityid平均划分为m个不同的范围,启动m个线程,分别进行tag表扫描和预分组处理,

9.根据权利要求6所述的一种基于预分组的时序数据查询优化装置,其特征是分组查询模块针对历史数据,结合时间窗口进行分组聚合计算,包括:

10.根据权利要求9所述的一种基于预分组的时序数据查询优化装置,其特征是分组查询模块将时序数据按照time_bucket进行分组,包括:


技术总结
本发明公开一种基于预分组的时序数据查询优化方法,涉及物联网数据管理分析技术领域;包括:步骤1:根据开务数据库的时序表,创建tag表和data表,利用tag表存储设备对应的标签,标签包含标签属性和entity id,利用data表存储时间戳和相应的设备采集的时序数据,步骤2:基于预分组进行时序数据查询:扫描tag表根据标签属性对设备的tag进行预分组,获取相同预分组设备的tag,根据每个tag对应的entity id扫描data表中对应的时序数据,根据时序数据进行聚合计算,得出当前相同组tag对应的时序数据的聚合计算结果,再获取下一个设备分组进行data表扫描和聚合计算,合并各聚合计算结果,根据合并后聚合计算结果返回查询结果。

技术研发人员:王永炎,裴春峰,任鲲鹏,徐胜康
受保护的技术使用者:上海沄熹科技有限公司
技术研发日:
技术公布日:2024/12/17
转载请注明原文地址:https://xbbs.6miu.com/read-29747.html