1.InfluxDB介绍
InfluxDB用Go语言编写的一个开源分布式时序、事件和指标数据库,和传统是数据库相比有不少不同的地方。
类似的数据库有Elasticsearch、Graphite等。
特点
提供了Http接口的API来操作数据
提供了类似sql的数据库语句
2.InfluxDB相关名词术语介绍
其中,Point由时间戳(time)、数据(field)、标签(tags)组成。
还有一个重要的名词:series
所有在数据库中的数据,都需要通过图表来表示,series表示这个表里面的所有的数据可以在图标上画成几条线(注:线条的个数由tags排列组合计算出来),举例如下:
3.InfluxDB基本操作
创建数据库与表,和普通关系型数据库类似,如下:
#创建数据库
create database "db_name"
#显示所有的数据库
show databases
#删除数据库
drop database "db_name"
#使用数据库
use db_name
#显示该数据库中所有的表
show measurements
#创建表,直接在插入数据的时候指定表名
insert test,host=127.0.0.1,monitor_name=test count=1
#删除表
drop measurement "measurement_name"
增
1.通过命令行
insert weather,altitude=1000,area=北 temperature=11,humidity=-4
这样,我们就向数据库中添加了一条数据。
2.通过Http接口
InfluxDB提供了Http的API接口,所以我们也可以通过下面的方式来插入数据。
curl -i -XPOST 'http://localhost:8086/write?db=testDB' --data-binary 'weather,altitude=1000,area=北 temperature=11,humidity=-4'
Line Protocol格式
说明:influxDB存储数据采用的是Line Protocol格式。那么何谓Line Protoco格式?
Line Protocol格式:写入数据库的Point的固定格式,如:
weather,altitude=1000,area=北 temperature=11,humidity=-4
注:
weather : —>表名
altitude=1000,area=北 :—> tag
temperature=11,humidity=-4 :—>field
删与改
在InfluxDB中并没有提供数据的删除与修改方法。
不过我们可以通过数据保存策略(Retention Policies)来实现删除。
1.数据保存策略(Retention Policies)
influxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。
(1)查看当前数据库的Retention Policies
SHOW RETENTION POLICIES ON "testDB"
(2)创建新的Retention Policies
CREATE RETENTION POLICY "rp_name" ON "db_name" DURATION 30d REPLICATION 1 DEFAULT
其中:
rp_name:策略名
db_name:具体的数据库名
30d:保存30天,30天之前的数据将被删除
它具有各种时间参数,比如:h(小时),w(星期)
REPLICATION 1:副本个数,这里填1就可以了
DEFAULT 设为默认的策略
(3)修改Retention Policies
alter retention policy "rp_name" on "db_name" duration 30d default
(4)删除Retention Policies
drop retention policy "rp_name"
查
1.通过命令行
查询最新的三条数据
SELECT * FROM weather ORDER BY time DESC LIMIT 3
2.通过Http接口
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=testDB" --data-urlencode "q=SELECT * FROM weather ORDER BY time DESC LIMIT 3"
InfluxDB是支持类SQL语句的,具体的查询语法都差不多,可以直接写sql语句。例如: