Influxdb介绍
influxdb influxdb官方文档
安装:
systemctl status influxd
systemctl start influxd
influxDB名词:
- database:数据库;
- measurement:数据库中的表;
- points:表里面的一行数据。
influxDB中独有的一些概念
- Point由时间戳(time)、数据(field)和标签(tags)组成。
- time:每条数据记录的时间,也是数据库自动生成的主索引;
- fields:各种记录的值;
- tags:各种有索引的属性。
- series:series是共同retention policy,measurement和tag set的集合。series表示这个表里面的所有的数据可以在图标上画成几条线(注:线条的个数由tags排列组合计算出来)
概念
- InfluxDB HTTP API 默认在8086端口运行
InfluxDB
查看InfluxDB版本
注意事项
- GROUP BY 参数只能是time和tag
- fill(200):表示如果这个时间段没有数据,以200填充,
- 聚合函数 只能是field
- 不支持if(),in()
- where语句可使用比较运算符或者正则表达式时:
- 使用比较运算符当比较对象是field且值是字符串类型时必须使用单引号
- 使用比较运算符当比较对象是tag时必须使用单引号
- 使用正则表达式时必须没有单引号
InfluxDB数据库操作
进入命令行influx command line interface (CLI)
1 2 3
| influx -precision rfc3339 #-precision:指定返回时间戳的格式/精度。 #rfc3339:告诉InfluxDB返回RFC3339格式的时间戳(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)。
|
查询时设置时区
1
| select * from <table-name> tz('Asia/Shanghai')
|
查询TAG_KEY
1
| SHOW TAG KEYS [from weather]
|
查询FIELD_KEY及其FIELD_TYPE
1
| SHOW FIELD KEYS [from <table-name>]
|
创建数据库
1
| CREATE DATABASE <db-name>
|
显示所有数据库
删除数据库
使用数据库
显示该数据库中所有的表(其中主索引始终是time)
查看某张表的series
1
| show series from table_name
|
InfluxDB数据操作
新建表(向数据库中插入数据。)
InfluxDB中没有显式的新建表的语句,只能通过insert数据的方式来建立新表。
1
| insert <measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
|
- 其中:
- weather: 表名
- altitude=1000,area=北:tag;
- temperature=11,humidity=-4:field(value)
- 例子:
1 2 3
| insert weather,altitude=1000,area=北 temperature=11,humidity=-4
insert weather,altitude=1000,area=北 temperature=11,humidity=-4 1567564802768578364
|
删除表
1
| drop measurement <table-name>
|
数据库数据保存策略(Retention Policies)
主要用于指定数据保留时间,超过指定时间,就删除这部分数据
查看当前数据库数据保存策略(Retention Policies)
1
| show retention policies on "db_name"
|
创建新的Retention Policies
1
| create retention policy "rp_name" on "db_name" duration 3w replication 1 default
|
其中:
- rp_name:策略名
- db_name:具体的数据库名
- 3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期)
- replication 1:副本个数,一般为1就可以了
- default:设置为默认策略
修改Retention Policies
1
| alter retention policy "rp_name" on "db_name" duration 30d default
|
删除Retention Policies
1
| drop retention policy "rp_name"
|
连续查询(Continous Queries)(CQ)
当数据超过保存策略里指定的时间之后就会被删除,但是这时候可能并不想数据被完全删掉,怎么办?
influxdb提供了联系查询,可以做数据统计采样。
这个一个在数据库中自动周期运行的InfluxQL的查询。Continuous query在select语句里需要一个函数,并且一定会包含一个GROUP BY time()的语法。
查看数据库的Continous Queries
创建新的Continous Queries
1 2 3 4 5
| #(关键字要大写) CREATE CONTINUOUS QUERY cq_name ON db_name BEGIN SELECT sum(log) INTO new_table_name FROM table_name GROUP BY time(5m) END
|
其中:
- cq_name:连续查询名字
- db_name:数据库名字
- sum(count):计算总和
- table_name:当前表名
- new_table_name:存新的数据的表名
- 30m:时间间隔为30分钟
删除Continous Queries
1
| drop CONTINUOUS query cp_name on db_name
|
用户管理
显示用户
创建用户
1
| create user "username" with password 'password'
|
创建管理员权限用户
1
| create user "username" with password 'password' with all privileges
|
删除用户