為什么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原則),會取得更高的效率。

B:實時查詢
       實時查詢,可以認為是從內存中查詢,一般響應時間在1秒內。HBase的機制是數據先寫入到內存中,當數據量達到一定的量(如128M), 再寫入磁盤中, 在內存中,是不進行數據的更新或合並操作的,只增加數據,這使得用戶的寫操作只要進入內存中就可以立即返回,保證了HBase I/O的 高性能。

     實時查詢,即反應根據當前時間的數據,可以認為這些數據始終是在內存的,保證了數據的實時響應。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM