這篇文章主要介紹“LSM樹如何在HBase中應(yīng)用”,在日常操作中,相信很多人在LSM樹如何在HBase中應(yīng)用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”LSM樹如何在HBase中應(yīng)用”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
我們提供的服務(wù)有:網(wǎng)站設(shè)計制作、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、昭平ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的昭平網(wǎng)站制作公司
前言
在有代表性的關(guān)系型數(shù)據(jù)庫如MySQL、SQL Server、Oracle中,數(shù)據(jù)存儲與索引的基本結(jié)構(gòu)就是我們耳熟能詳?shù)腂樹和B+樹。而在一些主流的NoSql數(shù)據(jù)庫如HBase、Cassandra、LevelDB、RocksDB中,則是使用日志結(jié)構(gòu)合并樹(Log-structured Merge Tree,LSM Tree)來組織數(shù)據(jù)。本文先由B+樹來引出對LSM樹的介紹,然后說明HBase中是如何運用LSM樹的。
回顧B+樹
為什么在RDBMS中我們需要B+樹(或者廣義地說,索引)?一句話:減少尋道時間。在存儲系統(tǒng)中廣泛使用的HDD是磁性介質(zhì)+機械旋轉(zhuǎn)的,這就使得其順序訪問較快而隨機訪問較慢。使用B+樹組織數(shù)據(jù)可以較好地利用HDD的這種特點,其本質(zhì)是多路平衡查找樹。下圖是一棵高度為3的4路B+樹示例。
結(jié)構(gòu)比較扁平,高度低(一般不超過4層),隨機尋道次數(shù)少;
數(shù)據(jù)存儲密度大,且都位于葉子節(jié)點,查詢穩(wěn)定,遍歷方便;
葉子節(jié)點形成有序鏈表,范圍查詢轉(zhuǎn)化為順序讀,效率高。相對而言B樹必須通過中序遍歷才能支持范圍查詢。
如果寫入的數(shù)據(jù)比較離散,那么尋找寫入位置時,子節(jié)點有很大可能性不會在內(nèi)存中,最終會產(chǎn)生大量的隨機寫,性能下降。下圖來自TokuDB的PPT,說明了這一點。
如果B+樹已經(jīng)運行了很長時間,寫入了很多數(shù)據(jù),隨著葉子節(jié)點分裂,其對應(yīng)的塊會不再順序存儲,而變得分散。這時執(zhí)行范圍查詢也會變成隨機讀,效率降低了。
可以先讀取內(nèi)存中C0樹的緩存數(shù)據(jù)。內(nèi)存的效率很高,并且根據(jù)局部性原理,最近寫入的數(shù)據(jù)命中率也高。
寫入數(shù)據(jù)未刷到磁盤時不會占用磁盤的I/O,不會與讀取競爭。讀取操作就能取得更長的磁盤時間,變相地彌補了讀性能差距。
到此,關(guān)于“LSM樹如何在HBase中應(yīng)用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
當前名稱:LSM樹如何在HBase中應(yīng)用
文章來源:http://weahome.cn/article/jpdhps.html