91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hbase的LSM Tree有什么用

發布時間:2021-12-09 09:48:13 來源:億速云 閱讀:246 作者:iii 欄目:大數據

這篇文章主要講解了“Hbase的LSM Tree有什么用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Hbase的LSM Tree有什么用”吧!

LSM樹是HBase里使用的非常有創意的一種數據結構。在有代表性的關系型數據庫MySQL、SQL Server、Oracle中,數據存儲與索引的基本結構就是我們耳熟能詳的B樹和B+樹。而在一些主流的NoSQL數據庫如HBase、Cassandra、LevelDB、RocksDB中,則是使用日志結構合并樹(Log-structured Merge Tree,LSM Tree)來組織數據。

首先,我們從B+樹講起

為什么在RDBMS中我們需要B+樹(或者廣義地說,索引)?一句話:減少尋道時間。在存儲系統中廣泛使用的HDD是磁性介質+機械旋轉的,這就使得其順序訪問較快而隨機訪問較慢。使用B+樹組織數據可以較好地利用HDD的這種特點,其本質是多路平衡查找樹。一個典型的B+樹如下圖所示:

Hbase的LSM Tree有什么用

  • B+樹的磁盤讀寫代價更低:B+樹的內部節點并沒有指向關鍵字具體信息的指針,因此其內部節點相對B樹更小,如果把所有同一內部節點的關鍵字存放在同一盤塊中,那么盤塊所能容納的關鍵字數量也越多,一次性讀入內存的需要查找的關鍵字也就越多,相對IO讀寫次數就降低了。

  • B+樹的查詢效率更加穩定:由于非終結點并不是最終指向文件內容的結點,而只是葉子結點中關鍵字的索引。所以任何關鍵字的查找必須走一條從根結點到葉子結點的路。所有關鍵字查詢的路徑長度相同,導致每一個數據的查詢效率相當。

  • 由于B+樹的數據都存儲在葉子結點中,分支結點均為索引,方便掃庫,只需要掃一遍葉子結點即可,但是B樹因為其分支結點同樣存儲著數據,我們要找到具體的數據,需要進行一次中序遍歷按序來掃,所以B+樹更加適合在區間查詢的情況,所以通常B+樹用于數據庫索引。

如果你對B+樹不夠熟悉,可以參考這里:https://blog.csdn.net/b_x_p/article/details/86434387

那么,B+樹有什么缺點呢?

B+樹最大的性能問題是會產生大量的隨機IO,隨著新數據的插入,葉子節點會慢慢分裂,邏輯上連續的葉子節點在物理上往往不連續,甚至分離的很遠,但做范圍查詢時,會產生大量讀隨機IO。

LSM Tree

為了克服B+樹的弱點,HBase引入了LSM樹的概念,即Log-Structured Merge-Trees。

LSM Tree(Log-structured merge-tree)起源于1996年的一篇論文:The log-structured merge-tree (LSM-tree)。當時的背景是:為一張數據增長很快的歷史數據表設計一種存儲結構,使得它能夠解決:在內存不足,磁盤隨機IO太慢下的嚴重寫入性能問題。

LSM Tree(Log-structured merge-tree)廣泛應用在HBase,TiDB等諸多數據庫和存儲引擎上:

Hbase的LSM Tree有什么用

我們來看看大佬設計這個數據結構:

Hbase的LSM Tree有什么用

Ck tree是一個有序的樹狀結構,數據的寫入流轉從C0 tree 內存開始,不斷被合并到磁盤上的更大容量的Ck tree上。由于內存的讀寫速率都比外存要快非常多,因此數據寫入的效率很高。并且數據從內存刷入磁盤時是預排序的,也就是說,LSM樹將原本的隨機寫操作轉化成了順序寫操作,寫性能大幅提升。不過它犧牲了一部分讀性能,因為讀取時需要將內存中的數據和磁盤中的數據合并。

回到Hbase來,我們在之前的文章中《Hbase性能優化手冊》中提到過Hbase的讀寫流程:

Hbase的LSM Tree有什么用

MemStore是HBase中C0的實現,向HBase中寫數據的時候,首先會寫到內存中的MemStore,當達到一定閥值之后,flush(順序寫)到磁盤,形成新的StoreFile(HFile),最后多個StoreFile(HFile)又會進行Compact。

memstore內部維護了一個數據結構:ConcurrentSkipListMap,數據存儲是按照RowKey排好序的跳躍列表。跳躍列表的算法有同平衡樹一樣的漸進的預期時間邊界,并且更簡單、更快速和使用更少的空間。

Hbase的LSM Tree有什么用

HBase為了提升LSM結構下的隨機讀性能,還引入了布隆過濾器(建表語句中可以指定),對應HFile中的Bloom index block,其結構圖如下所示。

Hbase的LSM Tree有什么用

通過布隆過濾器,HBase就能以少量的空間代價,換來在讀取數據時非常快速地確定是否存在某條數據,效率進一步提升。

感謝各位的閱讀,以上就是“Hbase的LSM Tree有什么用”的內容了,經過本文的學習后,相信大家對Hbase的LSM Tree有什么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高要市| 奉化市| 新闻| 马公市| 滕州市| 惠水县| 平远县| 收藏| 思茅市| 阳西县| 莱芜市| 射阳县| 星座| 那坡县| 五常市| 兰州市| 开阳县| 翼城县| 桃园县| 阜新市| 红安县| 措勤县| 玉田县| 吴桥县| 石首市| 凤冈县| 简阳市| 且末县| 门源| 富阳市| 舞钢市| 安丘市| 昭通市| 安康市| 县级市| 天柱县| 景德镇市| 卢氏县| 东丽区| 贡觉县| 泰州市|