(一)认识InfluxDB

news2024/11/23 10:14:26

以下内容来自 尚硅谷,写这一系列的文章,主要是为了方便后续自己的查看,不用带着个PDF找来找去的,太麻烦!

第 1 章 认识InfluxDB

1.1 InfluxDB的使用场景

  • InfluxDB是一种时序数据库,时序数据库通常被用在监控场景,比如运维和 IOT(物联网)领域。这类数据库旨在存储时序数据并实时处理它们。

  • 比如,我们可以写一个程序将服务器上CPU的使用情况每隔 10 秒钟向InfluxDB中写入一条数据。接着,我们写一个查询语句,查询过去 30 秒CPU的平均使用情况,然后让这个查询语句也每隔 10 秒钟执行一次。最终,我们配置一条报警规则,如果查询语句的执行结果>xxx,就立刻触发报警。

  • 上述就是一个指标监控的场景,在IOT领域中,也有大量的指标需要我们监控。比如,机械设备的轴承震动频率,农田的湿度温度等等。

1.2 为什么不用关系型数据库

1.2.1 写入性能

  • 关系型数据库也是支持时间戳的,也能够基于时间戳进行查询。但是,从我们的使用场景出发,需要注意数据库的写入性能。通常,关系型数据库会采用B+树数据结构,在数据写入时,有可能会触发叶裂变,从而产生了对磁盘的随机读写,降低写入速度。

  • 当前市面上的时序数据库通常都是采用LSM Tree的变种,顺序写磁盘来增强数据的写入能力。网上有不少关于性能测试的文章,大家可以自己去参考学习,通常时序数据库都会保证在单点每秒数十万的写入能力

1.2.2 数据价值

  • 我们之前说,时序数据库一般用于指标监控场景。这个场景的数据有一个非常明显的特点就是冷热差别明显。通常,指标监控只会使用近期一段时间的数据,比如我只查询某个设备最近 10 分钟的记录, 10 分钟前的数据我就不再用了。那么这 10 分钟前的数据,对 我们来说就是冷数据,应该被压缩放到磁盘里去来节省空间。而热数据因为经常要用,数据库就应该让它留在内存里,等待查询。而市面上的时序数据库大都有类似的设计。

1.2.3 时间不可倒流,数据只写不改

  • 时序数据是描述一个实体在不同时间所处的不同状态。
    在这里插入图片描述

  • 就像是我们打开任务管理器,查看CPU的使用情况。我发现CPU占用率太高了,于是杀死了一个进程,但 10 秒前的数据不会因为我关闭进程再发生改变了。

  • 这是时序数据的一大特点。与之相应,时序数据库基本上是插入操作较多,而且还没有什么更新需求。

1.3 1.X版本的TICK技术栈与 2 .X版本的进一步融合

  • 根据上文的介绍,我们首先可以知道时序数据一般用在监控场景。大体上,数据的应用可以分为 4 步走。

    • ( 1 )数据采集
    • ( 2 )存储
    • ( 3 )查询(包括聚合操作)
    • ( 4 )报警
  • 这样一看,只给一个数据库其实只能完成数据的存储和查询功能,上游的采集和下游的报警都需要自己来实现。因此InfluxData在InfluxDB1.X的时候推出了TICK生态来推出start全套的解决方案。

  • TICK 4 个字母分别对应 4 个组件。
    ⚫ T : Telegraf - 数据采集组件,收集&发送数据到InfluxDB。
    ⚫ I : InfluxDB - 存储数据&发送数据到Chronograf。
    ⚫ C : Chronograf - 总的用户界面,起到总的管理功能。
    ⚫ K : Kapacitor - 后台处理报警信息。

  • 到了 2 .x,TICK进一步融合,ICK的功能全部融入了InfluxDB,仅需安装InfluxDB就能得到一个管理页面,而且附带了定时任务和报警功能。

1.4 influxDB版本比较与选型

1.4.1 版本特性比较

  • 2020 年InfluxDB推出了 2 .0的正式版。 2 .x同 1 .x相比,底层引擎原理相差不大,但会涉及一些概念的转变(例如db/rp换成了org/bucket)。另外,对于TICK生态来说, 1 .x需要自己配置各个组件。2.x则是更加方便集成,有很棒的管理页面。

  • 另外,在查询语言方面,1.x是使用InfluxQL进行查询,它的风格近似SQL。2.x推出了FLUX查询语言,可以使用函数与管道符,是一种更符合时序数据特性的更具表现力的查询语言。

1.4.2 选型(本文档使用InfluxDB 2. 4)

  • 市场现状:目前企业里面用 InfluxDB 1.X 和 InfluxDB 2.X 都有人在用,数量上InfluxDB1.X 占多一些。

  • 易用性:在开发中,InfluxDB 1.X集成生态会比较麻烦,InfluxDB 2.X相对来说更加便利。

  • 性能:InfluxDB 1.X和 2 .X的内核原理基本一致,性能上差距不大。

  • 集群:InfluxDB从 0 .11版本开始,就闭源了集群功能的代码。也就是说,你只能免费试用InfluxDB的单节点版(开源),想要集群等功能就需要购买企业版。不过就InfluxDB 1.8来说,有开源项目根据 0. 11 的代码思路提供了InfluxDB开源的集群方案。也
    有开源项目给InfluxDB 2. 3 增加了反向代理功能,让我们可以横向拓展InfluxDB的服务能
    力。项目参考地址:

项目地址
InfluxDB Cluster对应 1.8.10:https://github.com/chengshiwen/influxdb-cluster
InfluxDB Proxy对应 1.2 - 1.8:https://github.com/chengshiwen/influx-proxy
InfluxDB Proxy对应 2.3:https://github.com/chengshiwen/influx-proxy/tree/influxdb-v
  • FLUX语言支持:自InfluxDB 1.7 和 InfluxDB 2.0以来,InfluxDB推出了一门独立的新的查询语言FLUX,而且作为一个独立的项目来运作。InfluxData公司希望FLUX语言能够成为一个像SQL一样的通用标准,而不仅仅是查询InfluxDB的特定语言。而且不管是你是选择InfluxDB 1.X 还是 2.X 最终都会接触到FLUX。不过2.X 对FLUX的支持性要更好一些。

  • InfluxDB产品概况:

    • InfluxDB 1.8 在小版本上还在更新,主要是修复一些BUG,不再添加新特性
    • InfluxDB 2. 4 这是InfluxDB较新的版本,仍然在增加新的特性。
    • InfluxDB 企业版 1.9 需要购买,相比开源版,它有集群功能。
    • InfluxDB Cloud,免部署,跑在InfluxData公司的云服务器上,你可以使用客户端来操作。功能上对应开源版的 2. 4
  • 2 .x 与 1.x的主要区别:两个版本的内核原理基本一致,性能上的差别不大。差别主要是在,权限管理方式不同, 2 .x TICK的集成性比 1 .x好, 1 .x中的database到了 2 .x中变成了bucket等。

  • 最终,本文选择 Influx 2. 4 来进行写作,学会使用 InfluxDB 2. 4 后应当也能知道 InfluxDB 1.7及以上版本的开发。写作过程遇到与InfluxDB1.8不同的地方,会做一些提醒。

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

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

相关文章

MySQL笔记——表的修改查询相关的命令操作

系列文章目录 MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明 文章目录 系列文章目录 一 表的修改操作 1.1 修改表的名字 1.2 添加一列score 1.3 修改列名称 1.4 修改新增列的…

containerd

Containerd是一个开源的容器运行时(Container Runtime),它是Kubernetes和Docker等容器平台的基础组件之一。它旨在提供容器的生命周期管理和基本的运行时功能,使得容器的创建、启动、停止、删除等操作变得简单且高效。 Container…

Apipost使用教程

Apipost是一款集API调试、生成文档、Mock、测试于一体的协同工具。单个工具可以同时满足接口测试、生成/分享文档、Mock、流程测试等功能,还有超实用的多人多角色间实时协作的功能。将前端、后端、测试三种角色串联起来,从而实现工作流程无缝衔接、提高研…

C#中简单Winform程序编译(待验证)

1、文件架构 2、MainWindow.xaml <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.…

vue中的异步请求Axios(个人学习笔记五)

目录 友情提醒第一章、传统的jQuery方式获取数据1.1&#xff09;后端controller层代码1.2&#xff09;传统的jQuery获取数据1.3&#xff09;使用vue对象和jQuery获取异步数据 第二章、使用Axios获取数据2.1&#xff09;axios简介2.2&#xff09;axios两种使用方式2.3&#xff0…

WEB:easyphp

背景知识 php弱类型比较 MD5碰撞 题目 进行代码审计 <?php highlight_file(__FILE__); $key1 0;//值赋值 $key2 0;$a $_GET[a];//get方法获取值 $b $_GET[b];if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){ //a的值需要大于 60000…

Seaborn中怎样绘制双变量分布图?

两个变量的二元分布可视化也很有用。在 Seaborn中最简单的方法是使用 jointplot()函数&#xff0c;该函数可以创建一个多面板图形&#xff0c;比如散点图、二维直方图、核密度估计等&#xff0c;以显示两个变量之间的双变量关系及每个变量在单坐标轴上的单变量分布。 jointplo…

Linux--Block group

Block Group&#xff1a;ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相 同的结构组成。政府管理各区的例子 超级块&#xff08;Super Block&#xff09;&#xff1a;存放文件系统本身的结构信息。记录的信息主要有&#xff1a;bolck 和 inod…

App测试流程及测试点

1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间&#xff0c;一般测试时间为两三周&#xff08;即15个工作日&#xff09;&#xff0c;根据项目情况以及版本质量可适当缩短或延长测试时间。正式测试前先向主管确认项目排期。 1.3测试资源…

测试覆盖率 JVM 字节码测试运用 - 远程调试、测试覆盖、影子数据库

目录 前言&#xff1a; 简介 基础使用方式介绍 工具特性 前言&#xff1a; 在软件开发中&#xff0c;测试覆盖率是一个非常重要的指标&#xff0c;它表示代码中所有的测试用例是否都已经被覆盖到。JVM 字节码测试是一种比较新的测试方法&#xff0c;它可以对 JVM 字节码进…

【雕爷学编程】Arduino动手做(86)---4*4位 WS2812 全彩模块4

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

【Postman】Postman接口测试进阶用法详解:断言、全局与环境变量、关联、批量执行用例、读取外部文件实现参数化

文章目录 一、Postman断言1、断言位置2、Postman的常用断言3、操作实例 二、全局变量与环境变量1、二者区分2、设置全局变量3、设置环境变量 三、Postman接口关联1、概念2、操作步骤 四、批量执行测试用例1、操作步骤2、查看结果 五、读取外部文件实现参数化1、使用场景2、操作…

云服务器远程nacos服务注册失败/不健康Client not connected, current status:STARTING

文章目录 Nacos报错docker安装不用 docker安装 Nacos报错 docker安装 使用docker在云服务器安装Nacos之后出现Client not connected, current status:STARTING 使用docker 安装之后需要添加映射端口 docker run -e JAVA_OPTS"-Xms256m -Xmx256m"-e MODEstandalone…

7.24 作业

1.自己封装vector template<typename T> class Myverctor {T* first;T* last;T* end; public:Myverctor():first(NULL),last(NULL),end(NULL){}Myverctor(int num,T data):first(new T[num]){last end first num;for(int i 0;i<num;i) first[i] data;}Myverctor…

【ROS2 Foxy】Rviz2 不支持可视化压缩图像消息

这里我通过订阅话题&#xff0c;压缩图像消息是存在的&#xff1a; ros2 topic echo /hk_camera/rgb/compressed从官方代码库的 issue 中了解到&#xff0c;在 Foxy 版本的 Rviz2 是不支持压缩图像消息的可视化的&#xff0c;现在 Foxy 也已经停止维护了&#xff0c;以后更不太…

redis 1

shell 1&#xff1a;安装1. 源码安装&#xff08;CENTOS&#xff09; 2.999:可能会出现得问题1. 编译出错 1&#xff1a;安装 1. 源码安装&#xff08;CENTOS&#xff09; 官方下载源码包 wget https://download.redis.io/redis-stable.tar.gz # 安装依赖 yum install gcc解压…

node 版本管理器 nvm

文章目录 一、卸载node二、nvm 下载三、nvm 安装四、检测环境变量是否一致五、nvm常见问题 一、卸载node 打开cmd命令行窗口&#xff0c;输入npm cache clean --force 回车执行 打开控制面板&#xff0c;在控制面板中把Node.js卸载 二、nvm 下载 nvm全英文也叫node.js ve…

7.25 Qt

制作一个登陆界面 login.pro文件 QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on …

cocosCreator 之 ScrollView

版本&#xff1a;3.4.0 参考&#xff1a;ScrollView组件 简介 ScrollView组件作为滚动容器来使用&#xff0c;它的实现通过ScrollBar组件来展示内容的位置和Mask组件显示指定区域&#xff0c;来保证有限的区域内显示更多的内容。 它的构成部分&#xff1a; ScrollBar滚动条相…

3、Winform表单控件

在学习了布局控件之后,我们就该学习表单控件了。 程序的本质=输入+处理+输出。在Winform程序角度,这里的输入输出就可以用我们的表单控件来实现。 表单控件大致可分为两类,选项控件和文本控件。 文本控件 文本控件常用的有两种,分别是TextBox和RichTextBox TextBox T…