全网最易懂,开源时序数据库influxDB,实际应用评测

2024-06-20 19:52

本文主要是介绍全网最易懂,开源时序数据库influxDB,实际应用评测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

        当今是信息爆炸的时代,在处理高频数据时,关系型数据库oracle/mysql明显表现出乏力,因秒级、毫秒级高频数据,分分钟可以把关系型数据库的表塞爆。在日常生活工作中,我们经常会遇到哪些需要高频分析的场景呢?本次我们借鉴时序数据库influxDB来引出高频数据分析的实践方案。

一、场景引导选型

        1、高频数据场景

        首先来说说我接触到的高频数据场景,因最近项目在做设备运行状态的分析,如车间24小时运行的反应釜、流量计、浓缩机、电表、水表等。我们需要收集对应运行数据,与工艺单关联进行产品生产质量的预判等。因某个因素的异常都会影响产品的最终质量,因此我们需要持续观测所有指标数据,并及时预警,处理异常。

        如果我们有1000台设备,需要观测的参数为200个,我们需收集1秒频次的数据,那我们一天数据量=1000*200*24小时*60分钟*60秒=17,2800,000,000(十七亿二千八百万)条数据。因此在高频数据场景下,传统关系型数据是不能满足应用需要的。

        在高频数据采集场景下,我们对数据库的要求是支持大量写入IO,存储占用空间少,并能及时完成运行异常预警。

        其实还有一个我们每个人都会接触的高频数据预警的场景,就是我们自己电脑运行的监控。

        我们怎么去评价一台电脑或者服务器运行正常呢,那就是CPU利用率不能超90%,内存占用不能超90%,磁盘SSD不能超80%等,当我们的CPU突然飙到了90%以上,并持续了几分钟,那就证明我们的电脑或者服务器是存在问题的,如果我们没收集这些性能指标数据,我们可能很难知道哪里出问题了,因此我们收集高频数据还有一个很重要的场景就是做系统的运维监控

        因此高频数据常用场景为:iot数据采集分析+设备运行监控

        2、高频数据适配数据库

       通过场景需求调研,时序数据库是最适配高频数据场景的数据库之一,时序数据库专门为时间标记的数据建立,对时间序列数据的存取有着天然的优势。在这类数据库中,数据通常会附带一个时间戳,优化了基于时间的查询和聚合操作。例如,在IoT(物联网)或金融行业中广泛应用的InfluxDB,能够快速处理和存储大量时序数据,并提供实时的分析功能。

 二、InfluxDB优缺点

        InfluxDB分为OSS社区版和 Enterprise企业版,OSS社区版是免费的,但是没开放集群功能,如果有集群需求可以选择Enterprise版本。但一般的应用场景OSS社区版就够用了,因此InfluxDB的优势还是在于高频的数据采集、预警,复杂的数据分析应用传统的关系型数据会是一个更好的方案。

        1、优点

        性能优化: 专为写入和查询时间序列数据而优化,处理大量写入操作快速,查询延迟低。

        易扩展: 支持水平扩展(sharding),可轻松处理增长的数据量。

        查询语言: 使用易于理解的SQL-like语法(InfluxQL)进行查询,方便用户熟悉。

        灵活性: 支持多种数据聚合和处理,如窗口函数和连续查询语言(CQL)。

        轻量级设计: 适合资源受限的环境,内存占用相对较低。

        2、缺点:

        复杂性: 对于非时间序列数据或复杂的数据模型,InfluxDB可能不够灵活,需要额外处理转换。

        存储限制: 对于非实时数据,长期存储可能会面临挑战,需要定期归档或清理。

        可视化工具: 相比于商业数据库,InfluxDB的可视化工具可能不够丰富或者定制化程度不高。

        社区支持与商业支持: 如果需要高级支持或定制化服务,大型企业可能更倾向于使用商业化的时间序列数据库产品。

        总的来说,时序数据库适合做高频数据采集、预警,如果是复杂数据分析就不是很合适。

三、influxDB应用分析

        时序数据库拥有高性能是因为他们摒弃了复杂的数据结构设计,如采用列式存储、不支持删除和高频的更新数据操作。正如时序数据库的经典介绍,时间不可倒流,数据只写不改

        1、结构优化

           如下图所示influxDB没有表的概念,数据采用列式存储的方式,通过_measurement(类似表名)+_field/_vaule(字段名及对应值:键值对)+_time(时间戳)组合时序数据库的“表”的必要元素。其中还有一个name为表索引,这个设计是为了提高数据查询效率和对应字段所属的分类。

        这也是时序数据库能支持高写入、高查询吞吐量的场景的原因。

        2、数据采集方式

        influxDB支持CSV文件格式数据采集和符合influxDB语法行

        同时支持目前绝大多数编程语言

        influxDB也有自己专门的数据采集工具 Telegraf

        因此,我们可以使用自己熟悉的编程语言来完成数据的采集工作,同样也可以使用时序数据库的数据采集插件,如 Telegraf,因此influxDB数据采集的生态还是很完善的。

        3、业务预警

        上面提到一些预警的场景,同样的在influxDB里面就自带了一套预警系统,如我们要预警我们的CPU利用率,设置阀值为90%,当超过90%时我们进行预警提醒,这就是一个常用的预警场景。

         如上图所示,我们通过设置定时预警任务来完成我们需要的预警操作。

四、总结

        总的来说,时序数据库能很好的解决高频数据采集、预警的问题,但是不适合做复杂的数据分析,因此我们在做数据库架构和调研时,可以根据自己的需求灵活选择。

这篇关于全网最易懂,开源时序数据库influxDB,实际应用评测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079099

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

MySQL批量替换数据库字符集的实用方法(附详细代码)

《MySQL批量替换数据库字符集的实用方法(附详细代码)》当需要修改数据库编码和字符集时,通常需要对其下属的所有表及表中所有字段进行修改,下面:本文主要介绍MySQL批量替换数据库字符集的实用方法... 目录前言为什么要批量修改字符集?整体脚本脚本逻辑解析1. 设置目标参数2. 生成修改表默认字符集的语句3

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定