您好,登錄后才能下訂單哦!
這篇文章主要介紹“LSM樹如何在HBase中應用”,在日常操作中,相信很多人在LSM樹如何在HBase中應用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”LSM樹如何在HBase中應用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
前言
在有代表性的關系型數據庫如MySQL、SQL Server、Oracle中,數據存儲與索引的基本結構就是我們耳熟能詳的B樹和B+樹。而在一些主流的NoSQL數據庫如HBase、Cassandra、LevelDB、RocksDB中,則是使用日志結構合并樹(Log-structured Merge Tree,LSM Tree)來組織數據。本文先由B+樹來引出對LSM樹的介紹,然后說明HBase中是如何運用LSM樹的。
回顧B+樹
為什么在RDBMS中我們需要B+樹(或者廣義地說,索引)?一句話:減少尋道時間。在存儲系統中廣泛使用的HDD是磁性介質+機械旋轉的,這就使得其順序訪問較快而隨機訪問較慢。使用B+樹組織數據可以較好地利用HDD的這種特點,其本質是多路平衡查找樹。下圖是一棵高度為3的4路B+樹示例。
結構比較扁平,高度低(一般不超過4層),隨機尋道次數少;
數據存儲密度大,且都位于葉子節點,查詢穩定,遍歷方便;
葉子節點形成有序鏈表,范圍查詢轉化為順序讀,效率高。相對而言B樹必須通過中序遍歷才能支持范圍查詢。
如果寫入的數據比較離散,那么尋找寫入位置時,子節點有很大可能性不會在內存中,最終會產生大量的隨機寫,性能下降。下圖來自TokuDB的PPT,說明了這一點。
如果B+樹已經運行了很長時間,寫入了很多數據,隨著葉子節點分裂,其對應的塊會不再順序存儲,而變得分散。這時執行范圍查詢也會變成隨機讀,效率降低了。
可以先讀取內存中C0樹的緩存數據。內存的效率很高,并且根據局部性原理,最近寫入的數據命中率也高。
寫入數據未刷到磁盤時不會占用磁盤的I/O,不會與讀取競爭。讀取操作就能取得更長的磁盤時間,變相地彌補了讀性能差距。
到此,關于“LSM樹如何在HBase中應用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。