InfluxDB 入手第一集

什麼是時序數據庫

時序數據

全部時序數據就是基於時間而產生的一系列數據,在有時間座標的座標體系中,按照時間將這些數據點連成線,能夠揭示其趨勢與規律,若是對這些時序數據加以分析處理,能夠用以訓練機器學習模型,從而實現對將來的預測與預警。html

時序數據庫

瞭解了時序數據,時序數據庫也就不難理解,就是用來存放時序數據的數據庫。由於時序數據具備實時性與體量大的特色,全部時序數據庫也就必須具有寫入快的特性,同時爲了方便查詢,也就必須具有持久化與多維度聚合查詢的特性。數據庫

核心概念

數據點(point)

度量(measurement)

時間戳(timestamp)

度量字段(field)

標籤(tag)

核心概念

在 Mac 系統中安裝 influxDB 仍是比較簡單的api

安裝

  • 在 Mac OS 系統中能夠經過 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 究竟是何物?

鏈接 influxdb OSS

influx -precision rfc3339
複製代碼

-precision 用來自定 timestamp 的格式標準 rfc3339 (YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)

influx-start

其實如今咱們就能夠按照 influxQL 語法,輸入查詢語句與 influx 數據存儲服務進行交互了。

建立數據庫

CREATE DATABASE logdb
複製代碼

這裏咱們將建立一個名叫 logdb 的數據庫, 須要注意的是在 cli 中操做成功後並不會有什麼反饋,可是失敗了確定會有提示,用官方的描述來形容就是 沒有消息就是好消息

查看數據庫

SHOW DATABASES
複製代碼

結果以下圖

show-databases

其中 logdb 就是咱們建立的數據庫,_internal 則是 influxDB 內部使用的數據庫。

選擇數據庫

influxDB 執行的每條語句都必須指定一個固定的數據庫做爲其執行的上下文,因此咱們要不就是在編寫每條語句的時候都顯示的選擇一個數據庫,要不就先選擇一個數據庫後續的語句都默認在這個數據庫上執行操做。

USE logdb
複製代碼

執行結果以下:

use-db

打臉老是來的那麼快,上面還說任何操做成功後都沒有反饋 ~~ 也許 USE 指令是一個特例吧 ~~

概念實踐

從前面的概念介紹咱們能夠了解到,influxdb 是經過時間序列(time series)來組織存儲數據的。那這個時間序列到底長什麼樣呢?

Time series 其實就是一個概念,是存儲在 influxdb 中全部數據集合的概念,能夠包含 0 ~ ∞ 條數據,在 influxDB 中一條數據又叫一條 point

point

一條 point 表明了一個度量維度的一組散列樣本 measurement, 因此 point = measurement + time

measurement 度量維度

一個 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]
複製代碼

舉個例子🌰

point

實踐 insert & select

接下來就是開始實踐 ~

插入數據

INSERT cpu,host=serviceA,region=us_west value=0.64
複製代碼

結果以下:

inster

注意空格在 influxql 中是具備特殊意義的,因此,在書寫時 , 逗號後面是不能夠再包含空格的,上圖第一次執行插入的時候 cpu, 後面有一個空格,因此插入失敗。

從上面的執行語句咱們能夠看到,咱們在執行的時候並無添加任什麼時候間戳,知識後數據庫是會爲咱們自動插入運行數據庫的系統的本地時間戳的。

查詢數據

SELECT "host", "region", "value" from cpu
複製代碼

執行結果以下:

select

OK! 大功告成 ~ 接下來咱們就能夠開始學習 influxQL 的語法,進行更多高級操做了 ~

相關文章
相關標籤/搜索