Cassandra 與 HBase 之間有何差異?

Apache Cassandra 和 Apache HBase 是以非資料表格式儲存資料的 NoSQL 資料庫。兩者都是以鍵值形式將資料儲存在大數據基礎架構上,以準確及有有效管理大量的資料量。但是,確實存在架構差異,分別可以更好應用於不同案例。例如,Cassandra 提供快速的讀取和寫入性能,而 HBase 提供較佳的資料一致性。HBase 同時對於處理大型零散的資料集非常有效率。組織會將 Cassandra 和 HBase 用於不同的大數據使用案例。

閱讀有關 Apache Cassandra 的內容

閱讀有關 Apache HBase 的內容

Cassandra 和 HBase 的相似之處

Cassandra 和 HBase 是兩個可儲存、處理和擷取數十億個資料集的 NoSQL 資料庫。它們在以下領域有重疊的相似之處。 

大數據應用程式

您可以使用 Cassandra 和 HBase 儲存大量非結構化、非關聯式資料。它們與傳統的資料庫系統不同,會以簡單的欄位列型式儲存資料。您可以使用 Cassandra 和 HBase 來儲存圖片、音訊、視訊和其他非結構化資料類型,進行大規模處理。

閱讀有關大數據的內容

開放原始碼

Apache 軟體基金會以開放原始碼專案型式發佈和管理 Cassandra 和 HBase。HBase 以 Google BigTable 引入的概念進行開發,由 Apache 在 2008 年公開發佈。Cassandra 是為解決 Facebook 收件匣搜尋問題建立的計畫。它使用 BigTable 的特定功能和 Amazon Dynamo 的其他功能。

閱讀有關開放原始碼的內容

可擴展性

您可以透過新增更多區域伺服器至 HBase 叢集來拓展 HBase,以便符合日漸增長的資料需求。隨後 NoSQL 資料庫系統即可在資料節點超過特定容量時,將其分配到新區域。Cassandra 叢集還可以支援多個節點來擴展其資料管理功能。透過新增更多節點,您可以有效且平均分配資料,預防流量瓶頸。 

資料復原

Cassandra 和 HBase 中的資料節點都具有容錯性。在 Cassandra 中,每個節點都支援資料複製。寫入操作會自動發佈給指定到特定資料的所有節點。HBase 具有類似的資料複製方法,該方法透過其運行的 Hadoop 分散式檔案系統 (HDFS) 進行自動化。HDFS 會在不同伺服器上建立並維護重複的資料。兩個 NoSQL 資料庫都會根據複製因素複製不同實體網路中的資料節點,藉此降低廣域網路故障的風險。 

閱讀有關 Hadoop 的內容

寫入路徑

Cassandra 和 HBase 都會將資料組織整理至欄中。儲存資料時,每個資料庫都會尋找適當的資料欄系列,也會將相關資訊保存在一起。當資料庫將資料附加或儲存到資料欄時,這兩個資料庫也會將資料寫入日誌中。 

架構差異:Cassandra 與HBase

Cassandra 和 HBase 以 CAP 定理的不同特徵運作。CAP 定理指定分散式系統可以隨時有以下兩項特徵:

  • 一致性
  • 可用性
  • 分區容限

由於儲存大量資料集的資料庫必須使用分區容限,因此 Cassandra 和 HBase 在可用性和一致性方面有所不同。由於其對等的節點安排,Cassandra 具有高度的可用性和分區容限。由於單一 HBase 主要將資料複製到所有節點,因此 HBase 具有一致的分區容限。

接下來,我們將說明兩個資料庫管理資料請求方式方面更進一步的架構差異。 

資料模型

Cassandra 和 HBase 都將資料整理為群組、資料列和欄,但每個資料庫都會使用不同的佈局。在 Cassandra 中,相關資料的欄會儲存在稱為Keyspace的更大類別下的列中。例如,Cassandra 資料庫可能包含下列 Keyspace、欄系列和儲存格排列:

  • Keyspace:客戶訂單
    • 欄系列:客戶端
      • ID、名字、姓氏
    • 欄系列:訂單
      • ID、項目、價格

客戶端欄系列位於訂單欄系列上方的分割區中。在實際應用程式中,Keyspace 會將多個欄系列堆疊一起。

HBase 架構具有類似傳統關聯式資料庫的佈局。HBase 在表格中使用連續列鍵,而不是對每個欄系列給予一個 ID。然後,其會將屬於相同欄系列的欄相鄰排列,以便於擷取資料。下面是一個範例:

  • 表格;客戶訂單
    • 列鍵、欄系列:客戶端 {名字,姓氏},欄系列:訂單 {項目,價格}

閱讀有關關聯式資料庫的內容

關鍵元件

Cassandra 使用一種稱為一致雜湊演算法技術,使每個節點都能在其對等網路中快速找到特定資料。關鍵組件包括 記錄表、提交日誌和 SS 表格。這些共同形成 Cassandra 架構中節點、資料中心和叢集的寫入路徑。 

HBase 位於 HDFS 的頂部。其使用 HBase 主要伺服器、區域伺服器和 Zookeeper 來管理資料。

Cassandra 獨立提供資料管理和資料儲存,HBase 則需要外部系統才能有資料儲存功能。

核心設計

Cassandra 在主動/主動式架構上運作,每個節點都會回應寫入和請求。即使特定節點不儲存請求的資料,其也會使用稱為八卦協議的對等通訊方式,從其他節點擷取請求資料。 

HBase 使用主要/次要設定,該設定中,HBase 主要可控制其他節點的區域伺服器。如果沒有 HBase 主要的複本,HBase 架構會顯示單一故障點。您可以複製多個 HBase 主節點,但僅一個會負責所有區域伺服器。

下圖顯示 HBase 中的主要/次要設定。

查詢語言

Cassandra 可在資料庫中用 Cassandra Query Language (CQL) 進行資料操作。您可以使用 CQL 在與 SQL 類似的描述性指示中新增、移除或更新記錄。HBase 查詢語言由需要更多努力學習的基本 Shell 命令組成。 

效能:Cassandra 與HBase

Cassandra 和 HBase 都可以高速存取大型資料集以進行大數據分析。資料庫在下列方面展示出效能差異。 

延遲

延遲是將指令傳送到資料庫系統與儲存或擷取資料之間的時間差。一般而言,隨著資料讀取和寫入的次數增加,HBase 的延遲會隨之更低。Cassandra 則相反,隨著其獲取更多資料,延遲會更高。 

輸送量

輸送量測量資料庫每秒處理的讀取或寫入操作次數。HBase 的輸送量操作維持在 10 萬至 20 萬,但在達到 25 萬個操作後,輸送量會增加。Cassandra 的輸送量會隨著寫入或讀取更多資料而增加。 

讀取效能

Cassandra 中的讀取操作涉及查找分割表上已儲存資料的確切位置。如果搜尋涉及次要金鑰或非分割表,Cassandra 需要更長時間才能搜尋叢集中的每個節點。此外,當多個節點包含相同資料的不同版本時,就會發生資料不一致。 

HBase 具有比 Cassandra 更好的讀取效能,原因是其將所有資料寫入單一伺服器。不同於 Cassandra,在 HBase 中讀取資料不需要資料庫系統在分割表中搜尋。HBase 用來儲存資料的 HDFS 提供了 Bloom 篩選器和區塊快取,加快資料擷取速度。 

寫入效能

Cassandra 比 HBase 更快完成寫入操作。使用 Cassandra,您可以同時將資料寫入日誌和快取。HBase 不支援同時寫入。相反,HBase 客戶端應用程式透過 Zookeeper 來啟動寫入操作,而 HBase 主要提供儲存資料的位址。HBase 中的其他步驟會減慢資料寫入程序。  

其他關鍵差異:Cassandra 與HBase

您可以使用 Cassandra 和 HBase 來建立資料科學應用程式,但微小差異會影響選擇某個應用程式而不是另一個的決定。 

安全性

使用 Cassandra,您可以調整資料列層級的存取權限。其還提供 SSL 加密以保護節點之間的資料交換。不同於 Cassandra,HBase 提供額外的儲存格層級加密、加密和身份驗證功能。 

資料分割

Cassandra 支援依序分割,可以透過將單一欄作為分割鍵,來掃描排序的記錄。雖然這可能有所幫助,但依序分割會使負載平衡變得複雜,原因是單一節點上有多次寫入。HBase 表格不支援依序分割。 

節點通訊

在 Cassandra 架構中,種子節點是叢集間通訊的關鍵點。這些節點使用八卦通訊協定在不同叢集之間移動資料。HBase 使用運作中的 HBase 主節點來協調多個區域伺服器之間的通訊。在此架構中,資料移動是透過 Zookeeper 通訊協定協商。 

何時使用 Cassandra 與HBase

Cassandra 和 HBase 資料庫都可以協助不同類型的大數據應用程式。接下來,我們分享哪些分散式資料庫在不同情況下比另一種資料庫運作得更好。 

可用性與一致性的比較

Cassandra 適用於需要經常寫入資料的使用情況,但並未針對經常更新或刪除資料進行優化。例如,組織使用 Cassandra 建立訊息系統、互動式資料處理解決方案以及即時感測器資料儲存。HBase 更適合需要資料一致性和頻繁處理的應用程式。例如,銀行、醫療保健和電信解決方案是使用 HBase 來分析大量資料。 

資料庫設定

Cassandra 更容易設定,原因是其是具有所有必要資料庫元件的獨立產品。不同於 Cassandra,HBase 運作需依賴多個 Hadoop 元件 (例如 Zookeeper、HDFS 主節點和 HDFS 資料節點)。設定可能很簡單,但在現實應用程式中維護多個相依性可能很具挑戰性。如果您已經使用 Hadoop 基礎架構,您可能會發現遷移到 HBase 比遷移到 Cassandra 更容易。 

差異摘要:Cassandra 與HBase

 

Cassandra

HBase

核心設計

使用主動-主動式架構。所有節點都處理讀/寫請求。

使用主要-次要架構。HBase 主要控制數個區域伺服器。 

關鍵元件

記錄表、提交日誌和 SS 表格。 

HBase 主要、區域伺服器和 Zookeeper。

資料模型

將數列的相關欄系列儲存在關鍵空間中。 

使用連續列鍵水平排列的欄系列。 

查詢語言

使用 Cassandra Query Language。

使用 shell 命令。

延遲 

資料擷取愈多,延遲愈高。 

愈多資料操作,延遲愈低。

輸送量

輸送量隨著更多資料操作而增加。

執行一定數量的操作後,輸送量會增加。 

讀取效能

讀取速度慢。閱讀分割區資料表以瞭解讀取位置。可能會發生資料不一致情況。

更佳的讀取效能和資料一致性。 

寫入效能

更佳的寫入效能。同時寫入日誌和快取。 

額外步驟。經由 Zookeeper 和 HBase 主要伺服器。 

安全性

將存取權限調高至角色層級。

將存取權限調高至單元層級。

資料分割

支援依序分割。

不支援依序分割。

節點通訊

使用八卦協議。

使用 Zookeeper 協議。

AWS 如何協助滿足 Cassandra 和 HBase 需求?

Amazon Web Services (AWS) 提供可擴展的雲端資料庫服務,可藉由這些服務以高效且經濟實惠的方式實作資料科學技術。可以使用以下 AWS 服務來支援您的 Cassandra 和 HBase 資料庫,而不須手動佈建基本的基礎架構:

  • Amazon Keyspaces(適用於 Apache Cassandra)是一種用於執行 Cassandra 高輸送量工作負載的線上資料庫服務。使用 Amazon Keyspace,可擴展應用程式,同時以單位數毫秒回應時間維持回應時間。 
  • 使用 Amazon EMR,可為大規模資料處理應用程式部署 HBase 叢集。在 EMR 上執行 HBase,透過備份 Amazon Simple Storage Service (Amazon S3) 儲存資料,可改善資料復原性。

立即建立帳戶,開始使用 AWS 上的大數據分析。