一、简介
InfluxDB是一个用于存储和分析时间序列数据的开源数据库。
主要特性有:
1、内置HTTP接口,使用方便,直接调用接口实现对数据库的读写
2、数据可以打标记,查让查询可以很灵活
3、类SQL的查询语句
4、安装管理很简单,并且读写数据很高效
5、能够实时查询,数据在写入时被索引后就能够被立即查出
timestamp:time存着时间戳,这个时间戳以RFC3339格式展示了与特定数据相关联的UTC日期和时间。
field set:每组field key和field value的集合,如butterflies = 3, honeybees = 28
field key/value:在InfluxDB中不能没有field,field没有索引。
tag set:不同的每组tag key和tag value的集合,如location = 1, scientist = langstroth
tag key/value:在InfluxDB中可以没有tag,tag是索引起来的。
measurement: 是一个容器,包含了列time,field和tag。概念上类似表。
retention policy:单个measurement可以有不同的retention policy。measurement默认会有一个autogen的保留策略,autogen中的数据永不删除且备份数replication为1(只有一份数据,在集群中起作用)。
格式:
data, a=123,b=456 c=“qwe”,d=19 1602829997
其中data类似数据库的表名,a和b为tag,c和d为fied,最后为时间戳
二、本地安装
https://portal.influxdata.com/downloads/
下载对应操作系统的版本解压即可,
三、可视化软件
InfluxDBStudio-0.2.0
下载地址:
https://github.com/CymaticLabs/InfluxDBStudio/releases/tag/v0.2.0-beta.1
解压运行即可
四、http API接口实现数据库的读写
以下只演示了python代码请求接口,其他语言皆可
- 查询(get请求)
import requests
a = requests.get("http://127.0.01:8086/query?db=my&q=SELECT * FROM data")
#其中db为数据库名,q为查询语句
print(a.text)
- 写入(post请求)
import requests
headers = {'Content-Type': 'text/plain'} #设置请求头为文本
datas = "cpu_load_short3,host=server05,region=us-west value=1.99 1602812432"
# cpu_load_short3为表名(没有即自动创建),host、region为tag,value为fied 最后为时间戳(需与请求里的precision格式一致)
r = requests.post("http://127.0.0.1:8086/write?db=my&precision=s", data=datas, headers=headers)
#db为数据库名,precison为时间戳精度(rfc3339, h, m, s, ms, u or ns.)
print(r) #响应为<Response [204]>表示写入成功
总结
注意,如果使用命令行的curl去访问接口如:
# 查看数据库
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=show databases"
# 插入一条数据(数据最后字段为手动指定时间戳)
curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'
请把所有的单引号(‘)换成双引号(“)如:
# 查看数据库
curl -G "http://localhost:8086/query?pretty=true" --data-urlencode "db=mydb" --data-urlencode "q=show databases"
才能成功,别问我为什么,我也想知道为什么!!