hbase與傳統資料庫
『壹』 HBase和oracle,Hadoop的區別
Hbase作為Hadoop下的一個子項目,目前發展比較強大,和傳統的關系型資料庫oracle來比,兩者各有優缺點,我們先看一個簡單的表格。
數據維護:比如更新,只是按照key值插入新的記錄,舊版本還在,會在storefile合並過程中進行刪除數據維護:增刪查改非常方便,直接修改
以上簡單羅列了Hbase和Oracle兩者的區別,還有其他更細節的地方這里就沒有描述,可以從上面的對比看出,兩者完全應用於不同個場景。
在Hbase架構中,由於底層的HDFS不支持追加,更新。所以在Hbase中,所有的操作都是寫入,寫操作都是先寫入Memstore內存中,當達到閥值時,才窮flashcache進程寫入storefile,每次寫入都會形成一個新的storefile,當需要更新,刪除的時候,根據key值按照時間戳插入一個新的記錄,老版本記錄依舊存在,可以通過時間戳查詢老版本的記錄,當storefile達到一定的閥值,系統會進行合並,合並過程中會進行版本合並和刪除工作,形成更大的storefile。
Oracle在插入,寫操作的時候,一般情況下也會先寫入內存,然後由DBWR進程調度寫入到數據文件,如果在插入的時候使用append追加,則數據不會通過SGA,直接追加到數據文件,在Hbase中沒有此功能。
『貳』 傳統的行存儲和(HBase)列存儲的區別
列存儲不同於傳統的關系型資料庫,其數據在表中是按行存儲的,列方式所帶來的重要好處之一就是,由於查詢中的選擇規則是通過列來定義的,因此整個資料庫是自動索引化的。按列存儲每個欄位的數據聚集存儲,在查詢只需要少數幾個欄位的時候,能大大減少讀取的數據量,一個欄位的數據聚集存儲,那就更容易為這種聚集存儲設計更好的壓縮/解壓演算法。
傳統的(Oracle)行存儲和(Hbase)列存儲的區別
這里寫圖片描a
1、數據是按行存儲的
2、沒有索引的查詢使用大量I/O
3、建立索引和物化視圖需要花費大量時間和資源
4、面對查詢的需求,資料庫必須被大量膨脹才能滿足性能需求
這里寫圖片描述
1、數據按列存儲–每一列單獨存放
2、數據即是索引
3、只訪問查詢涉及的列–大量降低系統IO
4、每一列由一個線索來處理–查詢的並發處理
5、數據類型一致,數據特徵相似–高效壓縮