【2024】InfluxDB v2 介绍和安装使用(1)

【2024】InfluxDB v2 介绍和安装使用(1)时序数据库全称为时间序列数据库

大家好,欢迎来到IT知识分享网。

一、介绍

1、时序数据库介绍

时序数据库全称为时间序列数据库。时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。时序数据的兴起还是榜上了物联网的大风。物联网(Internet of Things,简称IOT)是指通过各种信息传感器实时采集任何需要管理设备的信息,并进行管理。物联网的基础数据具有数据量大、结构单一、时间属性强、查询简单等特点,传统的关系型数据库在面对物联网数据时,显得应对发力,基本上属于功能过剩但性能不足。目前火热的新能源汽车的车联网也一样需要使用到时序数据库。

特点:

  • 时间戳索引:时序数据库通常对时间戳进行优化索引,以便快速查询。
  • 高并发写入:能够处理高并发写入操作,适用于实时数据收集。
  • 数据压缩:通常采用高效的数据压缩技术,减少存储空间需求。
  • 数据聚合:支持数据聚合操作,如求平均值、最大值、最小值等。
  • 保留策略:可以设置数据的保留期限,自动清理旧数据

常见的时序数据库

  • InfluxDB:一个开源的时序数据库,适用于存储和查询大量时间序列数据。流行度很高,支持Go语言,社区活跃度高,也是我们接下来要介绍使用的。是当下使用使用量最多的时序数据库
  • TDengine: 是一款国内涛思数据推出的开源、高性能、分布式、支持 SQL 的时序数据库,其时序数据库核心代码包括集群功能全部开源,同时 TDengine 还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少研发和运维的复杂度。在几年时间就可以使用量进入前十。
  • Prometheus:一个开源监控系统,自带时序数据库功能。
  • TimescaleDB:一个基于PostgreSQL的时序数据库插件,将关系数据库的功能与时间序列数据库的性能相结合。

时序库受欢迎度排名

排名取自于https://db-engines.com
在这里插入图片描述

2、InfluxDB介绍

InfluxDB是一种由InfluxData公司开发的开源时序数据库(Time-Series Database,TSDB),专门设计用来处理高并发的时序数据写入和查询。它非常适合用于存储涉及大量时间戳的数据,例如服务器指标、传感器数据、实时分析报告、应用程序性能监控等。

InfluxDB目前市面上使用的有两个主要的版本为1.x和2.x的还有在进行维护,InfluxDB在2.x版本的时候进行了重大的更新。

  • InfluxDB 1.x
    InfluxDB 1.x 是 InfluxDB 的第一个主要版本,于 2013 年发布。它使用 Go 语言编写,支持多种数据类型,包括整数、浮点数、字符串和布尔值。InfluxDB 1.x 支持 SQL 查询语言,用户可以使用 SQL 语句查询和分析数据。
  • InfluxDB 2.0
    InfluxDB 2.0 是 InfluxDB 的第二个主要版本,于 2019 年发布。具有更好的性能、安全性和可靠性。InfluxDB 2.0 引入了一个新的时序数据模型,支持更灵活的数据结构和更高效的数据存储。InfluxDB 2.0 支持 Flux 查询语言,Flux 是一种专门为时序数据设计的查询语言,提供了更强大的数据分析能力。

InfluxDB 1.x 和 2.0 的主要区别

以下是 InfluxDB 1.x 和 2.0 的主要区别:

  • 编程语言:InfluxDB 1.x 使用 Go 语言编写,而 InfluxDB 2.0 使用 Rust 语言编写。
  • 数据模型:InfluxDB 1.x 使用一个基于列的数据模型,而 InfluxDB 2.0 引入了一个新的时序数据模型,支持更灵活的数据结构和更高效的数据存储。
  • 查询语言:InfluxDB 1.x 支持 SQL 查询语言,而 InfluxDB 2.0 支持 Flux 查询语言。
  • 性能:InfluxDB 2.0 具有更好的性能、安全性和可靠性。
  • 存储:InfluxDB 2.0 支持更高效的数据存储和压缩。
  • 集成:InfluxDB 2.0 支持更多的集成,包括 Grafana、Telegraf、Kapacitor 等。
  • 监控和告警:InfluxDB 2.0 提供了监控和告警功能,能够实时监控数据并发送告警通知。

总的来说,InfluxDB 2.0 是一个更强大的、更灵活的、更高效的时间序列数据库,与 InfluxDB 1.x 相比具有许多新的特性和改进。

InfluxDB行协议

measurement、tags、field、time。前面三个字段就可以定义一个序列
在这里插入图片描述
除了上面四种在lnfluxDB中还有其他的一些含义。

  • database 代表含义:数据库
  • bucket 代表含义:存储桶
  • measurement 代表含义:数据库中的表
  • point 代表含义:表里面的一行数据,由下面的类型组成
    • 时间戳(time):每个数据记录时间,是数据库中的主索引(会自动生成)
    • 数据(field):各种记录值(没有索引的属性)
    • 标签(tags):各种有索引的属性
  • series 代表含义:所有在数据库中的数据,

二、docker安装 InfluxDB v2

  • 下拉镜像
# 从官方镜像仓库拉取 docker pull influxdb:2.7.6 # 由于docker的官方仓库被禁了,上面的可能拉取不下来,可以到我的阿里镜像仓库拉取 docker pull registry.cn-hangzhou.aliyuncs.com/zhengfp_images/influxdb:2.7.6 
  • 创建容器
    docker run -d -p 8083:8083 -p 8086:8086 -v /home/influxdb/data:/var/lib/influxdb2 --name influxdb2.7.6 influxdb:2.7.6
    • 把镜像换为你下拉下来的镜像名
    • 把-v 映射的地址也换为自己的本地存储的目录实际地址,避免容器销毁后数据就没了
  • 创建成功后访问web端UI地址
    http://localhost:8086/signin
  1. 点击中间的按钮
    在这里插入图片描述
  2. 设置个人的基础登陆信息和Bucket
    在这里插入图片描述
  3. 进入该页面代表执行成功,创建好了自己的web UI的登陆账号和第一个bucket存储桶,会给你一串连接凭证,需要自己保存起来,用于后续连接访问使用。
    在这里插入图片描述
  4. 点击ADVANCED就进入主页面了。后面在介绍Web UI中常用到的地方
    在这里插入图片描述

三. Web UI常用功能介绍以及使用

1、页面介绍

  • Load Data功能页
    【2024】InfluxDB v2 介绍和安装使用(1)
  • 查询页
    在这里插入图片描述
  • flux语言写法
    在这里插入图片描述

2、功能使用

2.1、创建bucket

  1. 点击load data页面的buckets
    在这里插入图片描述
  2. 创建在这里插入图片描述

2.2、添加数据

  1. 选择sources,因为是测试,直接通过line写测试数据,实际开发中,肯定是不会去手动写入的。
    在这里插入图片描述
  2. 编写对应行协议数据,格式不能错,遵照👆写的格式

    people,name=tony age=12
    people,name=xiaohong age=13
    people,name=xiaobai age=14
    people,name=xiaohei age=15
    people,name=xiaohua age=12

在这里插入图片描述
点击wrlte data则会提示保存成功

2.3、Data Explorer 查询数据

  1. 使用puery实现查询
  • 下面的query部分是查询条件
    • from:是选择要查询的bucket存储桶
    • filter:是过滤筛选的条件
    • _field:是通过什么字段进行筛选,筛选_field为age的数据
    • view Raw Data:开启表示数据的方式展现,不开启,表示图表的方式展现
    • Past:表示查询什么时间段段数据,如同,是Past 6h则表示查询最近6小时的数据
    • SCRIPT EDITO:表示切换为flux语言编写的方式执行查询。
    • SUBMIT:开始查询

在这里插入图片描述

- 筛选`name`字段包括 tony1和xiaobai1的数据 

在这里插入图片描述

  1. 使用FLUX实现查询
    下面是使用flux实现的简单查询,flux语言使用起来也非常简单易懂,基本上会sql的人上手速度都会比较快,下面简单解释一下

FLUX在InfluxDB使用

  • from(bucket: "test01"):表示查询test01存储桶中的数据
  • |> range(start: -6h):表示查询的时间范围,为最近六小时的数据
  • |> filter(fn: (r) => r["name"] == "tony1" or r["name"] == "xiaohong1" or r["name"] == "xiaohei"):表示查询name字段等tony1、xiaohong1、xiaohei三个值的数据,在使用上也是使用的和sql一样,使用or表示或者。

FLUX在InfluxDB中使用查询,基本上是由三部分组成指定存储桶,指定查询时间,然后就是使用filter进行过滤了(包括使用一些函数),后续会详细介绍FLUX的使用,这就不过多介绍了

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/156691.html

(0)
上一篇 2025-02-10 18:45
下一篇 2025-02-10 19:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信