Cassandra資料模型


Cassandra中的資料模型與RDBMS中正常情況完全不同。 我們來看看Cassandra如何儲存資料。

群集

Cassandra資料庫分佈在執行的幾(多)台機器上。 最外層的容器被稱為包含不同節點的群集。 每個節點都包含一個副本,如果發生故障,副本將負責頂上。 Cassandra將節點以環形格式排列在群集中,並為其分配資料。

鍵空間

鍵空間(Keyspace)是Cassandra中資料的最外層容器。 以下是Cassandra中Keyspace的基本屬性:

  • 複製因子:它指定叢集中的機器數量,將接收相同資料的副本。
  • 複製放置策略:這是一個策略,如何資料將複製品放在環中。有三種型別的策略,如:

      1. 簡單策略(機架感知策略)
      1. 舊網路拓撲策略(機架感知策略)
      1. 網路拓撲策略(資料中心共用策略)
  • 列家族:列家族置於鍵空間之下。 鍵空間是一個或多個列族的列表的容器,而列族是一組行的容器。 每行包含已排序的列。列家族表示資料的結構。每個鍵空間至少有一個並且經常有很多列家族。

在Cassandra中,良好的資料模型非常重要,因為不良資料模型可能會降低效能,特別是當您嘗試在Cassandra上實現RDBMS概念時。

Cassandra資料模型規則

  • Cassandra不支援JOINS,GROUP BY,OR子句,聚合等等。因此必須按照需要儲存資料的方式儲存資料。
  • 最大化資料重複,因為Cassandra是分散式資料庫,資料重複提供即時可用性而無單點故障。

資料建模目標

在Cassandra中建模資料時,您應該有以下目標:

  • 在群集周圍均勻傳播資料:要在Cassandra群集的每個節點上傳播相等數量的資料,您必須選擇整數作為主鍵。 資料根據作為主鍵的第一部分的分割區鍵傳播到不同的節點。
  • 查詢資料時讀取的分割區數最小化:分割區用於將一組記錄與相同的分割區鍵繫結。 當讀取查詢發出時,它從不同的分割區收集不同節點的資料。

在許多分割區的情況下,需要存取所有這些分割區來收集查詢資料。 這並不意味著不應該建立分割區。 如果您的資料非常大,則無法在單個分割區上保留大量資料。 單個分割區將會減慢。 所以必須有一個平衡數量的分割區。