CN115048390B - 基于influxdb的数据存储方法及装置 - Google Patents
基于influxdb的数据存储方法及装置 Download PDFInfo
- Publication number
- CN115048390B CN115048390B CN202210978002.2A CN202210978002A CN115048390B CN 115048390 B CN115048390 B CN 115048390B CN 202210978002 A CN202210978002 A CN 202210978002A CN 115048390 B CN115048390 B CN 115048390B
- Authority
- CN
- China
- Prior art keywords
- data
- information
- inflixdb
- key
- target processing
- 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
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Abstract
本申请涉及数据处理技术领域,提供一种基于influxdb的数据存储方法及装置,该方法包括:根据读取到的配置信息结合设备配置表确定目标处理数据,根据目标处理数据构建key数据;根据定时任务的方法参数确定key数据中被调度的key信息,并根据被调度的key信息确定业务数据;将业务数据封装为InfluxdbHistoryDataVo对象,并将预设时长内所有的InfluxdbHistoryDataVo对象转换为influxdb数据格式存储至influxdb数据库中。本申请实施例提供的基于influxdb的数据存储方法通过Influxdb数据库的高吞吐量和压缩率高特性,提升了聚合查询操作时的查询效率。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种基于influxdb的数据存储方法及装置。
背景技术
SCADA系统需要将采集过来的设备数据入库存储,存储的库称为历史库,历史库的数据将作为其他业务的数据来源,支撑多种场景下的业务需求。当前数据大多数都是存储于mysql数据库中,利用分表分库进行数据的扩容,但是随着时间的推移,设备数量的增加,数据量也随之激增。mysql数据库在数据量过大时,分表分库在进行聚合查询操作时的查询效率低。
发明内容
本申请提供一种基于influxdb的数据存储方法及装置,旨在提升分表分库在进行聚合查询操作时的查询效率。
第一方面,本申请提供一种基于influxdb的数据存储方法,包括:
根据读取到的配置信息结合设备配置表确定目标处理数据,并根据所述目标处理数据构建key数据;
根据定时任务的方法参数确定所述key数据中被调度的key信息,并根据所述被调度的key信息确定业务数据;
将所述业务数据封装为InfluxdbHistoryDataVo对象,并将预设时长内所有的InfluxdbHistoryDataVo对象转换为influxdb数据格式存储至influxdb数据库中。
在一个实施例中,所述根据读取到的配置信息结合设备配置表确定目标处理数据,包括:
将所述配置信息按照所述设备配置表中的信息进行数据转换,得到各个待处理数据;
将各个所述待处理数据以map结构进行封装,得到数据集合对象,其中,所述map结构包括key信息和value信息,key信息为列名信息,value信息为各列中的具体值信息;
通过周期时间对所述数据集合对象进行过滤,得到所述目标处理数据。
所述通过周期时间对所述数据集合对象进行过滤,得到所述目标处理数据,包括:
剔除所述数据集合对象中没有配置周期时间的待处理数据,并保存所述数据集合对象中配置有周期时间的待处理数据,得到所述目标处理数据。
所述根据所述目标处理数据构建key数据,包括:
根据所述目标处理数据中的类型名称和周期时间,构建map的key信息;
根据所述目标处理数据中的类型名称和标识号ID,构建redis的key信息,并将所述redis的key信息存储至额外增加的value信息中;
根据所述map的key信息和所述额外增加的value信息,构建所述key数据。
所述将预设时长内所有的InfluxdbHistoryDataVo对象转换为influxdb数据格式存储至influxdb数据库中之后,还包括:
通过redis消息订阅方式监听队列historyUpdate,确定所述队列historyUpdate中的配置信息是否发生变更;
若所述队列historyUpdate中的配置信息发生了变更,则根据所述队列historyUpdate中配置表结合时间戳的消息重新加载新的配置表,以通过所述新的配置表完成数据重新采集。
第二方面,本申请提供一种基于influxdb的数据存储装置包括:
构建模块,用于根据读取到的配置信息结合设备配置表确定目标处理数据,并根据所述目标处理数据构建key数据;
确定模块,用于根据定时任务的方法参数确定所述key数据中被调度的key信息,并根据所述被调度的key信息确定业务数据;
存储模块,用于将所述业务数据封装为InfluxdbHistoryDataVo对象,并将预设时长内所有的InfluxdbHistoryDataVo对象转换为influxdb数据格式存储至influxdb数据库中。
在一个实施例中,所述构建模块还用于:
将所述配置信息按照所述设备配置表中的信息进行数据转换,得到各个待处理数据;
将各个所述待处理数据以map结构进行封装,得到数据集合对象,其中,所述map结构包括key信息和value信息,key信息为列名信息,value信息为各列中的具体值信息;
通过周期时间对所述数据集合对象进行过滤,得到所述目标处理数据。
所述构建模块还用于:
根据所述目标处理数据中的类型名称和周期时间,构建map的key信息;
根据所述目标处理数据中的类型名称和标识号ID,构建redis的key信息,并将所述redis的key信息存储至额外增加的value信息中;
根据所述map的key信息和所述额外增加的value信息,构建所述key数据。
第三方面,本申请还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述基于influxdb的数据存储方法。
第四方面,本申请还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质包括计算机程序,所述计算机程序被所述处理器执行时实现第一方面所述基于influxdb的数据存储方法。
第五方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被所述处理器执行时实现第一方面所述基于influxdb的数据存储方法。
本申请提供的基于influxdb的数据存储方法及装置,在基于influxdb的数据存储过程中,将Influxdb数据库作为数据存储容器,通过Influxdb数据库的高吞吐量和压缩率高特性,提升了分表分库在进行聚合查询操作时的查询效率。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的基于influxdb的数据存储方法的流程图;
图2是本申请提供的基于influxdb的数据存储装置的结构图;
图3是本申请提供的电子设备的结构图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了描述上的简洁和直观,下文通过描述若干代表性的实施方式来对本申请的方案进行阐述。实施方式中大量的细节仅用于帮助理解本申请的方案。但是很明显,本申请的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本申请的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”。由于汉语的语言习惯,下文中没有特别指出一个成分的数量时,意味着该成分可以是一个也可以是多个,或可理解为至少一个。
进一步地,结合图1至图3描述本申请提供的基于influxdb的数据存储方法及装置。图1是本申请提供的基于influxdb的数据存储方法的流程图;图2是本申请提供的基于influxdb的数据存储装置的结构图;图3是本申请提供的电子设备的结构图。
本申请实施例提供了基于influxdb的数据存储方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些数据下,可以以不同于此处的顺序完成所示出或描述的步骤。
本申请实施例以电子设备作为执行主体进行举例,本申请实施例以数据存储系统作为电子设备的表现形式之一,并不进行限制。
参照图1,图1是本申请提供的基于influxdb的数据存储方法的流程图。本申请实施例提供的基于influxdb的数据存储方法包括:
步骤S10,根据读取到的配置信息结合设备配置表确定目标处理数据,并根据所述目标处理数据构建key数据。
Influxdb是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这类时序相关的数据,并且Influxdb自带多种函数,使得数据统计和实时分析变得十分方便。SCADA(Supervisory Control And Data Acquisition)系统,即数据采集与监视控制系统。SCADA系统是以计算机为基础的DCS与电力自动化监控系统;它应用领域很广,可以应用于电力、冶金、石油、化工、燃气、铁路等领域的数据采集与监视控制以及过程控制等诸多领域。
需要说明的是,本申请实施例需要先行安装好influxdb服务,在需要存储数据时,启动influxdb服务。进一步为了保护信息安全,可以根据安全要求,在启动influxdb服务时开启权限鉴定。本申请实施例中的数据存储系统通过maven依赖集成核心模块启动应用,非java应用可以独立部署当前应用,通过http协议完成操作。
进一步地,应用首先确定所需要采集的设备信息,并根据设备信息确定出设备配置表。接着,应用会进行配置信息的读取,读取的配置信息可以来源于mysql数据库,也可以是来源于其他类型数据库。再接着,应用根据根据读取到的配置信息结合设备配置表确定所要采集的目标处理数据。在确定所要采集的目标处理数据的过程中,为了方便处理,应用首先根据根据读取到的配置信息结合设备配置表确定出多个单条数据,并将多个单条数据以map结构进行封装,从而将多个单条数据进行统一封装,得到到集合列表对象,其中,map结构包括包括key信息和value信息,key信息为列名信息,value信息为各列中的具体值信息。进一步地,考虑到实际场景,一般会通过周期时间对集合列表对象进行过滤,得到所要采集的目标处理数据。
进一步地,应用将目标处理数据按照不同类型的数据存入到全局的缓存map对象中,其中,map对象中的key为当前配置的类型名称及周期信息的组合,map对象value为上述操作获取到的全部集合数据,不同的类型数据会根据类型分别存入进来,从而构建出目标处理数据的key数据,key数据将为后续业务定时任务处理做准备,具体如步骤S101至步骤S106所述。
进一步地,步骤S101至步骤S106的描述如下:
步骤S101,将所述配置信息按照所述设备配置表中的信息进行数据转换,得到各个待处理数据;
步骤S102,将各个所述待处理数据以map结构进行封装,得到数据集合对象,其中,所述map结构包括key信息和value信息,key信息为列名信息,value信息为各列中的具体值信息;
步骤S103,通过周期时间对所述数据集合对象进行过滤,得到所述目标处理数据;
步骤S104,根据所述目标处理数据中的类型名称和周期时间,构建map的key信息;
步骤S105,根据所述目标处理数据中的类型名称和标识号ID,构建redis的key信息,并将所述redis的key信息存储至额外增加的value信息中;
步骤S106,根据所述map的key信息和所述额外增加的value信息,构建所述key数据。
应用确定所需要采集的设备信息,并根据设备信息确定出设备配置表。在一实施例中,确定需要采集遥测配置表(analoginput)与遥信配置表(statusinput)中的设备信息,因此,确定出的遥测配置表和遥信配置表的设备配置表,在设备配置表中的信息包括但不限制于配置表表名、ID(Identity Document,身份证标识号)名、设备名称、量测类型和周期。在本实施例中,遥测配置表的设备配置表中的配置表表名为analoginput,ID为遥测配置表对应的ID,设备名称为name列以“_”分割,取第0个,量测类型为name列以“_”分割取第2个,周期为CYCLE。遥信配置表的设备配置表中的配置表表名为statusinput,ID为遥信配置表对应的ID,设备名称为name列以“_”分割,取第0个,量测类型为name列以“_”分割取第1个,周期为CYCLE,如表1,表1为遥测配置表和遥信配置表的设备配置表。
表1遥测配置表和遥信配置表的设备配置表
接着,应用会进行配置信息的读取,确定读取出的配置信息,并将读取出的配置信息按照设备配置表中的信息进行数据转换,得到各个待处理数据。在一实施例中,对于遥测配置表,读取到的配置信息为{ID:16;name:发电机A_1_A相电流;CYCLE:5},根据表1中的设备配置表进行数据转换,得到的待处理数据为{配置表表名:analoginput;ID:16;设备名称:发电机A;量测类型:A相电流,周期:5},具体如表2所示,表2为遥测配置表的待处理数据。
表2遥测配置表的待处理数据
对于遥信配置表,读取到的配置信息为{ID:3;name:发电机B_电压;CYCLE:5},根据表1中的设备配置表进行数据转换,得到的待处理数据为{配置表表名:statusinput;ID:3;设备名称:发电机B;量测类型:电压,周期:5},具体如表3所示,表3为遥信配置表的待处理数据。
表3遥信配置表的待处理数据
进一步地,将各个待处理数据以map结构进行封装,得到数据集合对象,其中,map结构包括key信息和value信息,key信息为列名信息,value信息为各列中的具体值信息。进一步地,通过周期时间对数据集合对象进行过滤,得到目标处理数据,具体为:剔除数据集合对象中没有配置周期时间的待处理数据,并保存数据集合对象中配置有周期时间的待处理数据,得到目标处理数据。
进一步地,根据目标处理数据构造出后续需要查询的redis中的key信息,当前业务需要根据构造出redis的key信息可以查询出redis中的具体数据信息,构建规则为:类型名称(配置表表名)&ID。在一实施例中,类型名称为analoginput,ID为1,那么redis的key信息为analoginput&1。由于存在上万条配置信息,将配置信息中的数据按照周期分类,相同周期相同表的信息存储到同一张表下。使用map作为数据结构对数据进行存储,map的key信息为:类型名称(配置表表名)@周期,value信息为集合列表对象,value信息为集合列表对象中存放的数据需要额外增加quartz_add存放redis的key信息。
因此可以理解为:根据目标处理数据中的类型名称和周期时间,构建map的key信息。进一步地,根据目标处理数据中的类型名称和标识号ID,构建redis的key信息,并将redis的key信息存储至额外增加的value信息中。进一步地,根据map的key信息和存储redis的key信息的额外增加的value信息,构建出key数据。
在一实施例中,目标处理数据1为{配置表表名:analoginput;ID:16;设备名称:发电机;量测类型:A相电流,周期:5};目标处理数据2为{配置表表名:analoginput;ID:17;设备名称:发电机;量测类型:A相电流,周期:5};目标处理数据3为{配置表表名:analoginput;ID:18;设备名称:发电机;量测类型:A相电流,周期:10}。根据目标处理数据1构建的map的key信息为analoginput@5,构建的redis的key信息为analoginput&16;根据目标处理数据2构建的map的key信息为analoginput@5,构建的redis的key信息为analoginput&17;根据目标处理数据3构建的map的key信息为analoginput@10,构建的redis的key信息为analoginput&18,最后构建出的key数据参照表4,表4为key数据。
表4key数据
本申请实施例通过目标处理数据中的类型名称、周期时间和标识号ID,构建key数据,为提升分表分库在进行聚合查询操作时的查询效率提供数据基础。
步骤S20,根据定时任务的方法参数确定所述key数据中被调度的key信息,并根据所述被调度的key信息确定业务数据;
步骤S30,将所述业务数据封装为InfluxdbHistoryDataVo对象,并将预设时长内所有的InfluxdbHistoryDataVo对象转换为influxdb数据格式存储至influxdb数据库中。
需要说明的是,不同业务类型、不同的周期将开启不同的定时任务,定时任务信息将记录当前对应的是哪种类型哪种周期的任务,业务上同一种类型的任务,但是周期不一样,实际上处理的业务逻辑是一样的,只是采集时间有差异,因此使用同一套业务逻辑较为合理。
本申请实施例使用Quartz作为业务处理的定时任务,由于涉及到固定周期任务的触发,采用简单调度,不使用表达式调度。Quartz的重要参数如下表5所示,表5为Quartz的重要参数。
表5Quartz的重要参数
进一步地,定时任务根据方法参数获取到当前调度的key信息,即key数据中被调度的map的key信息,被调度的map的key信息查询出本地缓存数据,获取到具体的数据列表信息,得到业务数据。业务方仅需要调用接口,将所装配好的数据以map对象的方式批量将业务数据提交过来,应用将业务数据封装为InfluxdbHistoryDataVo对象,封装好的InfluxdbHistoryDataVo对象将会放到有界队列中,其中,对于InfluxdbHistoryDataVo对象:InfluxdbHistoryDataVo对象定义如下表6,表6为InfluxdbHistoryDataVo对象定义表。
表6InfluxdbHistoryDataVo对象定义表
对于队列中的InfluxdbHistoryDataVo对象,将会有固定定时任务进行处理,间隔预设时长读取一次,且读取的InfluxdbHistoryDataVo对象的数量是设定好的,本申请实施例预设时长为5秒,数量为1000。
因此,可以理解为,对于队列中的InfluxdbHistoryDataVo对象,每5秒读取一次,每次取出1000条的InfluxdbHistoryDataVo对象,同时将取出的1000条InfluxdbHistoryDataVo对象转换为influxdb数据格式,并将转化为influxdb数据格式的所有InfluxdbHistoryDataVo对象存储至influxdb数据库中。
进一步地,如果需要将influxdb数据库改为其他数据库类型,完全可以交由底层进行格式转换,业务方无需再修改代码,只需要升级应用版本就可以,因此,本申请实施例数据的写入、查询通过接口方式进行调用,业务方与底层数据库完全隔离,并可重写接口方法对数据进行过滤,后续扩展支持mongodb、iotdb等数据库,减少业务对接的难度,提高对接效率。
进一步地,应用针对influxdb数据做了pipeline批量处理,对同一频率的采集数据,将对数据进行合并,减少定时任务的数据量,并利用队列、pipeline技术提高写入influxdb的速度,从而提升整体性能。同时,对写入性能进行监测,及时发现问题告知业务方。
本申请实施例提供的基于influxdb的数据存储方法,在基于influxdb的数据存储过程中,将Influxdb数据库作为数据存储容器,通过Influxdb数据库的高吞吐量和压缩率高特性,提升了分表分库在进行聚合查询操作时的查询效率。
进一步地,本申请实施例引入Influxdb数据库作为存储容器替换mysql数据库,在业务变化时,可以新增属性,无需调整表结构,并且在数据量较大时,单机就可以解决聚合查询效率较低、吞吐量下降、存储空间占用大的问题。另外对外仅提供公共接口,业务方无需通过Influxdb数据库的SDK写入,完全通过映射关系对接口进行调用,即使后续使用其他存储容器替换influxdb数据库,业务方将尽可能少修改甚至不修改代码,无感知的过渡到其他存储容器,并根据内部的队列,对数据进行批量提交,减少与数据库的交互次数,提高性能。
进一步地,本申请实施例通过引入Influxd数据库作为数据存储容器,解决了使用MySQL数据库或其他关系型数据库存储大量数据时性能下降的问题,并将存储容器相关逻辑完全封装,基于HTTP协议通信,不受平台和开发语言限制。业务方无需考虑influxdb数据库底层语法,只要按照业务规则传递数据就可以完成数据写入和查询操作,大大降低了迁入influxdb的门槛,提高开发效率。
进一步地,本申请实施例与Influxdb数据库非强耦合关系,可以通过引入其他数据库替换,在未来出现性能更加卓越、适用场景更加匹配的数据库后,完全可以在底层进行替换扩展,使得业务方无需修改代码,业务方使用JAVA技术体系时,可以通过第三方包方式引入,基于固定好的接口类进行方法覆写,自定义业务逻辑,其他语言可以将其作为服务独立部署,通过HTTP协议进行接口调用,完全不限定语言和接入方式,大大提高了产品的易用性和灵活性。
进一步地,还需要设置定时任务重新加载新的配置表,具体如步骤S40至步骤S50所述。
步骤S40,通过redis消息订阅方式监听队列historyUpdate,确定所述队列historyUpdate中的配置信息是否发生变更;
步骤S50,若所述队列historyUpdate中的配置信息发生了变更,则根据所述队列historyUpdate中配置表结合时间戳的消息重新加载新的配置表,以通过所述新的配置表完成数据重新采集。
需要说明的是,定时任务的加载需要充分考虑业务方的业务逻辑,非常依赖于表设计,当前业务上表中是缺乏时间戳字段的。
因此,通过redis的消息订阅实现,即应用通过redis消息订阅方式始终监听队列historyUpdate,确定队列historyUpdate中的配置信息是否发生变更。一旦业务方对队列historyUpdate中的配置信息进行里变更,即确定队列historyUpdate中的配置信息发生了变更,可以手动向队列historyUpdate中进行消息发送,消息格式为json串,消息定义为:配置表->时间戳在一实施例中,消息为statusinput->2022年时间戳,angoinputs->2022年6月23日时间戳。应用会实时监听队列historyUpdate,从而对变更的配置表重新加载,重新配置定时任务,完成数据重新采集操作。即可以理解为:若确定队列historyUpdate中的配置信息发生了变更,数据存储系统则根据队列historyUpdate中配置表结合时间戳(配置表->时间戳)的消息重新加载新的配置表,从而通过新的配置表完成数据重新采集。
本申请实施例通过redis消息订阅方式能够实时重新加载新的配置表,从而通过新的配置表实现数据重新采集。
进一步地,本申请提供的基于influxdb的数据存储装置与本申请提供的基于influxdb的数据存储方法互对应参照。
图2所示,图2是本申请提供的基于influxdb的数据存储装置的结构图,基于influxdb的数据存储装置包括:
构建模块201,用于根据读取到的配置信息结合设备配置表确定目标处理数据,并根据所述目标处理数据构建key数据;
确定模块202,用于根据定时任务的方法参数确定所述key数据中被调度的key信息,并根据所述被调度的key信息确定业务数据;
存储模块203,用于将所述业务数据封装为InfluxdbHistoryDataVo对象,并将预设时长内所有的InfluxdbHistoryDataVo对象转换为influxdb数据格式存储至influxdb数据库中。
进一步地,构建模块201还用于:
将所述配置信息按照所述设备配置表中的信息进行数据转换,得到各个待处理数据;
将各个所述待处理数据以map结构进行封装,得到数据集合对象,其中,所述map结构包括key信息和value信息,key信息为列名信息,value信息为各列中的具体值信息;
通过周期时间对所述数据集合对象进行过滤,得到所述目标处理数据。
进一步地,构建模块201还用于:
剔除所述数据集合对象中没有配置周期时间的待处理数据,并保存所述数据集合对象中配置有周期时间的待处理数据,得到所述目标处理数据。
进一步地,构建模块201还用于:
根据所述目标处理数据中的类型名称和周期时间,构建map的key信息;
根据所述目标处理数据中的类型名称和标识号ID,构建redis的key信息;
根据所述map的key信息和所述额外增加的value信息,构建所述key数据。
进一步地,基于influxdb的数据存储装置还包括:重新加载模块;重新加载模块用于:
通过redis消息订阅方式监听队列historyUpdate,确定所述队列historyUpdate中的配置信息是否发生变更;
若所述队列historyUpdate中的配置信息发生了变更,则根据所述队列historyUpdate中配置表结合时间戳的消息重新加载新的配置表,以通过所述新的配置表完成数据重新采集。
本申请提供的基于influxdb的数据存储装置的具体实施例与上述基于influxdb的数据存储方法各实施例基本相同,在此不作赘述。
图3示例了一种电子设备的实体结构图,如图3所示,电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行基于influxdb的数据存储方法,该方法包括:
根据读取到的配置信息结合设备配置表确定目标处理数据,并根据所述目标处理数据构建key数据;
根据定时任务的方法参数确定所述key数据中被调度的key信息,并根据所述被调度的key信息确定业务数据;
将所述业务数据封装为InfluxdbHistoryDataVo对象,并将预设时长内所有的InfluxdbHistoryDataVo对象转换为influxdb数据格式存储至influxdb数据库中。
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请还提供一种计算机程序产品,计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的基于influxdb的数据存储方法,该方法包括:
根据读取到的配置信息结合设备配置表确定目标处理数据,并根据所述目标处理数据构建key数据;
根据定时任务的方法参数确定所述key数据中被调度的key信息,并根据所述被调度的key信息确定业务数据;
将所述业务数据封装为InfluxdbHistoryDataVo对象,并将预设时长内所有的InfluxdbHistoryDataVo对象转换为influxdb数据格式存储至influxdb数据库中。
又一方面,本申请还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的基于influxdb的数据存储方法,该方法包括:
根据读取到的配置信息结合设备配置表确定目标处理数据,并根据所述目标处理数据构建key数据;
根据定时任务的方法参数确定所述key数据中被调度的key信息,并根据所述被调度的key信息确定业务数据;
将所述业务数据封装为InfluxdbHistoryDataVo对象,并将预设时长内所有的InfluxdbHistoryDataVo对象转换为influxdb数据格式存储至influxdb数据库中。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (7)
1.一种基于influxdb的数据存储方法,其特征在于,包括:
根据读取到的配置信息结合设备配置表确定目标处理数据,并根据所述目标处理数据构建key数据;
根据定时任务的方法参数确定所述key数据中被调度的key信息,并根据所述被调度的key信息确定业务数据;
将所述业务数据封装为InfluxdbHistoryDataVo对象,并将预设时长内所有的InfluxdbHistoryDataVo对象转换为influxdb数据格式存储至influxdb数据库中;
其中,所述根据读取到的配置信息结合设备配置表确定目标处理数据,包括:
将所述配置信息按照所述设备配置表中的信息进行数据转换,得到各个待处理数据;
将各个所述待处理数据以map结构进行封装,得到数据集合对象,其中,所述map结构包括key信息和value信息,key信息为列名信息,value信息为各列中的具体值信息;
通过周期时间对所述数据集合对象进行过滤,剔除所述数据集合对象中没有配置周期时间的待处理数据,并保存所述数据集合对象中配置有周期时间的待处理数据,得到所述目标处理数据。
2.根据权利要求1所述的基于influxdb的数据存储方法,其特征在于,所述根据所述目标处理数据构建key数据,包括:
根据所述目标处理数据中的类型名称和周期时间,构建map的key信息;
根据所述目标处理数据中的类型名称和标识号ID,构建redis的key信息,并将所述redis的key信息存储至额外增加的value信息中;
根据所述map的key信息和所述额外增加的value信息,构建所述key数据。
3.根据权利要求1至2任一项所述的基于influxdb的数据存储方法,其特征在于,所述将预设时长内所有的InfluxdbHistoryDataVo对象转换为influxdb数据格式存储至influxdb数据库中之后,还包括:
通过redis消息订阅方式监听队列historyUpdate,确定所述队列historyUpdate中的配置信息是否发生变更;
若所述队列historyUpdate中的配置信息发生了变更,则根据所述队列historyUpdate中配置表结合时间戳的消息重新加载新的配置表,以通过所述新的配置表完成数据重新采集。
4.一种基于influxdb的数据存储装置,其特征在于,包括:
构建模块,用于根据读取到的配置信息结合设备配置表确定目标处理数据,并根据所述目标处理数据构建key数据;
确定模块,用于根据定时任务的方法参数确定所述key数据中被调度的key信息,并根据所述被调度的key信息确定业务数据;
存储模块,用于将所述业务数据封装为InfluxdbHistoryDataVo对象,并将预设时长内所有的InfluxdbHistoryDataVo对象转换为influxdb数据格式存储至influxdb数据库中;
所述构建模块还用于:
将所述配置信息按照所述设备配置表中的信息进行数据转换,得到各个待处理数据;
将各个所述待处理数据以map结构进行封装,得到数据集合对象,其中,所述map结构包括key信息和value信息,key信息为列名信息,value信息为各列中的具体值信息;
通过周期时间对所述数据集合对象进行过滤,剔除所述数据集合对象中没有配置周期时间的待处理数据,并保存所述数据集合对象中配置有周期时间的待处理数据,得到所述目标处理数据。
5.根据权利要求4所述的基于influxdb的数据存储装置,其特征在于,所述构建模块还用于:
根据所述目标处理数据中的类型名称和周期时间,构建map的key信息;
根据所述目标处理数据中的类型名称和标识号ID,构建redis的key信息,并将所述redis的key信息存储至额外增加的value信息中;
根据所述map的key信息和所述额外增加的value信息,构建所述key数据。
6.一种电子设备,所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至3任一项所述的基于influxdb的数据存储方法。
7.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3任一项所述的基于influxdb的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210978002.2A CN115048390B (zh) | 2022-08-16 | 2022-08-16 | 基于influxdb的数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210978002.2A CN115048390B (zh) | 2022-08-16 | 2022-08-16 | 基于influxdb的数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115048390A CN115048390A (zh) | 2022-09-13 |
CN115048390B true CN115048390B (zh) | 2022-11-01 |
Family
ID=83167850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210978002.2A Active CN115048390B (zh) | 2022-08-16 | 2022-08-16 | 基于influxdb的数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115048390B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190928A (zh) * | 2019-12-24 | 2020-05-22 | 平安普惠企业管理有限公司 | 缓存处理方法、装置、计算机设备以及存储介质 |
CN113515499A (zh) * | 2021-03-25 | 2021-10-19 | 中国雄安集团数字城市科技有限公司 | 一种数据库服务方法及系统 |
CN114528049A (zh) * | 2022-02-18 | 2022-05-24 | 浪潮云信息技术股份公司 | 一种基于InfluxDB实现API调用信息统计的方法及系统 |
CN114817334A (zh) * | 2022-05-20 | 2022-07-29 | 杭州指令集智能科技有限公司 | 海量设备数据实时存储和查询系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11461356B2 (en) * | 2015-09-25 | 2022-10-04 | Mongodb, Inc. | Large scale unstructured database systems |
-
2022
- 2022-08-16 CN CN202210978002.2A patent/CN115048390B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190928A (zh) * | 2019-12-24 | 2020-05-22 | 平安普惠企业管理有限公司 | 缓存处理方法、装置、计算机设备以及存储介质 |
CN113515499A (zh) * | 2021-03-25 | 2021-10-19 | 中国雄安集团数字城市科技有限公司 | 一种数据库服务方法及系统 |
CN114528049A (zh) * | 2022-02-18 | 2022-05-24 | 浪潮云信息技术股份公司 | 一种基于InfluxDB实现API调用信息统计的方法及系统 |
CN114817334A (zh) * | 2022-05-20 | 2022-07-29 | 杭州指令集智能科技有限公司 | 海量设备数据实时存储和查询系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115048390A (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106067080B (zh) | 提供可配置工作流能力 | |
CN107103064B (zh) | 数据统计方法及装置 | |
CN109669976B (zh) | 基于etl的数据服务方法及设备 | |
CN112506498A (zh) | 一种智慧型可视化api编排方法、存储介质及电子设备 | |
CN110162524A (zh) | 配置数据的管理方法、装置、计算机设备及存储介质 | |
CN101640587A (zh) | 数据同步方法及装置 | |
CN109885310A (zh) | 一种降低手机游戏Shader模块内存占用的方法及装置 | |
CN110532044A (zh) | 一种大数据批处理方法、装置、电子设备及存储介质 | |
CN114254606A (zh) | 微服务框架模型 | |
CN112948099B (zh) | 任务发布流程方法、装置、计算机设备和存储介质 | |
CN115048390B (zh) | 基于influxdb的数据存储方法及装置 | |
WO2024078465A1 (zh) | 一种定时任务的处理方法、设备及存储介质 | |
CN114064213A (zh) | 基于Kubernets容器环境的快速编排服务方法及系统 | |
CN109542917B (zh) | 数据读取方法及计算机可读介质 | |
CN115242660B (zh) | 基于中心化的异构算力联邦系统及组网和执行方法 | |
CN116521363A (zh) | 一种代码打包方法、计算机设备及存储介质 | |
CN111104122A (zh) | 一种xml业务逻辑映射到java业务逻辑的方法 | |
US20210406915A1 (en) | Mobile wireless customer micro-care apparatus and method | |
CN109947435A (zh) | 服务器集群软件环境的部署方法及系统 | |
CN116010388A (zh) | 数据校验方法、数据采集服务端及数据校验系统 | |
CN113467782B (zh) | 一种确定业务流程的方法、装置及设备 | |
CN113111108A (zh) | 文件数据源入库解析接入方法 | |
US11916751B2 (en) | Process data change notification from a unified data repository | |
CN109586994A (zh) | 一种整机柜服务器老化测试监控方法及系统 | |
CN117873691A (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 |