influxdb使用笔记
简介
influx的意思是涌入, 流入, 官网的介绍:
InfluxDB is a time series database designed to handle high write and query loads.
意思是说: influxdb是一个时间序列数据库, 用来应对频繁的写和查询场景.
安装
- 从这里下载相应版本, 然后安装.
- 利用docker安装
这里简单说下使用docker:
[root@localhost ~]# docker pull influxdb:1.7.6
[root@localhost ~]# docker run -d --name myinfluxdb -v /var/lib/influxdb:/var/lib/influxdb -p 8086:8086 influxdb:1.7.6
[root@localhost ~]# docker exec -it myinfluxdb bash # 进入容器内部
root@79884794a012:/# influx # 用influx客户端登录上去
Connected to http://localhost:8086 version 1.7.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query
>
> show databases
name: databases
name
----
_internal
具体细节可以看docker hub官网的介绍: https://hub.docker.com/_/influxdb
下面的操作是在上面运行的influxdb容器中进行的
相关概念
database: 数据库
measurement: 可理解为MySQL中的table
points: 可理解为MySQL中的一条记录(一行数据)
time: 数据插入时的时间(也可插入时自己指定时间,不指定influxdb会自己插入当前时间的纳秒值)
tag: 可理解为MySQL中建立了索引的列, 类型只能为字符串
tag set: 数据点中包含的tag, 格式为: <tag_key>=<tag_value>; 可以有多个, 以,分隔, 如: <tag_key>=<tag_value>,<tag_key>=<tag_value>
field: 可理解为MySQL中建立了没有建立索引的列, 类型可以为字符串, 浮点数等.
field set: 每个数据点中至少要有一个field, 格式与tag set一样
retention policy: 保留策略, 设置数据可以保留的时间(过期自动删除), 及副本数.
基本使用
常见命令:
-
查看现有数据库:
show databases; -
创建数据库testdb:
create database testdb; -
删除数据库testdb:
drop database testdb; -
选中数据库testdb(设置为当前默认):
use testdb; -
查看现有
measurement:show measurements; -
创建
measurement: influxdb没有创建measurement的语句, 插入数据时默认创建. -
删除
measurementweather:drop measurement weather; -
插入数据
插入数据有两种方式, 一种是在命令行操作, 一种是调用http接口. 这里说命令行操作方法:
influxdb写入数据用的是"行协议", 简单来说就是一行文本来代表数据点, 具体的这里不做介绍.如这里我们以记录天气为例子, 一条记录大概是这样:
insert weather,location=china-beijiing,season=summer temperature=32 1562494897156400203其中上面的:
weather为measurement, 也就是表名.
location=china-beijiing,season=summer为tag set, 有两个tag,tag key分别为location和season.
temperature=32为field set, 只有一个field key, 为temperature
1562494897156400203为time(纳秒值).其中
tag set和time都是可选的,time默认取数据插入时的时间戳(纳秒值), 如:insert weather temperature=33也可以. -
查询数据: 使用类似SQL中select的语法, 具体自行学习. 简单示例
> select * from weather; name: weather time location season temperature ---- -------- ------ ----------- 1562494897156400203 china-beijiing summer 32 1562509984038327209 33 -
查看所有
tag keys:show tag keys; -
查看所有
field keys:show field keys;
go语言客户端:
写这篇文章时, 我用的是
https://github.com/influxdata/influxdb1-client
注意事项
-
值为字符串类型的, 查询时要用单引号引起来, 如:
select * from weather where season='summer', 不加单引号查不出来结果 -
measurement名字为纯数字的, 查询时要用双引号引起来, 如:
> insert 1 fieldKey="fieldValue";
> select * from 1;
ERR: error parsing query: found 1, expected identifier at line 1, char 15
> select * from '1';
ERR: error parsing query: found 1, expected identifier at line 1, char 14
> select * from "1";
name: 1
time fieldKey
---- --------
1562510351532116680 fieldValue
扩展
导出某个measurement为特定格式:
influx -username YourUsername \
-password YourPassword \
-format 'json' \
-database 'test_db' \
-execute 'select * from test_measurement;' \
| python -m json.tool \
> test_measurement.json
influx完整具体选项可通过influx -h查看
欢迎补充指正!
更多推荐


所有评论(0)