我目前正在開發cassandra源代碼(2.0.4),我想知道如何使用類ColumnFamily中的方法isMarkedForDelete()。如果我用一個鍵插入一行,該方法返回false,如果我刪除該行,則返回true。這就是我期望的方式;-)但是,這就是我想知道的,如果我再次使用相同的鍵插入一行,該方法仍然返回false,儘管該行不會被刪除(因爲它是一個具有相同鍵的新行)。看起來,刪除並重新插入的行始終保持標誌,如果它在過去被刪除一次。我如何可靠地確定一行是否被刪除? 在此先感謝!檢查行是否被刪除
Q
檢查行是否被刪除
1
A
回答
6
刪除是卡桑德拉是通過寫一個新的行被稱爲墓碑來完成的。邏輯刪除將確保該行不會在任何查詢中返回(其中一個邏輯刪除已在所有節點上達到完全一致)。
該行實際上是從當以下的SSTables刪除滿意:
- 壓實發生
- 墓碑記錄比對錶gc_grace_seconds舊的(默認爲10天)
使用已存在的鍵插入行不會導致錯誤,因爲Cassandra中的數據結構的行爲非常像Java Map。使用相同的鍵「放入」一行只會覆蓋插入的列值,併成功。
確定行是否已被刪除的最佳方法是查詢行並確保查詢中未返回該行。
我不確定你正在使用哪個客戶端,但是使用C * 2.0,你應該使用DataStax Java Driver(當前版本爲2.0.2)。
相關問題
- 1. SSIS檢查記錄是否被刪除
- 2. 檢查視圖是否已被刪除?
- 3. 檢查DateTimePicker日曆是否被刪除
- 4. 檢查實體是否被刪除
- 5. 檢查是否安全刪除一行
- 6. Django Formset - 檢查行標記是否被刪除
- 7. RichTextBox - 檢查換行符是否被刪除
- 8. 檢測通知是否已被刪除
- 9. 檢查超時是否已被清除?
- 10. 如何檢測空間是否已被刪除或刪除
- 11. 使用刪除鍵檢查下一個項目是否被刪除
- 12. 如何檢查文件是否可以被刪除
- 13. jQuery檢查正確的元素是否被「刪除」
- 14. 如何檢查註冊表文件夾是否被刪除
- 15. 檢查領域對象是否被刪除
- 16. 檢查元素是否已被刪除JQuery
- 17. 如何檢查表格是否已被刪除?
- 18. 如何檢查記錄是否已被刪除
- 19. 如何檢查TabLayout中的Tab是否已被刪除?
- 20. 如何檢查文件是否被創建/刪除/更改(Bash)
- 21. mediawiki:檢查當前頁面是否被刪除頁面
- 22. Doctrine2 - 檢查相關條目是否被刪除(單向關係)
- 23. 在PHP中,檢查文件是否可以被刪除
- 24. 檢查是否OU從意外刪除
- 25. 檢查記錄是否老刪除它
- 26. 是否可以刪除「檢查元素」?
- 27. 是否有可能檢查一個類是否在jquery中被刪除
- 28. 檢查行是否被插入
- 29. 是否有可能獲得一行被刪除的SQL查詢?
- 30. 檢查是否有任何複選框被檢查敲除 - PhoneJS
感謝您的回答!我理解墓碑的原則是爲了標記一行刪除,稍後在一個壓縮文件中完成。但是爲什麼在從SSTables實際刪除行之前,如果用相同的鍵重新插入行,邏輯刪除不會被刪除? – user3581199
如果在刪除行之後再次插入該行,則該行鍵的邏輯刪除不再是該行鍵的最新「寫入」,因此此時邏輯刪除不相關。 –