INFLUXDB-influxDB基礎知識

0. 簡介

InfluxDB是一個由InfluxData開發的開源時序型數據。它由Go寫成,着力於高性能地查詢與存儲時序型數據。InfluxDB被廣泛應用於存儲系統的監控數據,IoT行業的實時數據等場景。
本次用InfluxDB來存儲監控數據。
具體安裝教程見官網influxdb官網教程
influxdb中文教程
`

1. 基本概念

概念 MYSQL InfluxDB
數據庫 database database
table measurement
column field
主鍵 可以自增主鍵,不能重複 timestemp(唯一主鍵)
索引 一個或者多個列設置爲索引 tag(帶索引的,非必須)
  • influx 啓動
  • measurement 操作的表,假如不存在則直接創建一個
  • tag 僅僅支持字符類型
  • field 類型沒有限制
  • points 表中的一行數據,由時間戳 time,數據field,索引tags組成
  • Telegraf(數據收集)+InfluxDB(數據存儲)+Grafana(數據展示的圖形界面,將influxDB數據可視化)經常一起使用
  • retention policy:數據存儲策略 InfluxDB沒有刪除數據操作,規定數據的保留時間達到清除數據的目的,可以更改保留時間
  • tag sets: tags 在 InfluxDB 中會按照字典序排序,不管是 tagk 還是 tagv,只要不一致就分別屬於兩個 key,例如 host=server01,region=us-west 和 host=server02,region=us-west 就是兩個不同的 tag set。
  • Series Series 相當於是 InfluxDB 中一些數據的集合,在同一個 database 中,retention policy、measurement、tag sets 完全相同的數據同屬於一個 series,同一個 series 的數據在物理上會按照時間順序排列存儲在一起。
  • Shard 在 InfluxDB 中是一個比較重要的概念,它和 retention policy 相關聯。每一個存儲策略下會存在許多 shard,每一個 shard 存儲一個指定時間段內的數據,並且不重複,例如 7點-8點 的數據落入 shard0 中,8點-9點的數據則落入 shard1 中。每一個 shard 都對應一個底層的 tsm 存儲引擎,有獨立的 cache、wal、tsm file。

具體命令如下:

[eqs@eqx_test ~]$ influx
Connected to http://localhost:8086 version 1.2.4
InfluxDB shell version: 1.2.4
#查看所以數據庫
> show databases;
name: databases
name
----
_internal
sentinel_log
#使用特定的數據庫
> use sentinel_log;
Using database sentinel_log
#查看所以的表
> show measurements;
name: measurements
name
----
sentinelInfo
sentinel_app
#查詢一個表的一條數據,time爲主鍵,其中app和resource爲tag,其他的字段爲field
> select * from sentinelInfo limit 1
name: sentinelInfo
time                app                                                               async blockQps count exceptionQps gmtCreate     gmtModified   passQps resource   resourceCode rt successQps timestamp
----                ---                                                               ----- -------- ----- ------------ ---------     -----------   ------- --------   ------------ -- ---------- ---------
1585555946175000000 com.alibaba.csp.sentinel.demo.spring.webmvc.WebMvcDemoApplication true  0        1     0            1585555946171 1585555946171 1       GET:/hello 519655111    97 1          1585555943000
#查看錶中的tag(索引)字段
> show tag keys
name: sentinelInfo
tagKey
------
app
async
resource

name: sentinel_app
tagKey
------
async
#查看錶中field 的key值
> show field keys
name: sentinelInfo
fieldKey     fieldType
--------     ---------
blockQps     integer
count        integer
exceptionQps integer
gmtCreate    integer
gmtModified  integer
passQps      integer
resourceCode integer
rt           float
successQps   integer
timestamp    integer

name: sentinel_app
fieldKey fieldType
-------- ---------
app      string
resource string  
#查看所有的保存策略(可以有多個,一個標識爲default)
> show retention policies
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true
#查看指定數據庫的保存策略
#name: 名稱 
#duration: 保留時間, 0表示永久保存 
#shardGroupDuration: shardGroup的存儲時間,shardGroup是InfluxDB的一個基本儲存結構,應該大於這個時間的數據在查詢效率上應該有所降低。
#replicaN: 全稱是REPLICATION,副本個數 default: 是否是默認策略

> show retention policies on "sentinel_log"
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true
#更改默認保存策略的時間
> alter retention policy "autogen" on "sentinel_log" duration 30d default
#已經是最新的保存策略時間了
> show retention policies on "sentinel_log"
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 720h0m0s 168h0m0s           1        true
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章