InfluxDB
- 概念:InfluxDB是一种时序数据库:按时间顺序写入数据,并按照一定时间策略保留数据的数据库
1. Database: 数据库
含义
和关系数据库中的“数据库”的概念类似
操作
- 创建:
CREATE DATABASE myDb
- 删除:
DROP DATABASE myBb
- 查看:
SHOW DATABASES
2. Measurement: 测量
含义
和关系数据库中“表”的概念类似
Measurement包含的一些概念
- time:时间字段,必须,每个Measurement都有,也是InfluxBD保存、查询、清除历史数据的基础
- tag:标签,可选,加了索引,因此作为筛选条件查询较快。各个key不同value的组合叫做tag set
- tag key:string
- tag value:string
- field:字段,必须,未加索引。各个key不同value的组合叫做field set
- field key:string
- field value:string, float, integer, boolean
操作
- 创建:InfluxDB是schema-free的,无需预先定义,直接写入数据就可以创建测量。但是后面写入的数据要与之前的类型一致,否则报错
- 删除:
DROP MEASUREMENT myMeas
- 查看:
SHOW MEASUREMENTS
3. Retention policy: 数据保留策略
含义
表示数据保存的策略,包含了数据保留时长、数据时间跨度、数据备份数等参数。
InfluxDB在写数据的时候,是将一定时间的数据写在一个shard(也就是一个文件)中的。
根据写入时指定的Retention policy,会给shard文件设置保存数据的起始、终止时间范围,以及设定文件过期时间。
文件过期后即被删除。
一个Database可以设置多个Retention policy,其中必须有个一默认的。
在插入数据的时候可以指定写入的Retention policy名称: INSERT myRp.myMeas...否则是使用默认的。
Retention policy包含的一些概念
- duration:保留时长
- replication:备份数量
- shardGroupDuration:表示一个shard文件所存的数据的时间跨度
shardGroupDuration的取值:
终止时间 = 起始时间 + shardGroupDuration
文件过期时间 = 终止时间 + duration
操作
- 创建:
CREATE RETENTION POLICY myRp ON myDb DURATION 1d REPLICATION 1 DEFAULT
- 删除:
DROP RETENTION POLICY myRp ON myDb
- 查看:
SHOW RETENTION POLICIES ON myDb
4. 数据操作
- 写入:
INSERT myMeas, tag1=t1,tag2=t2 field1=value1, field2=value2 unix-nano-timestamp
- 查询:
SELECT * FROM myMeas WHERE xxx
- 删除:
DELETE FROM myMeas WHERE xxx
- 修改:同INSERT只要tag set和timestamp相同就会覆盖fields
注:InfluxBD的使用场景是时序写入与查询,尽量不要人为地去删除和修改数据
5. Continuous query(CQ): 连续查询
含义
是InfluxDB内置的一种机制,可以自动地、连续地对某一个MEASUREMENT中的数据进项查询和处理,并写入另一张表中
操作
- 创建:
CREATE CONTINUOUS QUERY myCq ON myDb
BEGIN
SELECT mean("value") INTO "myRp_min". "myMeas_min" FROM "myMeas" GROUP BY time(1m)
END
表示将在myDb上建立一个名为myCq的CQ,将myMeas中的数据按照1min维度聚合,求出每分钟的平均值,写入以myRp_min为Retention policy的MEASUREMENT: myMeas_min中。这个例子的作用是,比如写入InfluxDB的源数据是s级的,可以将其保留策略设为1天。而可以吧采样后的min级数据的保留策略设为1周。这样就可以实现用精度换存储空间的功能。
- 删除:
DROP CONTINUOUS QUERY myCq ON myDb
- 查看:
SHOW CONTINUOUS QUERIES