1 安装
使用的端口:
8086: C/S 架构下的 HTTP 通信
8088: 备份、恢复数据的 RPC 服务使用
yum install influxdb service influxdb start # 也可以 yum install influxdb systemctl start influxdb
2 入门指南
创建数据库
# 执行influx命令行 influx -precision rfc3339 # 退出 exit # 创建数据库 CREATE DATABASE mydb # 查看已存在的数据库 SHOW DATABASES # 使用数据库 USE mydb # 删除数据库 DROP DATABASE mydb
读写数据
InfluxDB保存的是时间序列数据,一条时序数据记录一个时间点上的多个数据点
measurement -> table 主键是时间戳
tag 带索引的列
field 不带索引的列
数据格式
<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
cpu,host=serverA,region=us_west value=0.64 payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1434067467100293230 stock,symbol=AAPL bid=127.46,ask=127.48 temperature,machine=unit42,type=assembly external=25,internal=37 1434067467000000000
插入单条数据
INSERT cpu,host=serverA,region=us_west value=0.64
查询数据
SELECT "host", "region", "value" FROM "cpu"
可以在查询语句后面添加 tz(‘Asia/Shanghai’) 指定返回指定时区的时间,例如:
select * from field1 where time >= '2023-09-20 08:00:00' and time <= '2023-09-20 08:01:00' order by time asc limit 10 tz('Asia/Shanghai')
3 概念介绍
3.1 关键概念
database | field key | field set |
---|---|---|
field value | measurement | point |
retention policy | series | tag key |
tag set | tag value | timestamp |
name: census,其中butterflies和honeybees是field key, location和scientist是tag key -———————————— time butterflies honeybees location scientist 2015-08-18T00:00:00Z 12 23 1 langstroth
database 数据库
measurement 表名 两个measurement之间不支持join操作
field 不带索引的列名
tag 创建索引的列名 (tag value 只能是字符串)
InfluxDB是时序数据库,数据表中每一条数据都包含了time,是一个Unix纳秒级的时间戳,表示UTC日期和时间(RFC3339)
每组field key和field value的集合组成了field set(近似于一条数据的field部分) butterflies=12, honeybees=23
tag set是不同的每组tag key和tag value的集合
field是必须的字段,tag不是必须的字段
单个measurement可以有不同的retention policy(保留策略),retention policy描述了InfluxDB保存数据的时间(DURATION)以及这些存储在集群中数据的副本数量(REPLICATION)。
默认的retention policy是autogen,duration是无线,复制因子(replication)是1.
series是共同retention policy,measurement和tag set的集合。例子如下:
任意series编号 | retention policy | measurement | tag set |
---|---|---|---|
series 1 | autogen | census | location = 1,scientist = langstroth |
series 2 | autogen | census | location = 2,scientist = langstroth |
series 3 | autogen | census | location = 1,scientist = perpetua |
series 4 | autogen | census | location = 2,scientist = perpetua |
point就是具有相同timestamp的相同series的field集合。(一行数据???一个point可以包含两条数据吗???)
3.2 与SQL的区别
InfluxDB是专门为时序数据设计和优化的,使用时间作为主键,读写操作多,修改和删除数据的需求少,因此更像是一个CR-ud。
3.3 一些设计思想
3.4 Schema设计
4 使用指南
4.1 写入数据
4.1.1 使用HTTP接口创建数据库
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"
# PostMan测试 POST方法 请求体 q=CREATE DATABASE mydb http://localhost:8086/query
4.1.2 使用HTTP接口写数据
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000' # influx默认使用19位纳秒级时间戳,使用其他单位的时间戳写数据需要用precision参数指定 curl -i -XPOST 'http://localhost:8086/write?db=mydb&precision=s' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.65 1434055562'
4.1.3 写入文件中的数据
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary @cpu_data.txt
文件里的数据格式需要满足InfluxDB那种行的语法,举例如下:
cpu_load_short,host=server02 value=0.67 cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257 cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257
说明:如果你的数据文件的数据点大于5000时,你必须把他们拆分到多个文件再写入InfluxDB。因为默认的HTTP的timeout的值为5秒,虽然5秒之后,InfluxDB仍然会试图把这批数据写进去,但是会有数据丢失的风险。
4.2 查询数据
4.2.1 使用HTTP接口查询数据
返回数据为json格式,查询结果在result列表中
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=db24" --data-urlencode "q=SELECT last(*) FROM field25 tz('Asia/Shanghai')"
- 本文固定链接: https://weiguangli.com/archives/699
- 转载请注明: lwg0452 于 Weiguang的博客 发表