influxDB学习

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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值