全部時序數據就是基於時間而產生的一系列數據,在有時間座標的座標體系中,按照時間將這些數據點連成線,能夠揭示其趨勢與規律,若是對這些時序數據加以分析處理,能夠用以訓練機器學習模型,從而實現對將來的預測與預警。html
瞭解了時序數據,時序數據庫也就不難理解,就是用來存放時序數據的數據庫。由於時序數據具備實時性與體量大的特色,全部時序數據庫也就必須具有寫入快的特性,同時爲了方便查詢,也就必須具有持久化與多維度聚合查詢的特性。數據庫
數據點(point)
度量(measurement)
時間戳(timestamp)
度量字段(field)
標籤(tag)
在 Mac 系統中安裝 influxDB 仍是比較簡單的api
brew
來進行安裝brew install influxdb
複製代碼
ln -sfv /usr/local/opt/influxdb/*.plist ~/Library/LaunchAgents
複製代碼
更多關於
launchd
能夠查看 Mac OSX的開機啓動配置bash
咱們能夠經過 launchctl
來使用上面異步添加的定時任務來啓動機器學習
launchctl load load ~/Library/LaunchAgents/homebrew.mxcl.influxdb.plist
複製代碼
更多關於
lanuchctl
能夠查看 Mac中的定時任務利器:launchctl異步
也能夠直接讀取安裝好的配置文件來啓動學習
influxd -config /usr/local/etc/influxdb.conf
複製代碼
啓動後,influxdb 會監聽兩個端口:ui
8086 用來提供 client/server 的交互(經過 http api)spa
8088 用來提供備份和還原的 RPC 服務使用unix
啓動好 influxdb
後,咱們就能夠在終端經過 influx
命令來與數據庫來進行交互了 (默認鏈接到 8086 端口)
到目前爲止沒有尚未對 influxDB 有更深刻的瞭解,什麼 measurement
, 什麼 point
, 可是就算如此,咱們也能夠先玩起來,看看 influxdb 究竟是何物?
influx -precision rfc3339
複製代碼
-precision
用來自定 timestamp 的格式標準rfc3339
(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)
其實如今咱們就能夠按照 influxQL
語法,輸入查詢語句與 influx 數據存儲服務進行交互了。
CREATE DATABASE logdb
複製代碼
這裏咱們將建立一個名叫
logdb
的數據庫, 須要注意的是在 cli 中操做成功後並不會有什麼反饋,可是失敗了確定會有提示,用官方的描述來形容就是沒有消息就是好消息
。
SHOW DATABASES
複製代碼
結果以下圖
其中
logdb
就是咱們建立的數據庫,_internal
則是 influxDB 內部使用的數據庫。
influxDB 執行的每條語句都必須指定一個固定的數據庫做爲其執行的上下文,因此咱們要不就是在編寫每條語句的時候都顯示的選擇一個數據庫,要不就先選擇一個數據庫後續的語句都默認在這個數據庫上執行操做。
USE logdb
複製代碼
執行結果以下:
打臉老是來的那麼快,上面還說任何操做成功後都沒有反饋 ~~ 也許 USE 指令是一個特例吧 ~~
從前面的概念介紹咱們能夠了解到,influxdb 是經過時間序列(time series)
來組織存儲數據的。那這個時間序列到底長什麼樣呢?
Time series
其實就是一個概念,是存儲在 influxdb 中全部數據集合的概念,能夠包含 0 ~ ∞ 條數據,在 influxDB 中一條數據又叫一條 point
。
一條 point 表明了一個度量維度的一組散列樣本 measurement
, 因此 point = measurement + time
一個 measurement
由至少一個 key-value 對的 field
和 0 ~ ∞ 個 tag
組成。
field
表示都是 measurement
的一個具體的值。
tag
表示的是 measurement
的元數據,具體在查詢的時候的過濾條件。
因此 point 的組成語法以下
<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
複製代碼
舉個例子🌰
接下來就是開始實踐 ~
INSERT cpu,host=serviceA,region=us_west value=0.64
複製代碼
結果以下:
注意空格在 influxql 中是具備特殊意義的,因此,在書寫時
,
逗號後面是不能夠再包含空格的,上圖第一次執行插入的時候cpu,
後面有一個空格,因此插入失敗。
從上面的執行語句咱們能夠看到,咱們在執行的時候並無添加任什麼時候間戳,知識後數據庫是會爲咱們自動插入運行數據庫的系統的本地時間戳的。
SELECT "host", "region", "value" from cpu
複製代碼
執行結果以下:
OK! 大功告成 ~ 接下來咱們就能夠開始學習 influxQL 的語法,進行更多高級操做了 ~