全网最易懂,开源时序数据库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%时我们进行预警提醒,这就是一个常用的预警场景。

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

四、总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/30786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[自动驾驶 SoC]-3 英伟达Orin

NVIDIA Jetson AGX OrinTM series (资料来源:nvidia-jetson-agx-orin-technical-brief.pdf) 1 整体介绍 1) Orin SoC结构 Orin SoC,如下图所示,由一个NVIDIA Ampere architecture GPU, Arm Cortex-A78AE CPU, 下一代深度学习核视觉处理加速…

华为 IPV6 配置

[r1]ipv6 必须先在设备上开启IPV6服务 [r1]interface GigabitEthernet 0/0/1 r1-GigabitEthernet0/0/1]ipv6 enable 再在接口上激活IPV6服务,才能配置ipv6地址 配置 ipv6 地址 [r1-GigabitEthernet0/0/1]ipv6 address 2001::1/64 [r1-GigabitEthernet0/0/…

企业防盗版,如何保障上网安全

信息化的发展企业日常办公越来越依赖互联网。然而,终端及普通PC在访问互联网过程中,会面临各种不容忽视的风险。这些风险包括: 员工主动故意的数据泄漏:员工可能故意泄露敏感信息。后台应用程序外发信息:一些应用程序…

代码覆盖率:衡量测试的有效性

在软件开发领域,确保代码的可靠性和稳健性至关重要。实现这一目标的关键实践之一是通过测试。但是,测试本身需要进行测量和评估,以确保其有效性。这就是代码覆盖率发挥作用的地方。代码覆盖率是一种指标,它量化了测试期间程序源代…

Qt正则表达式

需求:对输入的内容进行限制 只能以字母或下划线开始不能以数字开始 不能有中文 字母,数字,下划线混合使用 QRegExp rx("^[A-Za-z_][A-Za-z0-9_]*$");QRegExpValidator validator(rx);QLineEdit edit;edit.setValidator(&va…

荷兰花海元宇宙:探索虚拟世界的花卉之美

随着科技的不断发展,元宇宙已经成为了一个热门话题。在这个虚拟世界中,人们可以体验到许多现实生活中无法实现的事物。而荷兰花海元宇宙则是一个将现实世界中的花卉美景与虚拟世界相结合的创新项目,让人们在元宇宙中也能欣赏到荷兰花海的美丽…

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程 在遥感影像上人工制作分类数据集采用python+gdal库制作数据集挑选分类模型(RF、KNN、SVM、逻辑回归)选择随机森林模型建模分类遥感图像预测在遥感影像上人工制作分类数据集 1.新建shp文件 地理坐标系保持和影像…

本地大模型服务 Ollama:从安装到使用

文章目录 前言一、下载安装1.1 官网安装1.2 压缩包安装1.3 docker 安装二、命令行使用2.1 常用命令2.2 模型列表2.3 使用三、Open-WebUI3.1 安装3.2 修改语言3.3 使用参考前言 Ollama 是专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计的开源框架,它有如下几个特点…

如何应对 Android 面试官 -> MVVM 实战一个新闻客户端 (上)

前言 本章我们基于重构的方式进行一个 MVVM 的实战,我们将一个新闻列表的普通实现,一步一步的改造成 MVVM 的架构模式,一共分为上中下三个章节; 传统方式实现 首先咱们来看具体实现的最终效果,就是一个新闻列表页面&a…

connect-caption-and-trace——用于共同建模图像、文本和人类凝视轨迹预测

介绍 论文地址:https://arxiv.org/abs/2105.05964 源码地址:https://github.com/facebookresearch/connect-caption-and-trace 在过去,计算机视觉和自然语言处理领域的模型和算法的发展只有偶尔的重叠,但近年来,这两…

python-04

str.spilt() str.spilt(str" ", num string.count(str)); str:分隔符,默认为所有的空字符,包括空格、换行符"\n"、制表符"\t"等。 num:分隔次数 str "小时候 总有他们在耳边叮咛嘱咐 小…

案例分享:高科技企业产品管理部门设置和产品经理岗位设置

汉捷咨询曾遇到过一则有关产品管理部门建设和产品经理岗位设置的典型案例,本文中与大家分享,希望能为大家带来一些思考和启发。 A公司决策层最近为产品管理部门设置的事情颇为头痛。A公司是北京一家IC设计企业,多年来排名行业前3名&#xff…

opencv 打开图片后,cv::mat存入共享内存的代码,如何设置队列?

参考 https://blog.csdn.net/BrilliantAntonio/article/details/120606129 分析 执行Add操作时,随机产生一个大写英文字母模拟产品,放入缓冲区,同时调整队尾指针end.执行Remove操作时,将当前缓冲区资源清空,同时调整…

羊毛群的商业逻辑

前言 近几个月,同事们在用餐时偶尔会分享一些群分享的领券链接。 起初,这引起了我一些疑惑。经过一番了解,我发现这个看似充满优惠的社群,实则是一个展现商业智慧的舞台。 在这里,商家找到了一个有效的营销渠道&…

OpenCV--Mat属性和深浅拷贝

Mat属性和深浅拷贝 代码和笔记 代码和笔记 import cv2 import numpy as np""" Mat属性 dims:维度 rows:行数 cols:列数 depth:像素的位深 channels:通道数 RGB 3 size:矩阵大小 type:类型 data:存放数据Mat的深浅拷贝-在python中即ndarray的深浅拷贝 "&qu…

第四届人工智能、机器人和通信国际会议(ICAIRC 2024)

第四届人工智能、机器人和通信国际会议(ICAIRC 2024) 2024 4th International Conference on Artificial Intelligence, Robotics, and Communication 2024年12月27-29日 | 中国厦门 重要信息 会议官网:www.icairc.net 录用通知时间&…

▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch1 基本概念

PPT 截取有用信息。 课程网站做习题。总体 MOOC 过一遍 1、视频 学堂在线 习题 2、相应章节 过电子书 复习 3、总体 MOOC 过一遍 学堂在线 课程页面链接 中国大学MOOC 课程页面链接 B 站 视频链接 PPT和书籍下载网址: 【github链接】 onedrive链接: 【…

基于低代码开发平台的科技管理系统构建:简化运维,提升效率

随着科技的发展,企业对管理系统的需求日益增长。为了满足这一需求,本文介绍了一种基于低代码开发平台的科技管理系统构建方法。通过简化开发流程、提高运维效率,该系统能够帮助企业实现科技管理的高效运作。 引言 在当今信息化时代&#xff0…

Python4 操作MySQL数据库

通过python的pymysql库连接到本地的MySQL数据库,并执行查询操作来获取数据,然后打印出每一行的数据,这里以一个简单的学生表为例进行介绍。 1. MySQL的安装与数据准备 首先需要安装MySQL,在安装完成之后使用Navicat与本地数据库…

Docker 部署项目,真的太雅了~

大家好,我是南城余! 最近在找工作,正好手里有台服务器,之前项目上线用的宝塔部署项目上线,在公司实习了一年后,发现如今项目部署都使用的是容器化部署方案,也就是类似于和 Docker 一样的部署方案…