Cassandra - 簡介



Apache Cassandra 是一個高度可擴充套件、高效能的分散式資料庫,旨在跨多個商品伺服器處理大量資料,提供高可用性,且沒有單點故障。它是一種 NoSQL 資料庫。讓我們首先了解一下 NoSQL 資料庫的功能。

NoSQL 資料庫

NoSQL 資料庫(有時稱為 Not Only SQL)是一種資料庫,它提供了一種儲存和檢索資料的機制,不同於關係資料庫中使用的表格關係。這些資料庫是無模式的,支援輕鬆複製,具有簡單的 API,最終一致,並且可以處理海量資料。

NoSQL 資料庫的主要目標是擁有

  • 簡單的設計,
  • 水平擴充套件,以及
  • 對可用性的更精細控制。

NoSQL 資料庫與關係資料庫相比使用了不同的資料結構。這使得 NoSQL 中的一些操作更快。給定 NoSQL 資料庫的適用性取決於它必須解決的問題。

NoSQL 與關係資料庫

下表列出了區分關係資料庫和 NoSQL 資料庫的要點。

關係資料庫 NoSQL 資料庫
支援強大的查詢語言。 支援非常簡單的查詢語言。
它具有固定的模式。 沒有固定的模式。
遵循 ACID(原子性、一致性、隔離性和永續性)。 它僅“最終一致”。
支援事務。 不支援事務。

除了 Cassandra 之外,我們還有以下一些非常流行的 NoSQL 資料庫:

  • Apache HBase - HBase 是一個開源的、非關係型的、分散式的資料庫,其模型參考了 Google 的 BigTable,並用 Java 編寫。它是作為 Apache Hadoop 專案的一部分開發的,執行在 HDFS 之上,為 Hadoop 提供類似 BigTable 的功能。

  • MongoDB - MongoDB 是一個跨平臺的面向文件的資料庫系統,它避免使用傳統的基於表格的關係資料庫結構,而是採用類似 JSON 的文件以及動態模式,從而使某些型別應用程式中的資料整合更加輕鬆和快速。

什麼是 Apache Cassandra?

Apache Cassandra 是一個開源的、分散式的和去中心化/分散式儲存系統(資料庫),用於管理分佈在世界各地的海量結構化資料。它提供高可用服務,且沒有單點故障。

下面列出了一些 Apache Cassandra 的顯著特點:

  • 它是可擴充套件的、容錯的和一致的。

  • 它是一個面向列的資料庫。

  • 其分散式設計基於 Amazon 的 Dynamo,其資料模型基於 Google 的 Bigtable。

  • 它創建於 Facebook,與關係資料庫管理系統截然不同。

  • Cassandra 實現了一個 Dynamo 風格的複製模型,沒有單點故障,但添加了一個更強大的“列族”資料模型。

  • Cassandra 正在被一些最大的公司使用,例如 Facebook、Twitter、Cisco、Rackspace、eBay、Twitter、Netflix 等。

Cassandra 的特性

Cassandra 由於其出色的技術特性而變得如此受歡迎。以下是 Cassandra 的一些特性:

  • 彈性伸縮性 - Cassandra 具有高度的可擴充套件性;它允許根據需要新增更多硬體以容納更多客戶和更多資料。

  • 始終線上架構 - Cassandra 沒有單點故障,並且始終可用於無法承受故障的關鍵業務應用程式。

  • 快速線性擴充套件效能 - Cassandra 具有線性可擴充套件性,即隨著叢集中節點數量的增加,吞吐量也會增加。因此,它可以保持快速的響應時間。

  • 靈活的資料儲存 - Cassandra 可以適應所有可能的資料格式,包括:結構化、半結構化和非結構化資料。它可以根據您的需要動態適應資料結構的更改。

  • 輕鬆的資料分發 - Cassandra 提供了在需要的地方分發資料的靈活性,方法是在多個數據中心複製資料。

  • 事務支援 - Cassandra 支援原子性、一致性、隔離性和永續性 (ACID) 等屬性。

  • 快速寫入 - Cassandra 旨在執行在廉價的商品硬體上。它執行極快的寫入操作,並且可以儲存數百 TB 的資料,而不會犧牲讀取效率。

Cassandra 的歷史

  • Cassandra 是在 Facebook 為收件箱搜尋而開發的。
  • 它於 2008 年 7 月由 Facebook 開源。
  • Cassandra 於 2009 年 3 月被納入 Apache Incubator。
  • 自 2010 年 2 月起,它成為 Apache 的頂級專案。
廣告