簡體   English   中英

Cassandra備份和還原一致性

[英]Cassandra backup and restore consistency

場景如下:我有1個Cassandra節點,其中有一個鍵空間,其中有2個表。 讓我們將這些表稱為A和B。現在,我有了一個腳本,可以在批處理語句中非常快速地將數據插入這兩個表中。 表A具有列“ k”和“值”。 表B具有列“ k”和“值”。 批處理查詢如下:

BEGIN BATCH
INSERT INTO A(k, value) VALUES ("a", 1);
INSERT INTO B(k, value) VALUES ("b", 1);
APPLY BATCH

值1會在每個連續的批查詢中保持遞增。 因此,如果表A具有(a,1000),則表B必須具有(b,1000)。 因為(記錄的)批處理查詢是原子的。

現在我的問題是,在這種情況下,nodetool快照如何工作? 我已經看過快照的源代碼,而且似乎是每個鍵空間,每個表一個接一個地執行快照的。 因此,例如,在時間0處,獲取表A的快照,快照中說(“ a”,100),然后在時間1處插入新的批查詢(值為101),然后在時間2處, b的快照,這意味着b的快照的值為101,而a的快照沒有。

如果以上解釋正確,那么恢復時不會造成問題嗎? 恢復后,表A如何獲得(“ a”,101)? 還是還原后表B沒有(“ b”,101)?

首先,原子性和隔離性之間存在細微的界限。 分批保證兩個刀片都將被應用(原子性),但它們保證將在完全相同的時間應用。 (隔離)

客戶端仍然能夠選擇一個而不讀取另一個。 此規則的唯一例外是,如果批次針對的是一行。

您說的很對,因為您會遇到所描述的問題。 在兩種表中數字都不相同的情況下,很有可能會出現這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM