HBase和傳統的關系型數據庫有以下方面的區別:
軟件結構:對于每個實現,軟件結構仍舊會保持一樣。典型的現代應用都會有一個表示層用于和業務邏輯層通信,業務邏輯層則接著和數據庫層通信。如果遷移到HBase,只有數據庫層需要進行新的適配。
硬件:兩種實現上的硬件是絕對不同的。如果使用RDBMS,就需要一塊具有多個處理器和盡可能多的內存資源的主板,并且相關部件都必須是服務器級別的,因為一旦機器失效,結果是非常“恐怖”的。另外,還需要將磁盤組織為RAID模式以最大化讀寫速度。而類似HBase的新興數據庫技術使用的是通用x86服務器級別的設備,具有較低的價格,雙核或者四核的處理器、千兆字節(GB)量級的內存和百千兆字節量級的本地硬盤資源機就足夠使用了。所有機器都以集群的方式工作,具有良好的可擴展性。
操作系統:RDBMS發展多年才被部署在很多操作系統上,而HBase當前只支持在Linux操作系統上的部署。
數據結構:在HBase中,傳統的關系型數據庫中的關系元語(用于描述關系模式Schema)都被放開從而可以建立更動態的Schema表,但是不支持全掃描(因為沒有進行join操作)。對于數據密集型處理的大型關系型數據庫而言,join操作可能無法在內存中實現,因此同樣不能高效地支持全掃描。
數據處理:對于RDBMS而言,在線進行數據處理的方法非常豐富和成熟,例如使用SQL,然而這在HBase中則比較有限。但是,HBase的最大優勢在于它能夠與MapReduce協同工作,例如便捷地建立一張索引表來代替join操作。
擴放方法:擴放RDBMS的方式有基于現有設備升級的縱向擴放和基于增加設備數量的橫向擴放。其中,縱向擴放具有較高的代價,而且需要有冗余的數據庫用于設備升級過程中的備份;而橫向擴放當前普遍采用了增加讀處理節點而維持原有寫處理節點的方案,但寫處理節點容易成為瓶頸。
可靠性維護:在RDBMS中,可靠性的維護是一個大問題。因為系統往往只設計了一個節點作為數據庫服務器,所以它需要用服務器級別的部件來構建系統,以盡可能減少MTBF。即使這樣,也很難完全避免出現節點失效,所以很多失效恢復機制被提出。例如,如果負責寫處理的節點出現故障,那么所有的寫操作將會被拖延至管理員更新DNS,使得寫處理節點的域名指向新的節點。而在HBase中,可靠性由HDFS文件系統實現,如果出現了節點失效,那么文件層的可靠性(例如文件被劃分為多個塊分布存儲)可以保證系統訪問和數據存取不受影響。
應用的普適度:HBase能夠同時為多個系統提供服務(即使相關的系統具有不同的服務質量需求),但是RDBMS很難做到這一點(考慮到擴放的難度和高昂的代價,需要為不同的應用設計不同的數據庫)。
回答所涉及的環境:聯想天逸510S、Windows 10。
HBase和傳統的關系型數據庫有以下方面的區別:
軟件結構:對于每個實現,軟件結構仍舊會保持一樣。典型的現代應用都會有一個表示層用于和業務邏輯層通信,業務邏輯層則接著和數據庫層通信。如果遷移到HBase,只有數據庫層需要進行新的適配。
硬件:兩種實現上的硬件是絕對不同的。如果使用RDBMS,就需要一塊具有多個處理器和盡可能多的內存資源的主板,并且相關部件都必須是服務器級別的,因為一旦機器失效,結果是非常“恐怖”的。另外,還需要將磁盤組織為RAID模式以最大化讀寫速度。而類似HBase的新興數據庫技術使用的是通用x86服務器級別的設備,具有較低的價格,雙核或者四核的處理器、千兆字節(GB)量級的內存和百千兆字節量級的本地硬盤資源機就足夠使用了。所有機器都以集群的方式工作,具有良好的可擴展性。
操作系統:RDBMS發展多年才被部署在很多操作系統上,而HBase當前只支持在Linux操作系統上的部署。
數據結構:在HBase中,傳統的關系型數據庫中的關系元語(用于描述關系模式Schema)都被放開從而可以建立更動態的Schema表,但是不支持全掃描(因為沒有進行join操作)。對于數據密集型處理的大型關系型數據庫而言,join操作可能無法在內存中實現,因此同樣不能高效地支持全掃描。
數據處理:對于RDBMS而言,在線進行數據處理的方法非常豐富和成熟,例如使用SQL,然而這在HBase中則比較有限。但是,HBase的最大優勢在于它能夠與MapReduce協同工作,例如便捷地建立一張索引表來代替join操作。
擴放方法:擴放RDBMS的方式有基于現有設備升級的縱向擴放和基于增加設備數量的橫向擴放。其中,縱向擴放具有較高的代價,而且需要有冗余的數據庫用于設備升級過程中的備份;而橫向擴放當前普遍采用了增加讀處理節點而維持原有寫處理節點的方案,但寫處理節點容易成為瓶頸。
可靠性維護:在RDBMS中,可靠性的維護是一個大問題。因為系統往往只設計了一個節點作為數據庫服務器,所以它需要用服務器級別的部件來構建系統,以盡可能減少MTBF。即使這樣,也很難完全避免出現節點失效,所以很多失效恢復機制被提出。例如,如果負責寫處理的節點出現故障,那么所有的寫操作將會被拖延至管理員更新DNS,使得寫處理節點的域名指向新的節點。而在HBase中,可靠性由HDFS文件系統實現,如果出現了節點失效,那么文件層的可靠性(例如文件被劃分為多個塊分布存儲)可以保證系統訪問和數據存取不受影響。
應用的普適度:HBase能夠同時為多個系統提供服務(即使相關的系統具有不同的服務質量需求),但是RDBMS很難做到這一點(考慮到擴放的難度和高昂的代價,需要為不同的應用設計不同的數據庫)。
回答所涉及的環境:聯想天逸510S、Windows 10。