0、下载安装influxDB
①可官网下载可使用命令下载,在服务器中解压
②在/usr/bin目录中使用influxd启动服务,使用influx进入数据库
1、influxDB库操作
①show databases 查看所有库
②create database test 创建数据库test
③drop database test 删除数据库test
④use test 选中并使用test库
2、influxDB表操作
①show measurements 查看所有表
②drop measurement “test” 删除表test
3、插入操作
insert <retention policy> measurement,tagKey=tagValue fieldKey=fieldValue timestamp
① <retention policy>定义记录的保存时间
②measurement 待插入/创建的表名
③tagKey=tagValue 索引,与表名逗号隔开,与field空格隔开
④tagValue都是string类型,不需要引号,fieldValue若是string类型需要引号包裹
⑤timestamp 时间,可指定
4、查询操作
①查询所有
select * from "test" 表名需加双引号
②条件查询
使用where进行条件查询,字符串需要加单引号,对于为name的key在数据库中以'name'形式存储,并且查询时需要加双引号
例
select * from "user" where "'name'"='xiaoming'
结果
name: user
time 'name' age phone sex
---- ------ --- ----- ---
1678274951502109169 xiaoming 18 230 true
③只查询field
select *::field from "test"
④查询表里某些field和tag,不支持只查询tag
select age,"'name'" from "user"
name: user
time age 'name'
---- --- ------
1678274951502109169 18 xiaoming
1678275500458192632 18 daming
1678275509881022656 18 liuming
1678275518813389301 18 yaoming
1678275527418259526 18 liming
⑤同时查询多张表结果分开显示
⑥模糊匹配
select * from user where name=~/^abc/ 前缀匹配,类似于select * from user where name like 'abc%'
select * from user where name=~/abc$/ 后缀匹配,类似于select * from user where name like '%abc'
select * from user where name=~/abc/ 前后匹配,类似于select * from user where name like '%abc%'
# 同时匹配多个值
select * from user where name=~/^abc|def$/ 同时匹配以abc开头或def结尾的值
5、聚合查询操作
①聚合查询只能对field进行操作,不能对tag进行操作。但是可以通过对查询的结果进行tag查询操作,例:
select distinct("'name'") from (select * from "user")
name: user
time distinct
---- --------
0 xiaoming
0 daming
0 liuming
0 yaoming
0 liming
②count()函数,统计某个field字段的非空值数量
select count(age) from "user"
name: user
time count
---- -----
0 5
③distinct(),去除field中的非空字段
select distinct(age) from "user"
name: user
time distinct
---- --------
0 18
④mean(),求字段平均值
select mean(age) from "user"
name: user
time mean
---- ----
0 18.833333333333332
⑤median(),求中位数
select median(age) from "user"
name: user
time median
---- ------
0 18
⑥spread(),返回字段中最小值和最大值的差值
select spread(age) from "user"
name: user
time spread
---- ------
0 5
⑦sum(),求和
select sum(age) from "user"
name: user
time sum
---- ---
0 113
⑧bottom(age,n),返回字段中最小的n个值
select bottom(age,5) from "user"
name: user
time bottom
---- ------
1678274951502109169 18
1678275500458192632 18
1678275509881022656 18
1678275518813389301 18
1678275527418259526 18
⑨first(),返回字段中时间最早的值
select first(age) from "user"
name: user
time first
---- -----
1678274951502109169 18
⑩last(),返回字段中时间最晚取值
select last(age) from "user"
name: user
time last
---- ----
1678280185289295777 23
⑪min(),max()返回字段中最小、最大值
select max(age) from "user"
name: user
time max
---- ---
1678280185289295777 23
select min(age) from "user"
name: user
time min
---- ---
1678274951502109169 18
⑫分组聚合 group by() 例time()
6、分页查询
①limit n,查询前n条数据
②limit size offset N,每页size条数据,从第N条数据之后开始查
7、排序
order by desc降序 asc升序
8、保留策略
①查询数据库保留策略
show retention policies on "test"
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
# name:策略名称
# duration:数据保留时间,0表示永久保存
# replicaN:副本个数
# default:是否默认策略
②设置数据库保留策略
create retention policy "保留策略名称" on "数据库名称" duration "数据过期时间" replication "副本个数" shard duration "分片组的默认时长" default(设置该保留策略为默认保留策略)
③修改数据库保留策略
# 修改保留时间
alter retention policy "testTirld" on "test" duration 1000h
show retention policies
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
testUnique 10000h0m0s 168h0m0s 1 false
testSecond 10000h0m0s 168h0m0s 1 true
testTirld 1000h0m0s 168h0m0s 1 false
# 设置默认策略
alter retention policy "testTirld" on "test" default
show retention policies
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
testUnique 10000h0m0s 168h0m0s 1 false
testSecond 10000h0m0s 168h0m0s 1 false
testTirld 1000h0m0s 168h0m0s 1 true
# 删除策略
drop retention policy "testSecond" on "test"
show retention policies
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
testUnique 10000h0m0s 168h0m0s 1 false
testTirld 1000h0m0s 168h0m0s 1 true
9、权限配置
①创建超级管理员
# 用户名使用双引号包裹,密码使用单引号包裹
create user "管理员用户名" with password '管理员密码' with all privileges
②创建普通用户设置可读权限
create user "用户名" with password '密码'
grant read on "数据库" to "用户"
③influxDB启动时有一个默认的配置文件,对应一个不需要权限的库。要使用用户自定义配置时,应在/influx/etc/influxdb/influxdb.conf文件中进行配置,使用自定义配置文件对应一个新库,已保存的数据不会转移。
# 例,配置用户
在influxdb.conf文件中设置auth-enabled = false
使用命令./influxd -config=influx/etc/influxdb/influxdb.conf启动数据库服务
使用命令./influx进入数据库设置用户
配置完成后在influxdb.conf文件中设置auth-enabled = true
使用命令./influxd -config=influx/etc/influxdb/influxdb.conf启动数据库服务
使用命令./influx -username "用户名" -password '密码'启动数据库
10、influxDB配置到springboot中,虚拟机与宿主机连通
①pom文件中添加依赖
<dependency>
<groupId>org.influxdb</groupId>
<artifactId>influxdb-java</artifactId>
<version>2.23</version>
</dependency>
②使用influxDB工厂类获取连接
InfluxDB influxDB = InfluxDBFactory.connect(url,username,password);
//查看是否连通
Pong pong = influxDB.ping();
System.out.println(pong);
③使用influxdb语句
influxDB.query(new Query(command,database));
④关闭连接
influxDB.close();
⑤进行操作之前需要先选择一个数据库
influxDB.setDatabase();