Hbase查詢速度快的緣由
A:如果快速查詢(從磁碟讀資料),hbase是根據rowkey查詢的,只要能快速的定位rowkey, 就能實現快速的查詢,主要是以下因素:
1、hbase是可劃分成多個region,你可以簡單的理解為關係型資料庫的多個分割槽。
2、鍵是排好序了的
3、按列儲存的
首先,能快速找到行所在的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原則),會取得更高的效率。