簡介
1、什么是InfluxDB
InfluxDB(時序數據庫),常用的一種使用場景:監控數據統計。每毫秒記錄一下電腦內存的使用情況,然后就可以根據統計的數據,利用圖形化界面(InfluxDB V1一般配合Grafana)制作內存使用情況的折線圖;
可以理解為按時間記錄一些數據(常用的監控數據、埋點統計數據等),然后制作圖表做統計;
2、與傳統數據庫相關區別
和傳統數據庫相比,influxdb在相關概念上有一定不同,具體如下
influxDB中的名詞 | 傳統數據庫中的概念 | MySQL |
---|---|---|
database | 數據庫 | database |
measurement | 數據庫中的表 | table |
point | 表中的一行數據 | column |
point的數據結構由時間戳(time)、標簽(tags)、數據(fields)三部分組成,具體含義如下:
point 屬性 含義
time 數據記錄的時間,是主索引(自動生成)
tags 各種有索引的屬性
fields 各種value值(沒有索引的屬性)
tag set:不同的每組tag key和tag value的集合;
field set:每組field key和field value的集合;
retention policy:數據存儲策略(默認策略為autogen)InfluxDB沒有刪除數據操作,規定數據的保留時間達到清除數據的目的;
series:共同retention policy,measurement和tag set的集合;series(一般由:retention policy, measurement, tag set就共同組成),其含義如下:所有在數據庫中的數據,都需要通過圖表來展示,而這個series表示這個表里面的數據,可以在圖表上畫成幾條線:通過tags排列組合算出來。
安裝
https://jasper-zhang1.gitbooks.io/influxdb/content/Introduction/installation.html
使用
連接
# 啟動influxdb服務
sudo service influxdb start
# 進入后台
influx -precision rfc3339
influx #無指定用戶名密碼的話,會報錯
influx -username 'brewin' -password '123456'
influx -username 'brewin' -password ''
influx -username 'brewin'
influxdb增加auth配置如下,在[http]這個底下添加,並重啟influxdb(systemctl restart influxdb)
auth-enabled = true
用戶
influx --help #查看influx客戶端的使用幫助
influx #默認連接到localhost:8086
show users #查看所有用戶,默認沒有
CREATE USER "brewin" WITH PASSWORD '123456' WITH ALL PRIVILEGES #創brewin用戶,密碼123456,管理員權限
數據保留時間設置
# 默認有個策略0s表示永久保存
show retention policies on jmintor;
# 設置一個策略保留30天
create retention policy rp_jmintor on jmintor duration 30d replication 1 default;
#修改上個策略為90天
alter retention policy rp_jmintor on jmintor duration 90d replication 1 default;
#刪除策略
drop retention policy rp_jmintor on jmintor;
database
-- 查看所有的數據庫
show databases;
-- 使用特定的數據庫
use database_name;
--創建數據庫
create database jmintor;
--刪除數據庫
drop database jmintor;
measurement
類似表
-- 查看所有的measurement
show measurements;
-- 插入數據,如果沒有這個表會自動創建,無需創建measurement,可直接插入數據。
insert cpuinfo,item1=brewin_cpu.idle,item2=itemtest2 value=90
-- 查詢所有cpuinfo表中的數據
select * from cpuinfo;
-- 刪除表
drop measurement cpuinfo;
delete from cpuinfo where time=1531992939634316937;
-- 查詢10條數據
select * from measurement_name limit 10;
-- 數據中的時間字段默認顯示的是一個納秒時間戳,改成可讀格式
precision rfc3339; -- 之后再查詢,時間就是rfc3339標准格式
-- 或可以在連接數據庫的時候,直接帶該參數
influx -precision rfc3339
point
-- 查看一個measurement中所有的tag key
show tag keys
-- 查看一個measurement中所有的field key
show field keys
內置函數
-- 查詢非空值的數量
seltct count(value) from cpuinfo
-- 查詢唯一值
select distinct(value) from cpuinfo;
-- 查詢平均值
select mean(value) from cpuinfo;
-- 查詢總和
select sum(value) from cpuinfo
-- 查詢最大的N個值
select top(value,3) from cpuinfo
-- 查詢最小的N個值
select bottom(value,3) from cpuinfo