结构&概念
结构
- database 数据库
- measurement 类似数据库中的表
- point 类似数据库表中的一行记录
Point
Point由时间戳(time)、数据(field)和标签(tags)组成
- time:每条数据记录的时间,也是数据库自动生成的主索引
- fields:各种记录的值
- tags:tag以字符串字符串形式存放.
tag是可选的,可以用来做索引,一般用于where中限制条件
Series
Series 相当于influxDB中的一些数据集合. 在同一个数据库中,retention policy、measurement、tag sets完全相同的数据同属于一个series 同一个series的数据在物理上会按照时间顺序排列存储在一起
CRUD
类Sql形式
#创建数据库
create database "db_name"
#显示所有的数据库
show databases
#删除数据库
drop database "db_name"
#使用数据库
use db_name
#显示该数据库中所有的表
show measurements
#创建表,直接在插入数据的时候指定表名
insert test,host=127.0.0.1,monitor_name=test count=1
#删除表
drop measurement "measurement_name"
# 查询
select * from test order by time desc
scala-code
val influxDB = InfluxDBFactory.connect("http://192.168.18.151:8086", "root", "");
//程序方式写入influxDB,一般是大量的,请求密集的
//所以一般使用批量发送 + 异步
val batchPoints = BatchPoints
.database(dbName)
.tag("async", "true") //异步提交
.retentionPolicy("default") //使用默认存储策略
.consistency(InfluxDB.ConsistencyLevel.ALL)//强一致性级别,方便幂等
.build();
保存策略(Retention Policies)
influxDB是没有提供直接删除数据记录的方法.而是类似kafka的思路,保存数据直到个过期时间
这个控制就是数据保存策略,主要用于指定数据保留时间
# 查看当前数据库的数据保存策略
show retention policies on "db_name"
# 创建数据保存策略
# rp_name:策略名
# db_name:具体的数据库名
# 3w:保存3周,3周之前的数据将被删除.可选:h(小时),d(天),w(星期)
# replication 1:副本个数,一般为1
# default:设置为默认策略
create retention policy "rp_name" on "db_name" duration 3w replication 1 default
# 修改数据保存策略
alter retention policy "rp_name" on "db_name" duration 30d default
# 删除数据保存策略
drop retention policy "rp_name"
连续查询
当数据超过保存策略里指定的时间之后就会被删除
这里influxDB提供了一种策略可以有限度的继续保留这些应该过期删除的数据
这种策略就是连续查询,它的意思是可以计算并保留这些数据的统计信息,以便后来可以聚合统计
注意:
这种保留仅仅只是保留统计信息,原始数据已经被删除了.这意味着连续查询的保留,是不可恢复不可修改的
# 查看连续查询
show continuous queries
# 创建连续查询
# cq_name:连续查询名字
# db_name:数据库名字
# sum(count):计算总和
# table_name:当前表名
# new_table_name:存新的数据的表名
# 30m:时间间隔为30分钟
create continous query cq_name on db_name begin select sum(count) into new_table_name from table_name group by time(30m) end
# 删除连续查询
drop continous query cp_name on db_name
用户管理
可以直接在web界面操作
#显示用户
show users
#创建用户
create user "username" with password 'password'
#创建管理员权限用户
create user "username" with password 'password' with all privileges
#删除用户
drop user "username"
常用函数
聚合函数
- count
返回一个(field)字段中的非空值的数量 - DISTINCT
返回一个字段(field)的唯一值 - MEAN
返回一个字段(field)中的值的算术平均值(平均值).字段类型必须是长整型或float64 - MEDIAN
从单个字段(field)中的排序值返回中间值(中位数).字段值的类型必须是长整型或float64格式 - SPREAD
返回字段的最小值和最大值之间的差值.数据的类型必须是长整型或float64 - SUM
返回一个字段中的所有值的和。字段的类型必须是长整型或float64
选择函数
- TOP
返回一个字段中最大的N个值 - BOTTOM
返回一个字段中最小的N个值 - FIRST
返回一个字段中最老的取值 - LAST
返回一个字段中最新的取值 - MAX
返回一个字段中的最大值 - MIN
返回一个字段中的最小值 - PERCENTILE
作用:返回排序值排位为N的百分值
变换类函数
- DERIVATIVE 返回一个字段在一个series中的变化率 InfluxDB会计算按照时间进行排序的字段值之间的差异,并将这些结果转化为单位变化率 其中,单位可以指定,默认为1s
- DIFFERENCE 返回一个字段中连续的时间值之间的差异
- ELAPSED 返回一个字段在连续的时间间隔间的差异,间隔单位可选,默认为1纳秒
- MOVING_AVERAGE 返回一个连续字段值的移动平均值
- NON_NEGATIVE_DERIVATIVE 返回在一个series中的一个字段中值的变化的非负速率
- STDDEV 返回一个字段中的值的标准偏差
参考 https://www.linuxdaxue.com/influxdb-study-influxdb-transformations-funcitons.html