InfluxDB 2.1教程
与1.x版本对比
- 相比V1 移除了database 和 RP,增加了bucket。
V2具有以下几个概念:
timestamp、field key、field value、field set、tag key、tag value、tag set、measurement、series、point、bucket、bucket schema、organization
-
新增的概念:
bucket:所有 InfluxDB 数据都存储在一个存储桶中。一个桶结合了数据库的概念和存储周期(时间每个数据点仍然存在持续时间)。一个桶属于一个组织
bucket schema:具有明确的schema-type的存储桶需要为每个度量指定显式架构。测量包含标签、字段和时间戳。显式模式限制了可以写入该度量的数据的形状。
organization:InfluxDB组织是一组用户的工作区。所有仪表板、任务、存储桶和用户都属于一个组织。
安装 启动 InfluxDB
安装
不同版本教都在
启动INfluxDB
- 以Windows为例, 打开 PowerShell
> cd -Path 'C:\Program Files\InfluxData\influxdb' 进入influxDB所在的位置
> ./influxd 启动influxd
-
通过UI界面设置InfluxDB(也可选择cli)
-
启动后访问 http://localhost:8086
-
设置用户名和密码,需记住,后续登录需要使用
-
至此,启动InfluxDB启动成功
操作InfluxDB(写/查)
操作InfluxDB写有三种方式
- InfluxDB v2 API
- cli(command line interface) 命令行工具
- client libraries(开发语言操作)
API操作InfluxDB
InfluxDB提供了丰富的API接口,通过Postman执行可操作InfluxDB
访问 http://localhost:8086/docs 可查看API文档
通过Token认证
使用API需要认证,V2版本的只能通过Token进行认证,Token可从UI页面查看

通过API写数据
写数据到bucket
需要的信息有 organization bucket API token InfluxDB URL
Write Data
curl --request POST \
"http://localhost:8086/api/v2/write?org=YOUR_ORG&bucket=YOUR_BUCKET&precision=ns" \
--header "Authorization: Token YOUR_API_TOKEN" \
--header "Content-Type: text/plain; charset=utf-8" \
--header "Accept: application/json" \
--data-binary '
airSensors,sensor_id=TLM0201 temperature=73.97038159354763,humidity=35.23103248356096,co=0.48445310567793615 1630424257000000000
airSensors,sensor_id=TLM0202 temperature=75.30007505999716,humidity=35.651929918691714,co=0.5141876544505826 1630424257000000000
'
可通过Postman根据官方文档写入数据

UI操作InfluxDB
Write Data
通过UI页面写入数据有两种格式,一种是CSV Data,一种是Line Protocol,按照页面介绍的语法格式上传文件,可向对应的bucket写入数据

client libraries
在UI界面提供有操作InfluxDB Demo
Flux 数据模型

Stream of tables(数据表流)
一个或多个表的集合, 查询数据源返回的结果是一个数据表流
Table
被组键分开的列的集合
Column
列是相同的基本类型的值的集合
Row
行是列的值关联的集合
Group key
一个组键定义了一个表中包含哪一列和指定的列.
在一个组键列中,一个表中所有行包含相同的值
数据表流中的每个表都有一个唯一的组键
总结: InfluxDB的查询会以数据表流(几张表)的方式呈现,各表之间分割的依据是Group Key,即tag
Flux语法
Flux is InfluxData’s functional data scripting language designed for querying, analyzing, and acting on data.
Flux 是为InfluxDB设计的 查询 |分析 的脚本语言
from(bucket: "example-bucket")
|> range(start: -1d)
|> filter(fn: (r) => r._measurement == "example-measurement")
|> mean()
|> yield(name: "_results")
-
from()检索数据的数据源,也就是bucket -
Pipe-forward operator (
|>) 管道操作符,将输出送至接下来的语句进行处理 -
range(),filter(), 都是基于列名过滤数据,range()是通过time字段过滤,filter通过列名过滤|> range(start: -1h) 开始时间 ---> 现在 |> range(start: -1h, stop: -10m) 使用相对时间进行设置 |> range(start: 2021-01-01T00:00:00Z, stop: 2021-01-01T12:00:00Z) 使用绝对时间进行设置 -
mean()从返回的数据源中计算平均值 -
yield()向用户生成结果。 -
group(): modify group keys -
window(): modify_startand_stopvalues of rows to group data by time -
pivot(): pivot column values into rows -
drop(): drop specific columns -
keep(): keep specific columns and drop all others
重构表结构
改变输出的数据表流中表的区分方式
使用group() 可将多个表聚合成一张表
