Cassandra

Apache Cassandra 如何處理動態列集衝突?

  • March 5, 2014

我知道 Apache Cassandra 中的每一列都附加了一個時間戳,並且通過查看時間戳或比較值來確定性地解決單個列的讀取衝突。

假設我將一列添加到動態列集中。我將此列寫入單個節點。然後,我稍後將另一列添加到同一個列儲存,但這次添加到另一個節點。Apache Cassandra 如何合併這兩者?合併後兩列都會存在嗎?

考慮 cassandra 數據庫的最佳方式不是作為不同節點上的一組數據庫,而是作為一個單獨的數據庫。將列添加到第一個節點會將其添加到所有其他節點。數據的實際寫入次數取決於您的複制策略和複製因子,但數據的每個副本都是相同的。

因此,如果您告訴第一個節點一個新列,第二個節點將自動理解它並能夠訪問該數據。如果您告訴第二個節點同一列中的不同數據,它將覆蓋舊數據或添加新數據,具體取決於您正在寫入的行中是否已有數據。

如果要向第二個節點添加新列,則該列中的所有數據和第一列中的數據將同時存在,並且可以通過任一/任何節點進行查詢。

引用自:https://dba.stackexchange.com/questions/60071