influxdb知識總結(2)--- influxdb 中的重要概念
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
相關文章
- influxdb的基本概念UX
- InfluxDB基本概念和操作UX
- 一次使用InfluxDB資料庫的總結UX資料庫
- Web(牛腩)概念知識總結Web
- influxdbUX
- InfluxDB中的inmem記憶體索引結構解析UX記憶體索引
- SQL語法的重要知識點總結SQL
- laravel重要概念和知識點Laravel
- RAC的一些概念和原理性知識多方總結【2】
- Vue知識總結(2)Vue
- InfluxDB入門UX
- influxdb基本操作UX
- InfluxDB 客戶端基礎操作2UX客戶端
- Influxdb的Meta data分析UX
- 《結網》的概念知識吸取
- influxdb使用入門UX
- JMeter+InfluxDB+GrafanaJMeterUXGrafana
- Vue重要知識小結Vue
- InfluxDB 2.x Open Source Time Series DatabaseUXDatabase
- 在netcore中使用Influxdb2NetCoreUXDB2
- JS基礎知識總結(2)JS
- 《MySQL重要知識點及面試總結》:推薦收藏MySql面試
- windows中啟動多個influxdb操作指南WindowsUX
- InfluxDB 管理工具UX
- Influxdb 介紹與使用UX
- influxdb 原理與應用UX
- influxdb 筆記: 安裝UX筆記
- influxdb 筆記: API & CRUDUX筆記API
- logstash輸出到influxdbUX
- Jmeter+Influxdb+Grafana搭建JMeterUXGrafana
- yii2 基礎知識總結
- Java中IO流的知識點總結Java
- InfluxDB從原理到實戰 - 一篇文章搞懂InfluxDB時區UX
- 為什麼是InfluxDB | 寫在《InfluxDB原理和實戰》出版之際UX
- 運維監控應知應會: InfluxDB 使用指南運維UX
- 開源Influxdb2高效能客戶端UXDB2客戶端
- RAC的一些概念和原理性知識多方總結【1】
- Vue知識精簡總結-更新中Vue