前言
对于传统关系型数据库,增删改查应该是必备且常用的功能,而influxdb常用的只有insert和select,没有提供update语法,虽然有delete可以删除数据(delete语法和mysql相似),但是需求不大。
influxdb 相对于对监控数据的记录,用于对数据图标的展示,influxdb 2.0 版本已经更新,但由于2.0 版本与1.+ 版本相差比较大。加上对java 等相对应配套还不完善,这里都是1.+版本。
安装使用
一、下载安装
# docker启动influxdb
docker run -d -p 8083:8083 -p 8086:8086 --name my_influxdb influxdb:1.7.9
# 进入docker 容器
docker exec -it my_influxdb /bin/bash
#进入指定目录,启动客户端
cd /usr/bin
./influx
二、使用前准备工作
#创建用户名密码
create user "root" with password 'newpwd' with all privileges;
#创建数据库
CREATE DATABASE mydb;
#更改当前数据库过期策略
ALTER RETENTION POLICY "autogen" ON mydb DURATION 14d REPLICATION 1 SHARD DURATION 1d DEFAULT ;
#查看当前用户
show users;
# 查看有哪些数据库
show databases;
# 进入数据库设置名称
use 数据库名称;
influxdb保留策略
- retention_policy_name: 策略名。
- duration: 数据保留时长。
- REPLICATION: 复制因子,单机版设置为1即可。
- SHARD DURATION:设置shardGroupDuration时长,表示每个shard group时间跨度时长。可不填,默认根据RP的duration计算。
- default: true为设置该RP为默认RP
> show users
user admin
---- -----
> create user "root" with password 'newpwd' with all privileges;
> show users;
user admin
---- -----
root true
> show databases;
name: databases
name
----
_internal
> CREATE DATABASE mydb;
> show databases;
> name: databases
name
----
_internal
mydb
> SHOW RETENTION POLICIES ON mydb;
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
> use mydb;
Using database mydb
> ALTER RETENTION POLICY "autogen" ON mydb DURATION 14d REPLICATION 1 SHARD DURATION 1d DEFAULT ;
> SHOW RETENTION POLICIES ON mydb;
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 336h0m0s 24h0m0s 1 true
Springboot 结合influxDb
一、引入依赖
<dependency>
<groupId>org.influxdb</groupId>
<artifactId>influxdb-java</artifactId>
<version>2.14</version>
</dependency>
二、设置配置文件
influx:
url: http://xx:8086
user: root
password: newpwd
database: mydb
三、代码配置
@Component
@Configuration
@Data
public class InfluxDBConfig implements InitializingBean {
@Value("${influx.user}")
private String userName;
@Value("${influx.password}")
private String password;
@Value("${influx.url}")
private String url;
//数据库
@Value("${influx.database}")
private String database;
//保留策略
private String retentionPolicy;
private InfluxDB influxDB;
public InfluxDBConfig(){
}
public InfluxDBConfig(String userName, String password, String url, String database) {
this.userName = userName;
this.password = password;
this.url = url;
this.database = database;
// autogen默认的数据保存策略
this