CN109597837B - 时序数据的存储方法、查询方法及相关设备 - Google Patents

时序数据的存储方法、查询方法及相关设备 Download PDF

Info

Publication number
CN109597837B
CN109597837B CN201811449387.3A CN201811449387A CN109597837B CN 109597837 B CN109597837 B CN 109597837B CN 201811449387 A CN201811449387 A CN 201811449387A CN 109597837 B CN109597837 B CN 109597837B
Authority
CN
China
Prior art keywords
query
storage
data
storage engine
time sequence
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
Application number
CN201811449387.3A
Other languages
English (en)
Other versions
CN109597837A (zh
Inventor
杜林�
尤嘉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WeBank Co Ltd
Original Assignee
WeBank Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN201811449387.3A priority Critical patent/CN109597837B/zh
Publication of CN109597837A publication Critical patent/CN109597837A/zh
Application granted granted Critical
Publication of CN109597837B publication Critical patent/CN109597837B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种时序数据的存储系统,所述时序数据的存储系统包括数据接收模块和若干不同类型的存储引擎,所述数据接收模块与每个存储引擎之间都设置有处理队列以进行数据传输,其中:所述数据接收模块,用于从分布式消息队列中获取待存储的时序数据,并将所述待存储的时序数据通过各个处理队列下发至对应的各不同类型的存储引擎;所述存储引擎,用于从接收到的所述待存储的时序数据中获取所述存储引擎对应的预设类型的时序数据,并将所述预设类型的时序数据进行存储。本发明还公开了一种时序数据的存储方法及装置、查询方法、装置、设备及存储介质。本发明解决了现有技术中时序数据的存储方式单一的技术问题。

Description

时序数据的存储方法、查询方法及相关设备
技术领域
本发明涉及计算机技术领域,尤其涉及时序数据的存储方法、查询方法及相关设备。
背景技术
时序数据指的是“时间序列数据”,即:数据和时间强关联,按时间顺序记录系统、设备状态变化的数据。当前,时序数据广泛应用于DevOps(Development和Operations的组合词,过程、方法与系统的统称)监控、应用程序指标、IoT(Internet of Things,物联网)传感器等多种场景中。
现在业界对于时序数据的存储方案很多,根据存储量需求的不同,采用不同存储介质,包括关系型数据库(如MySQL、Oracle),内存型数据库(如共享内存、Redis),非关系型数据库(如Mongodb),大数据类型的数据库(如Hive、Hbase),等等,不同的存储介质在空间大小、对接成本、扩容难度等方面具有各自的优缺点。近几年逐渐开始流行采用专用的时序数据库(TSDB,Time Series Database)来存储时序数据,使用TSDB解决时序数据存储解决了常常遇到的空间小、对接成本高、扩容难度大等问题,但带来了极大的资源开销,往往是很多中小公司所无法承受的。
因此,对于时序数据的存储,目前大部分公司仍是选择单一的存储介质来进行存储,如MySQL或Hbase等,当在选择这一存储介质的同时,也就继承这种单一方式的优先和缺点;有一些公司采用了多种存储介质并存的方法,但没有整合成统一的存储和查询框架,不便于动态的扩展。
发明内容
本发明的主要目的在于提出一种时序数据的存储方法、查询方法及相关设备,旨在解决现有技术中时序数据的存储方式单一的技术问题。
为实现上述目的,本发明提供一种时序数据的存储系统,所述时序数据的存储系统包括数据接收模块和若干不同类型的存储引擎,其中:
所述数据接收模块,用于从分布式消息队列中获取待存储的时序数据,并将所述待存储的时序数据下发至各不同类型的存储引擎;
所述存储引擎,用于从接收到的所述待存储的时序数据中获取预设类型的时序数据,并将所述预设类型的时序数据进行存储。
优选地,所述存储引擎,还用于在启动时向所述数据接收模块发送注册请求;
所述数据接收模块,还用于在接收到所述存储引擎发送的注册请求时,执行所述存储引擎的注册操作。
优选地,所述时序数据的存储系统还包括异常监测模块,所述异常监测模块用于收集各存储引擎在时序数据存储过程中的报错信息,当存在某一存储引擎的报错次数超过预设阈值时,控制所述数据接收模块暂停对该报错的存储引擎的时序数据下发。
此外,为实现上述目的,本发明还提供一种时序数据的存储方法,应用于数据接收模块,所述数据接收模块与若干个存储引擎之间设置有处理队列以进行数据传输,所述时序数据的存储方法包括:
从分布式消息队列中获取待存储的时序数据;
将所述待存储的时序数据通过各个处理队列下发至对应的各不同类型的存储引擎,以供所述存储引擎从接收到的所述待存储的时序数据中获取所述存储引擎对应的预设类型的时序数据,并将所述预设类型的时序数据进行存储。
优选地,所述从分布式消息队列中获取待存储的时序数据的步骤之前,还包括:
在接收到所述存储引擎发送的注册请求时,执行所述存储引擎的注册操作,其中,所述存储引擎在启动时向所述数据接收模块发送注册请求。
优选地,所述时序数据的存储方法还包括:
在接收到异常监测模块发送的针对某一存储引擎的时序数据暂停下发指令时,暂停对该存储引擎的时序数据下发,其中,时序数据暂停下发指令由所述异常监测模块收集各存储引擎在时序数据存储过程中的报错信息,当存在某一存储引擎的报错次数超过预设阈值时发送。
此外,为实现上述目的,本发明还提供一种时序数据的存储装置,所述时序数据的存储装置为数据接收模块,所述数据接收模块与若干个存储引擎之间设置有处理队列以进行数据传输,所述存储装置包括:
获取子模块,用于从分布式消息队列中获取待存储的时序数据;
下发子模块,用于将所述待存储的时序数据通过各个处理队列下发至对应的各不同类型的存储引擎,以供所述存储引擎从接收到的所述待存储的时序数据中获取所述存储引擎对应的预设类型的时序数据,并将所述预设类型的时序数据进行存储。
此外,为实现上述目的,本发明还提供一种时序数据的查询方法,所述时序数据的查询方法应用于如上所述的时序数据的存储系统,所述方法包括如下步骤:
当接收到时序数据查询请求时,获取所述查询请求中的查询时间范围和查询维度;
根据所述查询时间范围和所述查询维度,将所述查询请求划分为若干个子请求;
获取预设的与所述查询维度对应的查询链条,根据所述查询链条中存储引擎的排列先后顺序,遍历所述查询链条中的存储引擎,遍历过程中,若某一存储引擎能够提供所述若干个子请求中的全部或部分子请求所请求查询的时序数据,则使用该存储引擎进行对应的数据查询,并将剩余子请求向下一存储引擎传递,直至所述若干个子请求均被存储引擎处理,或已遍历所述查询链条中的所有存储引擎;
其中,所述查询链条中的存储引擎为上述的存储系统中的存储引擎。
优选地,所述当接收到时序数据查询请求时,获取所述查询请求中的查询时间范围和查询维度的步骤之前,还包括:
接收查询链条的设置指令;
根据所述设置指令设置若干个与预设查询维度对应的查询链条,并设置所述查询链条中包含的存储引擎、存储引擎的排列先后顺序以及各存储引擎的开关状态。
优选地,所述使用该存储引擎进行对应的数据查询,并将剩余子请求向下一存储引擎传递的步骤包括:
在该存储引擎中启动一个异步处理线程进行数据查询,同时,将剩余子请求向下一存储引擎传递。
优选地,所述时序数据的查询方法还包括:
当侦测到所述查询链条中的所有存储引擎都完成查询工作,或达到预设超时时间限制时,获取所有存储引擎的查询结果;
将所述查询结果反馈至前端查询页面。
优选地,所述时序数据的查询方法还包括:
当监测到某一存储引擎发生不可用的异常时,将该异常的存储引擎置为关闭状态。
此外,为实现上述目的,本发明还提供一种时序数据的查询装置,所述时序数据的查询装置包括:
获取模块,用于当接收到时序数据查询请求时,获取所述查询请求中的查询时间范围和查询维度;
划分模块,用于根据所述查询时间范围和所述查询维度,将所述查询请求划分为若干个子请求;
查询模块,用于获取预设的与所述查询维度对应的查询链条,根据所述查询链条中存储引擎的排列先后顺序,遍历所述查询链条中的存储引擎,遍历过程中,若某一存储引擎能够提供所述若干个子请求中的全部或部分子请求所请求查询的时序数据,则使用该存储引擎进行对应的数据查询,并将剩余子请求向下一存储引擎传递,直至所述若干个子请求均被存储引擎处理,或已遍历所述查询链条中的所有存储引擎;
其中,所述查询链条中的存储引擎为上文所述的存储系统中的存储引擎。
此外,为实现上述目的,本发明还提供一种时序数据的查询设备,所述时序数据的查询设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的时序数据的查询程序,所述时序数据的查询程序被所述处理器执行时实现如上所述的时序数据的查询方法的步骤。
此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有时序数据的查询程序,所述时序数据的查询程序被处理器执行时实现如上所述的时序数据的查询方法的步骤。
本发明提出的时序数据的存储系统,首先数据接收模块从分布式消息队列中获取待存储的时序数据,并将所述待存储的时序数据下发至各不同类型的存储引擎,然后由存储引擎从接收到的所述待存储的时序数据中获取其对应的预设类型的时序数据,并将所述预设类型的时序数据进行存储,通过这种方式,构成了一个包含多种不同类型存储引擎的存储系统,且每种类型的存储引擎能够对应存储不同类型的时序数据,从而解决了现有技术中时序数据存储方式单一的技术问题。
附图说明
图1为本发明时序数据的存储系统实施例中数据接收模块和各存储引擎之间的交互示意图;
图2是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图3为本发明时序数据的查询方法第一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提出一种时序数据的存储系统。
在本发明时序数据的存储系统一实施例中,该时序数据的存储系统包括数据接收模块和若干不同类型的存储引擎,数据接收模块与每个存储引擎之间都设置有处理队列以进行数据传输,其中:
所述数据接收模块,用于从分布式消息队列中获取待存储的时序数据,并将所述待存储的时序数据通过各个处理队列下发至对应的各不同类型的存储引擎;
所述存储引擎,用于从接收到的所述待存储的时序数据中获取所述存储引擎对应的预设类型的时序数据,并将所述预设类型的时序数据进行存储。
在本实施例中,时序数据指的是“时间序列数据”,即:数据和时间强关联,按时间顺序记录系统、设备状态变化的数据。时序数据一般包含属性、ID、时间戳或采集值等几个维度。参照图1,图1为本发明时序数据的存储系统实施例中数据接收模块和各存储引擎之间的交互示意图。在进行时序数据存储时,首先,由统一的数据接收模块从分布式消息队列中获取待存储的时序数据,并下发至预先注册的各不同类型的存储引擎的处理队列,以通过各个处理队列下发至各个存储引擎中,其中分布式消息队列可以是Kafka、RabbitMQ(Message Queue,消息总线)或其他消息队列,存储引擎包括但不限于与关系型数据库(如TDSQL,MySQL)、大数据类型的数据库(如Kafka,CMQ(Cloud Message Queue,云消息队列))、内存型数据库(如Redis)、时序数据库(如TSDB)等类型的数据库对应的存储引擎,数据接收模块与各个存储引擎之间通过不同的处理队列实现数据传输,从而实现各个存储引擎的资源隔离,保证不会因为一个存储引擎的阻塞(夯死、队列处理缓慢等)影响到其它存储引擎的数据消费。
需要说明的是,本实施例中在时序数据的存储系统集成多种存储引擎,不同存储引擎之间存储的数据有重叠,实现了存储引擎之间的数据冗余备份,以便于一个存储引擎故障时,切换查询规则到另一个存储引擎中查询。而在数据接收模块和各个存储引擎之间设置对应的处理队列,将处理队列封装为存储引擎的实现类,便于数据存储引擎继续复制使用数据,实现了存储引擎框架的分布式处理,实现隔离。
当存储引擎接收到数据接收模块下发的待存储的时序数据后,从中获取预设类型的时序数据,并将获取到的预设类型的时序数据进行存储,具体地,存储引擎可以按照预设的数据过滤规则对接收到的待存储的时序数据进行过滤,从而得到预设类型的时序数据,比如对于Redis存储引擎,若预设其保存的时序数据类型为交易数据,则该Redis存储引擎需要从待存储的时序数据中过滤出交易数据进行存储,又如对于MySQL存储引擎,若预设其保存的时序数据类型为设备性能数据,则该MySQL存储引擎需要从待存储的时序数据中过滤出设备性能数据进行存储。此外,所述存储引擎还可事先设定好获取的数据类型(由数据的属性或ID决定),那么当存储引擎接收到数据接收模块下发的待存储的时序数据后,从中获取其事先设定的数据类型对应的时序数据。
进一步地,所述存储引擎,还用于在启动时向所述数据接收模块发送注册请求;所述数据接收模块,还用于在接收到所述存储引擎发送的注册请求时,执行所述存储引擎的注册操作。
在本实施例中,各个存储引擎是通过子模块注册的方式接入到系统中,且各个存储引擎之间互不感知,互不通信,互不干扰,各个存储引擎独立维护自身的处理队列,实现了各个存储引擎的资源隔离,保证不会因为一个存储引擎的阻塞(夯死、队列处理缓慢等)影响到其它存储引擎的数据消费。具体注册时,各存储引擎在程序框架启动时自动实例化,在实例化的过程中,该存储引擎向数据接收模块注册,并在注册的过程中,指明存储引擎所监听的消息的类型(由数据的属性或ID决定);数据接收模块在接收到存储引擎发送的注册请求时,即执行存储引擎的注册操作,如此为后续时序数据的下发提供了前提保证,且存储引擎可以根据实际需求横向扩展,灵活性高。
进一步地,所述时序数据的存储系统还包括异常监测模块,所述异常监测模块用于收集各存储引擎在时序数据存储过程中的报错信息,当存在某一存储引擎的报错次数超过预设阈值时,控制所述数据接收模块暂停对该报错的存储引擎的时序数据下发。
在本实施例中,时序数据的存储系统还包括异常监测模块,该异常监测模块用于收集各存储引擎在时序数据存储过程中的报错信息(报错信息包括初始化错误、写存储引擎报错、处理队列慢等),如果监测到存在某一存储引擎的报错次数超过预设阈值,则控制数据接收模块暂停对该报错的存储引擎的时序数据下发,如此可以避免某个引擎一直出错,造成资源的浪费及负载的增加。此外,不仅可以控制所述数据接收模块暂停对该报错的存储引擎的时序数据下发,还可调用告警API进行告警。
本实施例通过上述方式,构成了一个包含多种不同类型存储引擎的存储系统,且每种类型的存储引擎能够对应存储不同类型的时序数据,从而解决了现有技术中时序数据存储方式单一的技术问题。
本发明还提供一种时序数据的存储方法。该时序数据的存储方法应用于数据接收模块,所述数据接收模块与若干个存储引擎之间设置有处理队列以进行数据传输,所述时序数据的存储方法包括:
从分布式消息队列中获取待存储的时序数据;
将所述待存储的时序数据通过各个处理队列下发至对应的各不同类型的存储引擎,以供所述存储引擎从接收到的所述待存储的时序数据中获取所述存储引擎对应的预设类型的时序数据,并将所述预设类型的时序数据进行存储。
进一步地,所述从分布式消息队列中获取待存储的时序数据的步骤之前,还包括:
在接收到所述存储引擎发送的注册请求时,执行所述存储引擎的注册操作,其中,所述存储引擎在启动时向所述数据接收模块发送注册请求。
进一步地,所述时序数据的存储方法还包括:
在接收到异常监测模块发送的针对某一存储引擎的时序数据暂停下发指令时,暂停对该存储引擎的时序数据下发,其中,时序数据暂停下发指令由所述异常监测模块收集各存储引擎在时序数据存储过程中的报错信息,当存在某一存储引擎的报错次数超过预设阈值时发送。
在本发明时序数据的存储方法实施例中,数据接收模块所执行的程序可以参照上述时序数据的存储系统实施例,此处不作赘述。
进一步地,本发明还提供一种时序数据的存储装置,所述时序数据的存储装置可选为数据接收模块,所述数据接收模块与若干个存储引擎之间设置有处理队列以进行数据传输,所述存储装置包括:
获取子模块,用于从分布式消息队列中获取待存储的时序数据;
下发子模块,用于将所述待存储的时序数据通过各个处理队列下发至对应的各不同类型的存储引擎,以供所述存储引擎从接收到的所述待存储的时序数据中获取所述存储引擎对应的预设类型的时序数据,并将所述预设类型的时序数据进行存储。
进一步地,所述存储装置还包括:
执行子模块,用于在接收到所述存储引擎发送的注册请求时,执行所述存储引擎的注册操作,其中,所述存储引擎在启动时向所述数据接收模块发送注册请求。
进一步地,所述存储装置还包括:
暂停子模块,用于在接收到异常监测模块发送的针对某一存储引擎的时序数据暂停下发指令时,暂停对该存储引擎的时序数据下发,其中,时序数据暂停下发指令由所述异常监测模块收集各存储引擎在时序数据存储过程中的报错信息,当存在某一存储引擎的报错次数超过预设阈值时发送。
在本发明时序数据的存储装置实施例中,数据接收模块的各个子模块所执行的操作可以参照上述时序数据的存储系统实施例,此处不作赘述。
本发明还提供一种时序数据的查询设备。
如图2所示,图2是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例时序数据的查询设备可以是PC机、服务器等终端设备。
如图1所示,该设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图2所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及时序数据的查询程序。
在图2所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的时序数据的查询程序,并执行下述时序数据的查询方法实施例中的操作。
本发明时序数据的查询设备的具体实施例与下述时序数据的查询方法的各具体实施例基本相同,在此不作赘述。
基于上述硬件结构,提出本发明时序数据的查询方法各个实施例。
参照图3,图3为本发明时序数据的查询方法第一实施例的流程示意图,该方法中,查询链条中的存储引擎为上述的存储系统中的存储引擎,所述方法包括:
步骤S10,当接收到时序数据查询请求时,获取所述查询请求中的查询时间范围和查询维度;
在本实施例中,可以在WEB前端提供查询页面,以供用户输入查询条件并触发时序数据的查询请求,其中查询条件包括查询时间范围和查询维度,比如查询1周之内的时序数据,查询维度为1天;当查询设备接收到时序数据查询请求时,获取其中携带的查询时间范围和查询维度,其中,查询维度指的是数据对应的时间粒度,对大多数时序数据来说,数据的最小粒度是1分钟,可以再基于1分钟的值,汇总为5分钟或1天等其它维度,汇总的算法根据时序的特性不同,可以采用求和、求平均等方式。
步骤S20,根据所述查询时间范围和所述查询维度,将所述查询请求划分为若干个子请求;
该步骤中,根据获取到的查询时间范围和所述查询维度,将上述查询请求划分为若干个子请求,具体地,按照查询维度对所述查询时间范围的查询请求进行划分,以得到若干个子请求,比如当查询时间范围为1周、查询维度为1天时,可以将查询请求划分为7个子请求,其中每个子请求的查询维度都是1天。
步骤S30,获取预设的与所述查询维度对应的查询链条,根据所述查询链条中存储引擎的排列先后顺序,遍历所述查询链条中的存储引擎,遍历过程中,若某一存储引擎能够提供所述若干个子请求中的全部或部分子请求所请求查询的时序数据,则使用该存储引擎进行对应的数据查询,并将剩余子请求向下一存储引擎传递,直至所述若干个子请求均被存储引擎处理,或已遍历所述查询链条中的所有存储引擎。
该步骤中,获取预设的与上述查询维度对应的查询链条,该查询链条中包括一个或多个不同类型的存储引擎;然后,根据查询链条中存储引擎的排列先后顺序,遍历各个存储引擎,遍历过程中,如果某一个引擎能够提供一个或多个子请求所查询的数据,则进行数据查询,并将不能提供查询的子请求向后端继续传递,如不能提供任何查询请求服务,则全部向后端进行传递,以上过程直到所有子请求均被查询引擎处理,或已遍历所有查询引擎,仍不能覆盖所有子请求时结束。
比如,当前有7个子请求,且每个子请求的查询维度为1天时,获取到与1天对应的查询链条为:存储引擎1→存储引擎2→存储引擎3,若存储引擎1能够提供2个子请求所查询的时序数据,则处理这2个子请求,并将剩余5个子请求传递至存储引擎2,以此类推,直至所有子请求均被查询引擎处理,或已遍历所有查询引擎,仍不能覆盖所有子请求时结束。
进一步地,所述使用该存储引擎进行对应的数据查询,并将剩余子请求向下一存储引擎传递的步骤可以包括:在该存储引擎中启动一个异步处理线程进行数据查询,同时,将剩余子请求向下一存储引擎传递。
具体地,考虑到一个引擎在查询数据的过程中会消耗不少时间,为此,在某一存储引擎确认能处理一部分数据查询请求后,可以将实际的数据查询过程变为异步处理过程,即:从当前的主线程中产生一个新线程来负责具体的查询工作。这样,负责查询的多个查询引擎会同时开启多个新线程来并行工作,提高了数据的查询效率。
本实施例通过上述方式,实现了从同一个框架集成的不同类型的存储引擎中遍历查询不同类型的时序数据,而不是在一个存储引擎中查询不到时,退出当前的存储引擎以切换到另一个存储引擎中进行查询,从而解决了现有技术中由于时序数据存储方式单一而导致的查询便捷性低、灵活性不高的技术问题。
进一步地,基于上述第一实施例,提出本发明时序数据的查询方法第二实施例。
在本实施例中,上述步骤S10之前,还可以包括:接收查询链条的设置指令;根据所述设置指令设置若干个与预设查询维度对应的查询链条,并设置所述查询链条中包含的存储引擎、存储引擎的排列先后顺序以及各存储引擎的开关状态。
本实施例中,查询设备可以接收管理员触发的查询链条的设置指令,然后根据该设置指令设置若干个与预设查询维度对应的查询链条,并设置所述查询链条中包含的存储引擎、存储引擎的排列先后顺序以及各存储引擎的开关状态。比如,可以设置与查询维度1分钟对应的查询链条为Redis→MySQL→HBase,设置与查询维度1天对应的查询链条为CTSDB→Hive等。管理员可以在web界面,手工调整某一个维度下查询引擎的链条顺序,并控制查询引擎的开关状态,如查询引擎的状态为关,后续在处理数据的过程中,将会直接跳过该查询引擎。
需要说明的是,本实施例中查询设备可以提供统一的API(ApplicationProgramming Interface,应用程序编程接口)供WEB前端进行时序数据查询,在统一的API查询中,可以支持自定义查询引擎列表,并由此列表,来临时决定查询引擎的工作顺序。
通过上述查询链条的设置,为后续进行时序数据查询提供了前提保证。
进一步地,所述时序数据的查询方法还包括:当侦测到所述查询链条中的所有存储引擎都完成查询工作,或达到预设超时时间限制时,获取所有存储引擎的查询结果;将所述查询结果反馈至前端查询页面。
本实施例中,当侦测到所述查询链条中的所有存储引擎都完成查询工作,或达到预设超时时间限制时,系统向前端统一返回查询结果,以便用户查看。整个查询过程是一个同步转异步,再异步转同步的一个过程,即:对查询端来说,发出一个请求可以很快得到返回结果,但在系统内部,是通过同时并发多个异步请求线程来实现的。
进一步地,所述时序数据的查询方法还包括:当监测到某一存储引擎发生不可用的异常时,将该异常的存储引擎置为关闭状态。
本实施例中,查询设备可以启用一个外层的系统级异常监控:通过对CPU、内存、线程数、队列长度等指标的采集,对整个框架的运行情况进行监控(可在程序内部,定时通过程序采集当前进程、当前主机的CPU、内存等信息;当前程序的线程数、队列长度等信息),并通过日志、API等方式将指标和告警输出到告警平台,并记录到当前系统对应的运维数据库中。这部分信息,对于运维人员了解系统的运行情况以及系统自动隔离错误的数据引擎等方面有重要意义。
当监测到某一存储引擎发生不可用的异常时,可动态地将该异常的存储引擎置为关闭状态,如此实现了各个存储引擎的异常隔离,避免了因为一个存储引擎的异常(如初始化错误、写存储介质报错、队列慢等)影响到其它存储引擎的数据处理。如:结合try-catch机制,将程序的主逻辑放在try的部分,当程序出现异常时,会自动执行catch部分的逻辑,并在catch部分,统计出错的频率和原因。通过这种异常判断,可以避免主线程不会被中断,保障其它引擎的代码流程能够顺利向下执行。
本发明还提供一种时序数据的查询装置。本发明时序数据的查询装置包括:
获取模块,用于当接收到时序数据查询请求时,获取所述查询请求中的查询时间范围和查询维度;
划分模块,用于根据所述查询时间范围和所述查询维度,将所述查询请求划分为若干个子请求;
查询模块,用于获取预设的与所述查询维度对应的查询链条,根据所述查询链条中存储引擎的排列先后顺序,遍历所述查询链条中的存储引擎,遍历过程中,若某一存储引擎能够提供所述若干个子请求中的全部或部分子请求所请求查询的时序数据,则使用该存储引擎进行对应的数据查询,并将剩余子请求向下一存储引擎传递,直至所述若干个子请求均被存储引擎处理,或已遍历所述查询链条中的所有存储引擎;
其中,所述查询链条中的存储引擎为上文所述的存储系统中的存储引擎。
进一步地,本发明时序数据的查询装置还包括:
接收模块,用于接收查询链条的设置指令;
设置模块,用于根据所述设置指令设置若干个与预设查询维度对应的查询链条,并设置所述查询链条中包含的存储引擎、存储引擎的排列先后顺序以及各存储引擎的开关状态。
进一步地,所述查询模块,还用于在该存储引擎中启动一个异步处理线程进行数据查询,同时,将剩余子请求向下一存储引擎传递。
进一步地,所述获取模块,还用于当侦测到所述查询链条中的所有存储引擎都完成查询工作,或达到预设超时时间限制时,获取所有存储引擎的查询结果;
反馈模块,用于将所述查询结果反馈至前端查询页面。
进一步地,还包括设置模块,用于当监测到某一存储引擎发生不可用的异常时,将该异常的存储引擎置为关闭状态。
上述各程序模块所实现的方法可参照本发明时序数据的查询方法实施例,此处不再赘述。
本发明还提供一种存储介质。
本发明存储介质上存储有时序数据的查询程序,所述时序数据的查询程序被处理器执行时实现如上所述的时序数据的查询方法的步骤。
其中,在所述处理器上运行的时序数据的查询程序被执行时所实现的方法可参照本发明时序数据的查询方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (9)

1.一种时序数据的查询方法,其特征在于,所述时序数据的查询方法包括如下步骤:
接收查询链条的设置指令;所述查询链条包括至少一个不同类型的存储引擎;
根据所述设置指令设置若干个与预设查询维度对应的查询链条,并设置所述查询链条中包含的存储引擎、存储引擎的排列先后顺序以及各存储引擎的开关状态;
当接收到时序数据查询请求时,获取所述查询请求中的查询时间范围和查询维度;所述查询维度是所述时序数据对应的时间粒度;
按照所述查询维度对所述查询时间范围的查询请求进行划分,得到若干个子请求;
获取预设的与所述查询维度对应的查询链条,根据所述查询链条中存储引擎的排列先后顺序,遍历所述查询链条中的存储引擎,遍历过程中,若某一存储引擎能够提供所述若干个子请求中的全部或部分子请求所请求查询的时序数据,则使用该存储引擎进行对应的数据查询,并将剩余子请求向下一存储引擎传递,直至所述若干个子请求均被存储引擎处理,或已遍历所述查询链条中的所有存储引擎;
其中,所述查询链条中的存储引擎为所述时序数据的存储系统中的存储引擎,所述时序数据的存储系统包括数据接收模块和若干不同类型的存储引擎,所述数据接收模块与每个存储引擎之间都设置有处理队列以进行数据传输,其中:所述数据接收模块,用于从分布式消息队列中获取待存储的时序数据,并将所述待存储的时序数据通过各个处理队列下发至对应的各不同类型的存储引擎;所述处理队列封装为对应存储引擎的实现类;所述不同类型的存储引擎所存储的数据有重叠;所述存储引擎,用于从接收到的所述待存储的时序数据中获取所述存储引擎对应的预设类型的时序数据,并将所述预设类型的时序数据进行存储;所述存储引擎,还用于在启动时向所述数据接收模块发送注册请求;所述数据接收模块,还用于在接收到所述存储引擎发送的注册请求时,执行所述存储引擎的注册操作。
2.如权利要求1所述的时序数据的查询方法,其特征在于,所述时序数据的存储系统还包括异常监测模块,所述异常监测模块用于收集各存储引擎在时序数据存储过程中的报错信息,当存在某一存储引擎的报错次数超过预设阈值时,控制所述数据接收模块暂停对该报错的存储引擎的时序数据下发。
3.如权利要求1所述的时序数据的查询方法,其特征在于,所述使用该存储引擎进行对应的数据查询,并将剩余子请求向下一存储引擎传递的步骤包括:
在该存储引擎中启动一个异步处理线程进行数据查询,同时,将剩余子请求向下一存储引擎传递。
4.如权利要求1所述的时序数据的查询方法,其特征在于,所述时序数据的查询方法还包括:
当侦测到所述查询链条中的所有存储引擎都完成查询工作,或达到预设超时时间限制时,获取所有存储引擎的查询结果;
将所述查询结果反馈至前端查询页面。
5.如权利要求1-4任一项所述的时序数据的查询方法,其特征在于,所述时序数据的查询方法还包括:
当监测到某一存储引擎发生不可用的异常时,将该异常的存储引擎置为关闭状态。
6.一种时序数据的查询装置,其特征在于,所述时序数据的查询装置包括:
获取模块,用于接收查询链条的设置指令;所述查询链条包括至少一个不同类型的存储引擎;根据所述设置指令设置若干个与预设查询维度对应的查询链条,并设置所述查询链条中包含的存储引擎、存储引擎的排列先后顺序以及各存储引擎的开关状态;当接收到时序数据查询请求时,获取所述查询请求中的查询时间范围和查询维度;所述查询维度是所述时序数据对应的时间粒度;
划分模块,用于按照所述查询维度对所述查询时间范围的查询请求进行划分,得到若干个子请求;
查询模块,用于获取预设的与所述查询维度对应的查询链条,根据所述查询链条中存储引擎的排列先后顺序,遍历所述查询链条中的存储引擎,遍历过程中,若某一存储引擎能够提供所述若干个子请求中的全部或部分子请求所请求查询的时序数据,则使用该存储引擎进行对应的数据查询,并将剩余子请求向下一存储引擎传递,直至所述若干个子请求均被存储引擎处理,或已遍历所述查询链条中的所有存储引擎;
其中,所述查询链条中的存储引擎为所述时序数据的存储系统中的存储引擎,所述时序数据的存储系统包括数据接收模块和若干不同类型的存储引擎,所述数据接收模块与每个存储引擎之间都设置有处理队列以进行数据传输,其中:所述数据接收模块,用于从分布式消息队列中获取待存储的时序数据,并将所述待存储的时序数据通过各个处理队列下发至对应的各不同类型的存储引擎;所述处理队列封装为对应存储引擎的实现类;所述不同类型的存储引擎所存储的数据有重叠;所述存储引擎,用于从接收到的所述待存储的时序数据中获取所述存储引擎对应的预设类型的时序数据,并将所述预设类型的时序数据进行存储;所述存储引擎,还用于在启动时向所述数据接收模块发送注册请求;所述数据接收模块,还用于在接收到所述存储引擎发送的注册请求时,执行所述存储引擎的注册操作。
7.如权利要求6所述的时序数据的查询装置,其特征在于,所述时序数据的存储系统还包括异常监测模块,所述异常监测模块用于收集各存储引擎在时序数据存储过程中的报错信息,当存在某一存储引擎的报错次数超过预设阈值时,控制所述数据接收模块暂停对该报错的存储引擎的时序数据下发。
8.一种时序数据的查询设备,其特征在于,所述时序数据的查询设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的时序数据的查询程序,所述时序数据的查询程序被所述处理器执行时实现如权利要求1至5中任一项所述的时序数据的查询方法的步骤。
9.一种存储介质,其特征在于,所述存储介质上存储有时序数据的查询程序,所述时序数据的查询程序被处理器执行时实现如权利要求1至5中任一项所述的时序数据的查询方法的步骤。
CN201811449387.3A 2018-11-29 2018-11-29 时序数据的存储方法、查询方法及相关设备 Active CN109597837B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811449387.3A CN109597837B (zh) 2018-11-29 2018-11-29 时序数据的存储方法、查询方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811449387.3A CN109597837B (zh) 2018-11-29 2018-11-29 时序数据的存储方法、查询方法及相关设备

Publications (2)

Publication Number Publication Date
CN109597837A CN109597837A (zh) 2019-04-09
CN109597837B true CN109597837B (zh) 2023-12-01

Family

ID=65959336

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811449387.3A Active CN109597837B (zh) 2018-11-29 2018-11-29 时序数据的存储方法、查询方法及相关设备

Country Status (1)

Country Link
CN (1) CN109597837B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110046183A (zh) * 2019-04-16 2019-07-23 北京易沃特科技有限公司 一种时序数据聚合检索方法、设备及介质
CN110795428A (zh) * 2019-10-10 2020-02-14 中盈优创资讯科技有限公司 应用于工业物联网的时序数据存储方法和时序数据库
CN113722549B (zh) * 2021-09-03 2022-06-21 优维科技(深圳)有限公司 一种基于图的数据状态融合存储系统及方法
CN115604668B (zh) * 2022-12-09 2023-05-09 融合通信技术(天津)有限公司 短信发送和推送监控方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608144A (zh) * 2015-12-17 2016-05-25 山东鲁能软件技术有限公司 一种基于多层模型迭代的大数据分析平台装置及方法
CN106648446A (zh) * 2015-10-30 2017-05-10 阿里巴巴集团控股有限公司 一种用于时序数据的存储方法、装置及电子设备
CN107491561A (zh) * 2017-09-25 2017-12-19 北京航空航天大学 一种基于本体的城市交通异构数据集成系统及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2537670A (en) * 2015-04-23 2016-10-26 Fujitsu Ltd A query mediator, a method of querying a polyglot data tier and a computer program executable to carry out a method of querying a polyglot data tier
CN105160039A (zh) * 2015-10-13 2015-12-16 四川携创信息技术服务有限公司 一种基于大数据的查询方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648446A (zh) * 2015-10-30 2017-05-10 阿里巴巴集团控股有限公司 一种用于时序数据的存储方法、装置及电子设备
CN105608144A (zh) * 2015-12-17 2016-05-25 山东鲁能软件技术有限公司 一种基于多层模型迭代的大数据分析平台装置及方法
CN107491561A (zh) * 2017-09-25 2017-12-19 北京航空航天大学 一种基于本体的城市交通异构数据集成系统及方法

Also Published As

Publication number Publication date
CN109597837A (zh) 2019-04-09

Similar Documents

Publication Publication Date Title
CN109597837B (zh) 时序数据的存储方法、查询方法及相关设备
US20220004423A1 (en) Virtualization-based transaction handling in an on-demand network code execution system
CN108683720B (zh) 一种容器集群服务配置方法及装置
CN112162865B (zh) 服务器的调度方法、装置和服务器
US8191068B2 (en) Resource management system, resource information providing method and program
CN109710615B (zh) 数据库的访问管理方法、系统、电子设备和存储介质
US20120297393A1 (en) Data Collecting Method, Data Collecting Apparatus and Network Management Device
CN108121511B (zh) 一种分布式边缘存储系统中的数据处理方法、装置及设备
JP2012118987A (ja) メモリ使用量照会ガバナのためのコンピュータ実装方法、コンピュータ・プログラム、およびシステム(メモリ使用量照会ガバナ)
CN105760240A (zh) 分布式任务处理方法及装置
JP2004206495A (ja) 管理システム、管理計算機、管理方法及びプログラム
US20080065588A1 (en) Selectively Logging Query Data Based On Cost
JP2015191523A (ja) 構成管理装置、構成管理システム、および構成管理プログラム
CN111625419B (zh) 一种日志采集方法、系统、设备及计算机可读存储介质
US20110055219A1 (en) Database management device and method
CN114116172A (zh) 一种流量数据采集方法、装置、设备及存储介质
CN108519987A (zh) 一种数据持久化方法和装置
CN109656783A (zh) 系统平台监控方法及装置
CN104477776A (zh) 基于角色的起重机远程分级监控系统
CN111625383A (zh) 进程异常事件处理方法、装置、电子设备及存储介质
CN107479974A (zh) 一种虚拟机调度方法及装置
CN116627771B (zh) 日志采集方法、装置、电子设备和可读存储介质
CN115883330B (zh) 告警事件处理方法、系统、设备及存储介质
CN107870822B (zh) 基于分布式系统的异步任务控制方法及系统
CN111376255B (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