1. influxDB简单介绍
influxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。
与传统数据库q相关和区别
| influxDB中的概念 | 传统数据库中的概念h |
|---|---|
| database | 数据库 |
| measurement | 数据库中的表 |
| point | 表中的一行数据 |
point 的数据结构由时间戳(time)、标签(tags)、数据(fields)三部分组成
| point 属性 | 含义 |
|---|---|
| time | 数据记录的时间 |
| tags | 各种有索引的属性(用于查询筛选数据) |
| fields | 各种value值(没有索引的属性,可以用各种函数取值) |
series
通过tags、fields、measurement共同组成,表示这张表里可以在图上画几条线。
2. influxDB基本操作
influxDB建库查询操作
./influx //进入influx命令行客户端
SHOW DATABASES; //查看influx所有数据库
CREAT DATABASE CPU; //创建CPU库
USE CPU; //进入CPU库
INSERT TEST,IP='122.20.141.168' USED_ALL=60; //在TEST 表插入数据 索引(IP) 值(总使用率),influxDB没有建表语句,在执行insert语句时,如果没有对应的表会自动表。
SELECT * FROM TEST WHERE IP='122.20.141.168' ; //在根据索引查询筛选数据时,索引对应的值一般是String类型,所以查询的时候需要加'',不然会查不到数据
influxDB保存策略
influxDB不能直接删除数据,但是可以通过保存策略(retention policy)间接删除,主要是通过给表中的数据设定一个固定的保存时间,超过保存时间的数据就可以自动删除了。
CREATE RETENTION POLICY CPU_24h ON CPU DURATION 24h REPLICATION 1 DEFAULT;
CREATE RETENTION POLICY CPU_31d ON CPU DURATION 31d REPLICATION 1 ;
DROP RETENTION POLICY CPU_24h ON CPU;//删除保存策略(删除保存策略的时候要注意了,!!当心你的数据,数据是跟保存策略相关的,如果删除了保存策略,使用这个保存策略的所有数据也会全部删除)
- CPU_24h :策略名;
- CPU : 库名;
- 24h/31d :保存24小时/31天,24小时之前/31天之前的数据自动删除,时间参数h(小时),d(天),w(周)
- REPLICATION : 1:副本个数,一般为1;
- DEFAULT : 默认保存策略,即如果不给表指定保存策略,就用默认的保存策略;
influxDB连续查询
DROP CONTINUOUS QUERY CPU_1H ON CPU //删除连续查询
SHOW CONTINUOUS QUERIES//查看所有连续查询
CREATE CONTINUOUS QUERY CPU_1H BEGIN SELECT MEAN(USED_ALL) AS USED_ALL INTO CPU.CPU_31d.TEST_1D FROM TEST GROUP BY IP,TIME(60m) tz('Asia/Shanghai') END;
//新建一个连续查询,从TEST表里获取60分钟内服务器CPU使用率的均值插入到TEST_1D表 ,并且表的保存策略是 CPU库中的CPU_31d
tz('Asia/Shanghai'):时区,写不写时区这个select语句返回的时间戳是相同的,但是当连续查询 时间参数是1d的时候,不指定时区插入的数据的时间戳是当天的8点 而我们需要的时间一般是当天0点