InfluxDB入門

Muscleape發表於2019-10-03

InfluxDB(時序資料庫),常用的一種使用場景:監控資料統計。每毫秒記錄一下電腦記憶體的使用情況,然後就可以根據統計的資料,利用圖形化介面(InfluxDB V1一般配合Grafana)製作記憶體使用情況的折線圖;

可以理解為按時間記錄一些資料(常用的監控資料、埋點統計資料等),然後製作圖表做統計;

目前(2019-09-29)建議使用InfluxDB V1 版本

1、什麼是InfluxDB

從文章開票的介紹裡能大概知道它的使用場景,下面介紹來自維基百科:

InfluxDB是一個由InfluxData開發的開源時序型資料。它由Go寫成,著力於高效能地查詢與儲存時序型資料。InfluxDB被廣泛應用於儲存系統的監控資料,IoT行業的實時資料等場景。

2、對常見關係型資料庫(MySQL)的基礎概念對比

概念MySQLInfluxDB
資料庫(同)databasedatabase
表(不同)tablemeasurement
列(不同)columntag(帶索引的,非必須)、field(不帶索引)、timestemp(唯一主鍵)
  • tag set:不同的每組tag key和tag value的集合;

  • field set:每組field key和field value的集合;

  • retention policy:資料儲存策略(預設策略為autogen)InfluxDB沒有刪除資料操作,規定資料的保留時間達到清除資料的目的;

  • series:共同retention policy,measurement和tag set的集合;

  • 示例資料如下: 其中census是measurement,butterflies和honeybees是field key,location和scientist是tag key

name: census
————————————
time                 butterflies     honeybees     location     scientist
2015-08-18T00:00:00Z      12             23           1         langstroth
2015-08-18T00:00:00Z      1              30           1         perpetua
2015-08-18T00:06:00Z      11             28           1         langstroth
2015-08-18T00:06:00Z      11             28           2         langstroth

示例中有三個tag set

3、注意點

  • tag 只能為字串型別
  • field 型別無限制
  • 不支援join
  • 支援連續查詢操作(彙總統計資料):CONTINUOUS QUERY
  • 配合Telegraf服務(Telegraf可以監控系統CPU、記憶體、網路等資料)
  • 配合Grafana服務(資料展現的影像介面,將influxdb中的資料視覺化)

4、常用InfluxQL

-- 檢視所有的資料庫
show databases;
-- 使用特定的資料庫
use database_name;
-- 檢視所有的measurement
show measurements;
-- 查詢10條資料
select * from measurement_name limit 10;
-- 資料中的時間欄位預設顯示的是一個納秒時間戳,改成可讀格式
precision rfc3339; -- 之後再查詢,時間就是rfc3339標準格式
-- 或可以在連線資料庫的時候,直接帶該引數
influx -precision rfc3339
-- 檢視一個measurement中所有的tag key 
show tag keys
-- 檢視一個measurement中所有的field key 
show field keys
-- 檢視一個measurement中所有的儲存策略(可以有多個,一個標識為default)
show retention policies;

5、InfluxDB Java Demo

GitHub Demo

相關文章