這個問題是關於NoSQL(例如採取cassandra)。擺脫關於NoSQL數據庫的困惑
確實,當您使用沒有數據複製的NoSQL數據庫時,您沒有一致性問題?也不是在訪問併發的情況下?
如果在兩個分區中可能多次寫入同一行的分區,會發生什麼情況?當分區不見了時,使用哪個寫入值?假設你使用N = 5,W = 3,R = 3。這意味着你有保證一致性的權利?使用這個法定人數有多好?有3個節點返回數據不是一個很大的開銷嗎?
您能否在cassandra的每個查詢基礎上指定是否希望查詢保證一致性?例如,你做一個插入查詢,並且你想強制所有副本在讀取操作返回值之前完成插入操作?
如果您有:員工{PK:employeeID,departmentId,employeeName,生日}和部門{PK:departmentID,departmentName},並且想要獲得具有特定部門名稱的所有員工的生日。兩個問題:
- 你不能要求所有與給定的生日的員工(因爲你只能在主鍵查詢)
- 你無法加入員工和部門列的家庭,因爲加入是不可能的。
所以你可以做的是創建一個列族:
departmentBirthdays {PK:(DEPARTMENTNAME,生日),[員工-衛生組織生日,此結果]}
在這種情況下,每當員工被解僱/僱用時,都必須在departmentBirthday專欄中刪除/添加。這個過程是否必須手動完成?所以你必須手動創建查詢來更新所有冗餘/非規範化數據?