LSM的儲存和定位
-
LSM的儲存
主要思想是將直接修改樹形結構,改為分幾個層級來完成。當完成第一個層級時就反饋完成,其他交由後臺來處理。
流程是先寫入memory table,之後merge到低階別的sstable,最後merge到高階別的sstable。
如下是Hbase的大體結構:
2. 定位
Trailer–這一段是定長的。儲存了每一段的偏移量,讀取一個HFile時,會首先 讀取Trailer,Trailer儲存了每個段的起始位置(段的Magic Number用來做安全check),然後,DataBlock Index會被讀取到記憶體中,這樣,當檢索某個key時,不需要掃描整個HFile,而只需從記憶體中找到key所在的block,透過一次磁碟io將整個 block讀取到記憶體中,再找到需要的key。DataBlock Index採用LRU機制淘汰。
首先,能快速找到行所在的region(分割槽),假設表有10億條記錄,佔空間1TB, 分列成了500個region, 1個region佔2個G. 最多讀取2G的記錄,就能找到對應記錄;
其次,是按列儲存的,其實是列族,假設分為3個列族,每個列族就是666M, 如果要查詢的東西在其中1個列族上,1個列族包含1個或者多個HStoreFile,假設一個HStoreFile是128M, 該列族包含5個HStoreFile在磁碟上. 剩下的在記憶體中。
再次,是排好序了的,你要的記錄有可能在最前面,也有可能在最後面,假設在中間,我們只需遍歷2.5個HStoreFile共300M
最後,每個HStoreFile(HFile的封裝),是以鍵值對(key-value)方式儲存,只要遍歷一個個資料塊中的key的位置,並判斷符合條件可以了。 一般key是有限的長度,假設跟value是1:19(忽略HFile上其它塊),最終只需要15M就可獲取的對應的記錄,按照磁碟的訪問100M/S,只需0.15秒。 加上塊快取機制(LRU原則),會取得更高的效率。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25380026/viewspace-2644557/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LSM儲存引擎基本原理儲存引擎
- 基於LSM樹的儲存機制簡述
- 資料的儲存結構淺析LSM-Tree和B-tree
- 詳解資料庫儲存的資料結構LSM Tree資料庫資料結構
- TiDB 底層儲存結構 LSM 樹原理介紹TiDB
- OB有問必答 | LSM Tree的技術原理是什麼?OceanBase的儲存引擎為什麼基於LSM Tree?儲存引擎
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- 資料庫儲存與索引技術(三)LSM樹實現案例資料庫索引
- 技術分享 | LSM-Tree 和 OceanBase 分層轉儲
- 達夢儲存過程效能問題定位儲存過程
- RocketMQ(六):nameserver與佇列儲存定位解析MQServer佇列
- 2、儲存容量和儲存地址空間的轉換
- Android-內部儲存和外部儲存Android
- Synology群暉NAS儲存正確建立儲存池和儲存空間的方法
- OB有問必答 | OceanBase儲存引擎基於LSM Tree的理論做了哪些創新和實踐?儲存引擎
- 杉巖:淺談物件儲存和塊儲存區別物件
- 傳統儲存器和新興儲存器應用
- 儲存裝置異常告警,如何秒速定位問題?
- 看圖輕鬆理解資料結構與演算法系列(NoSQL儲存-LSM樹)資料結構演算法SQL
- 塊儲存 檔案儲存 物件儲存物件
- MySQL儲存過程的建立和使用MySql儲存過程
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- 儲存—物件儲存_Minio物件
- Salesforce的多型儲存和SAPC4C的後設資料儲存倉庫Salesforce多型
- openGauss儲存技術(二)——列儲存引擎和記憶體引擎儲存引擎記憶體
- 讀取和儲存Excel表Excel
- vue store儲存commit 和dispatchVueMIT
- Impala之儲存和壓縮
- TensorFlow模型儲存和提取方法模型
- localStorage和sessionStorage儲存封裝Session封裝
- spacy儲存和載入模型模型
- 生成二維碼,並且儲存,指定位置的view成圖片,並且儲存到本地相簿View
- 聚焦資料時代新儲存需求,浪潮儲存的新儲存之道
- 訊息資料庫Message DB:PostgreSQL的事件儲存和訊息儲存 - Eventide Blog資料庫SQL事件IDE
- 細述Kubernetes和Docker容器的儲存方式Docker
- Kylin儲存和查詢的分片問題
- 變數的儲存方式和生存期變數
- MySQL儲存引擎:MyISAM和InnoDB的區別MySql儲存引擎