Hbase VS Oracle

541732025發表於2013-11-16
一,索引不同造成行為的差異
Hbase只能建立一個主鍵索引,而且之後的資料查詢也只能基於該索引進行簡單的key-value查詢;
但是Oracle可以建立任意索引,也可以按照任意列進行資料查詢。

二,Hbase適合大量插入同時又有讀的情況,讀一般為key-value查詢
大資料、高併發正合Hbase的胃口

三,Hbase的瓶頸是硬碟傳輸速度,Oracle的瓶頸是硬碟尋道時間
Hbase都是大量往硬碟上寫資料(沒有delete、update,都是insert),即使是讀資料,也是優先MemStore,所以硬碟傳輸速度成為其瓶頸;
而Oracle由於具有隨機訪問特性(select、update等),所以硬碟尋道時間成為其瓶頸,而尋道時間主要由轉速決定。

四,Hbase很適合尋找按照時間排序top n的場景
因為Hbase的資料都具有時間戳(Hbase預設就有時間戳)

行式儲存示意圖:

行式儲存:
資料存放在資料檔案內
資料檔案的基本組成單位:塊/頁(一行接一行存在block中,當然block不會填滿,預留空間進行行的操作,譬如:update)
塊內結構:塊頭、資料區
為了select橘紅色的列,行式資料庫會把整個block加在到記憶體,然後篩選出所需列。
而對於Hbase而言,由於資料儲存特性,資料以列族為單位進行儲存,一個檔案塊儲存的都是同一個列族的資料),
這樣,查詢會比行式資料庫最佳化很多。

另外,由於在Hbase中,同一個列裡面資料格式比較接近,或者長度相近,從而可以對資料進行大幅度的壓縮,
結果就是節省了硬碟空間,也減少了IO

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-776770/,如需轉載,請註明出處,否則將追究法律責任。

相關文章