Hbase與MySQL對(duì)比,區(qū)別是什么?
閱讀本文大概需要 2.8 分鐘。



?相比MySQL,HBase的內(nèi)部引擎特點(diǎn):

從磁盤(pán)讀數(shù)據(jù)是以頁(yè)為單位,根據(jù)這個(gè)特點(diǎn)使用平衡多路查找樹(shù)
B+樹(shù)的非葉子節(jié)點(diǎn)存放索引,葉子節(jié)點(diǎn)存放數(shù)據(jù)
非葉子節(jié)點(diǎn)能夠存放更多的索引,樹(shù)的高度更低
葉子節(jié)點(diǎn)通過(guò)指針相連,有利于區(qū)間查詢
葉子節(jié)點(diǎn)和根節(jié)點(diǎn)的距離基本相同,查找的效率穩(wěn)定
數(shù)據(jù)插入導(dǎo)致葉子節(jié)點(diǎn)分裂,最終導(dǎo)致邏輯連續(xù)的數(shù)據(jù)存放到不同物理磁盤(pán)塊位置,導(dǎo)致區(qū)間查詢效率下降
LSM(Log-Structured Merge),LevelDB,RocksDB,HBase,Cassandra等都是基于LSM結(jié)構(gòu)
HDD,SSD順序讀寫(xiě)的速度都高于隨機(jī)讀寫(xiě),寫(xiě)入日志就是順序?qū)?/span>
WAL,memtable,sstable
有利于寫(xiě),不利于讀,先從memtable查找,再到磁盤(pán)所有的sstable文件查找
Compaction的目的是減少sstable文件數(shù)量,緩解讀放大的問(wèn)題,加速查找可以對(duì)sstable文件使用布隆過(guò)濾器
Compaction策略
STCS(SIze-Tiered Compaction Strategy)空間放大和讀放大問(wèn)題
LCS(Leveled Compaction Strategy)寫(xiě)放大問(wèn)題
Compaction會(huì)引入寫(xiě)放大問(wèn)題,在Value較大時(shí)采用KV分離存儲(chǔ)緩解寫(xiě)放大
寫(xiě)操作多于讀操作時(shí),LSM樹(shù)有更好的性能,因?yàn)殡S著insert操作,為了維護(hù)B+樹(shù)結(jié)構(gòu),節(jié)點(diǎn)分裂。讀磁盤(pán)的隨機(jī)讀寫(xiě)概率會(huì)變大,性能會(huì)逐漸減弱。LSM樹(shù)相比于B+樹(shù),多次單頁(yè)隨機(jī)寫(xiě)變成一次多頁(yè)隨機(jī)寫(xiě),復(fù)用了磁盤(pán)尋道時(shí)間,極大提高寫(xiě)性能。不過(guò)付出代價(jià)就是放棄部分讀性能。



















