influxDB介绍

InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。
该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。

InfluxDB提供类SQL语法,如果熟悉SQL的话会非常容易上手。

InfluxDB关键概念:

database,measurement(类似sql中的table),field key(类似主键),timestamp,retention policy等

一、InfluxDB操作方式

InfluxDB提供三种操作方式:

1)客户端命令行方式(登录机器,输入influx即可登录)

2)HTTP API接口

3)各语言API库

新版本的influxDB已经关闭了web管理界面,官方称,以后的版本也会将web管理功能去掉。

二、InfluxDB数据库操作

如同MYSQL一样,InfluxDB提供多数据库支持,对数据库的操作也与MYSQL相同。

1. 查询所有的数据库

SHOW DATABASES;

2. 创建数据库

CREATE DATABASE "impression_monitor";

3. 查看表:

在InfluxDB当中,并没有表(table)这个概念,取而代之的是MEASUREMENTS,MEASUREMENTS的功能与传统数据库中的表一致,因此我们也可以将MEASUREMENTS称为InfluxDB中的表。

SHOW MEASUREMENTS;

4. 创建表:

InfluxDB中没有显式的新建表的语句,只能通过insert数据的方式来建立新表。如下所示:

insert disk_free,hostname=server01 value=442221834240i 1435362189575692182

其中 disk_free 就是表名,hostname是索引,value=xx是记录值,记录值可以有多个,最后是指定的时间

value默认的类型是float,如果加上i,写入的就是int。

5. 增加数据

增加数据采用insert的方式,要注意的是 InfluxDB的insert中,表名与数据之间用逗号(,)分隔,tag和field之间用 空格分隔,多个tag或者多个field之间用逗号(,)分隔。

insert disk_free,hostname=server01 value=442221834240i 1435362189575692182
insert impression,oid=5000001214305 value=2333i 1554283867

6. 查询数据

与sql查询基本相同:

select * from pay  order by time desc limit 2

7. 修改和删除数据

delete from "query" --删除表所有数据,则表就不存在了
drop MEASUREMENT "query"   --删除表(注意会把数据保留删除使用delete不会)
DELETE FROM cpu WHERE time < '2000-01-01T00:00:00Z'
DELETE WHERE time < '2000-01-01T00:00:00Z'
DROP DATABASE "testDB" --删除数据库
DROP RETENTION POLICY "dbbak" ON mydb --删除保留数据为dbbak数据
DROP SERIES from pay where tag_key='' --删除key中的tag

8. 数据保存策略(Retention Policies)

influxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。
查看当前数据库Retention Policies:

show retention policies on "db_name"

创建新的Retention Policies

create retention policy "rp_name" on "db_name" duration 3w replication 1 default

rp_name:策略名;
db_name:具体的数据库名;

3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期);

replication 1:副本个数,一般为1就可以了;
default:设置为默认策略

修改Retention Policies

alter retention policy "rp_name" on "db_name" duration 30d default

删除Retention Policies

drop retention policy "rp_name" on "db_name"

三. http api接口

InfluxDB API提供了较简单的方式用于数据库交互。该API使用了HTTP的方式,并以JSON格式进行返回。

Endpoint    描述
/ping    使用/ping用于检查InfluxDB的状态或者版本信息
/query    使用/query用于查询数据,管理数据库、rp、users等
/write    使用/write去写数据到数据库中

1.ping

/ping支持GET和HEAD,都可用于获取指定信息。
定义:

http://localhost:8086/ping

2. query

支持get和post请求。
查询所有的数据库

curl -G 'http://localhost:8086/query' --data-urlencode 'q=SHOW DATABASES'

创建数据库

curl -G 'http://localhost:8086/query' --data-urlencode 'q=CREATE DATABASE "impression_monitor"'

查询数据

curl -G 'http://localhost:8086/query?db=mydb' --data-urlencode 'q=SELECT * FROM "mymeas"'
curl -XPOST 'http://localhost:8086/query?db=mydb' --data-urlencode 'q=SELECT * INTO "newmeas" FROM "mymeas"'

3. wirte

write只支持POST的HTTP请求,使用该Endpoint可以写数据到已存在的数据库中。
参数说明:

参数    是否可选    描述
consistency=[any,one,quorum,all]    可选    设置point的写入一致性,默认是one.详细的请参考HERE
db={db_name}    必选    设置数据库名
precision=[h,m,s,ms,u,n]    可选    指定时间戳的精度,默认是ns
p={password}    可选    如果设置了认证,则需要用户密码
rp={rp_name}    可选    设置查询的rp。如果没有设置,则查询默认的rp
u={username}    可选    如果设置了认证,则需要用户密码

curl -i -XPOST "http://localhost:8086/write?db=mydb&precision=s" --data-binary 'mymeas,mytag=1 myfield=90 1463683075'

data-binary的格式为:

measurement,tags value timestamp,示例如下:

--data-binary 'mymeas,tag1=type,tag2=oid value=10 1463683075'

measurement与tags用,隔开,tags可以是多个‘key=value‘的键值对,用逗号隔开,value也是以键值对的形式表示,timestamp是时间戳。tag与value用空格隔开,value和timestamp用空格隔开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值