時序數據庫 InfluxDB(二)

相關文章:
時序數據庫 InfluxDB(一)
時序數據庫 InfluxDB(二)
時序數據庫 InfluxDB(三)
時序數據庫 InfluxDB(四)
時序數據庫 InfluxDB(五)數據庫


RP


先回顧一下 RP 策略( retention policy ),它由三個部分構成:segmentfault

  • DURATION:數據的保留時長。
  • REPLICATION:集羣模式下數據的副本數,單節點無效。
  • SHARD DURATION:可選項,shard group 劃分的時間範圍。

前兩個部分沒啥好說的,而 shard duration 和 shard group 的概念你可能會感到比較陌生。併發

shard 是什麼?性能

先來看數據的層次結構:編碼

image

若是所示,一個 database 對應一個實際的磁盤上的文件夾,該數據庫下不一樣的 RP 策略對應不一樣的文件夾。spa

shard group 只是一個邏輯概念,並無實際的磁盤文件夾,shard group 包含有一個或多個 shard 。code

最終的數據是存儲在 shard 中的,每一個 shard 也對應一個具體的磁盤文件目錄,數據是按照時間範圍分割存儲的,shard duration 也就是劃分 shard group 的時間範圍(例如 shard duration 若是是一週,那麼第一週的數據就會存儲到一個 shard group 中,第二週的數據會存儲到另一個 shard group 中,以此類推)。flux

另外,每一個 shard 目錄下都有一個 TSM 文件(後綴名爲 .tsm ),正是這個文件存儲了最後編碼和壓縮後的數據。shard group 下的 shard 是按照 series 來劃分的,每一個 shard 包含一組特定的 series ,換句話說特定 shard group 中的特定 series 上的全部 points 點都存儲在同一個 TSM 文件中。內存


shard duration


shard 從屬於惟一一個 shard group ,shard duration 和 shard group duration 是同一個概念。rem

如前文所述,數據按照時間範圍分割存儲,分割的時間範圍由 RP 策略中的 shard group duration 指定。

默認狀況下,shard group duration 根據 RP duration 的值來肯定,對應關係以下圖:
image

RP 策略是不可或缺的,若是未設置則會使用默認的名稱爲 autogen 的 RP ,它的 duration 是 infinite 也就是數據不會過時,shard group duration 是 7 天( duration 是 infinite 對應的就是 > 6 months 這一欄)。

shard group duration 設置爲多久才最好?

  • 長時間範圍:有利於存儲更多數據,總體性能更好。
  • 短期範圍:靈活性更高,有利於刪除過時數據和記錄增量備份。刪除過時數據是刪除整個 shard group 而不是單個的 shard 。

默認配置對於大多數場景都運行的很好,然而,高吞吐量或長時間運行的實例將受益於更長的 shard group duration ,官方建議的配置以下:
image

其它一些須要考慮的因素:

  • shard group 應該包含最頻繁查詢的最長時間範圍的兩倍。
  • 每一個 shard group 應該包含超過十萬個 point 。
  • shard group 中的每一個 series 應該包含超過一千個 point 。

另外,批量插入長時間範圍內的大量歷史數據將會一次觸發大量 shard 的建立,併發訪問和寫入成百上千的 shard 會致使性能下降和內存耗盡,對於這種狀況建議臨時設置較長的 shard group duration 好比 52 周。

RP 策略能夠動態調整,刪除一個 RP 將會刪除其下的全部數據。

未完待續。。。

我的公衆號持續輸出原創文章,有興趣的能夠關注下。
qrcode_for_gh_9ccbe5e0dfb3_258.jpg

相關文章
相關標籤/搜索