简介
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
的语句, 插入数据时默认创建. -
删除
measurement
weather: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
查看
欢迎补充指正!