influxdb知識總結(2)--- influxdb 中的重要概念

菜鳥棒發表於2019-11-18
RP(Retention Policy)

RP是資料庫級別,核心作用:
1 指定資料的過期時間
2 指定資料副本數量
3 指定shardgroup duration

shardgroup

每個shardgroup中包含多個shard,每個shardgroup只儲存指定時間段的資料。

shardgroup起到的作用是將時序資料按時間分割槽,便於根據時間緯度選擇目標資料分割槽。

shard

shard是influxdb中儲存引擎的實現,具體稱之為TSM,TSM的實現類似於LSM。shardgroup根據hash(series),將資料對映到不同的shard,所以相同series的資料肯定會處在同一個shard中。
如下圖所示,influxdb中的資料劃分形式:先按RP劃分,不同儲存策略的資料劃分到不同的RP下面,在RP下面按照時間range分割槽形成不同的shardgroup。同一個shardgroup下面的資料按照series進行hash分割槽。
在這裡插入圖片描述
influxdb的策略是典型的兩層sharding, 上層採用range sharding,下層採用hash sharding。對於時序資料而言,基於時間的range sharding是最合理的,但是這樣會存在寫入存在熱點的問題(最新的資料只會寫入最新的shard中),因此在下層採用series進行hash。

block

shard中負責具體儲存的結構稱為block。每個shard中包含若干個data block(資料檔案) 和 index block(索引檔案)。儲存結構如下所示:
在這裡插入圖片描述
時序資料在記憶體中是一個巨大的map:<key, List<TimeStamp/value>,其中key= series + fieldKey , 同一個block內只會儲存一種key對應的時序資料。datablock內部採用列式儲存,從而提高儲存效率。

TSM引擎工作原理:資料讀取

讀取原理如下所示:
1 首先根據key找到對應的indexblock。
2 利用indexblock裡面的索引資訊查詢到對應datablock在shard(即TSM檔案)中的位置
3 對查到的資訊載入到記憶體中進行進一步的過濾。
在這裡插入圖片描述

參考:初識influxdb

相關文章