我想對新聞訂閱記錄實施邏輯刪除以支持稍後撤消。
系統正在生產中,所以任何解決方案都應該支持現有數據。
向記錄插入記錄是冪等的,因此插入已刪除的記錄(具有相同的主鍵)不應該將其刪除。
任何解決方案都應支持查詢以檢索現有或已刪除記錄的頁面。支持現有Feed表的邏輯刪除
飼料表:
CREATE TABLE my_feed (
tenant_id int,
item_id int,
created_at timestamp,
feed_data text,
PRIMARY KEY (tenant_id, created_at, feed_id))
WITH compression = { 'sstable_compression' : 'LZ4Compressor' }
AND CLUSTERING ORDER BY (created_at DESC);
有我有想過,但都具有嚴重的缺陷兩種方法:
1.將已刪除的記錄到一個不同的表。查詢是微不足道的,不需要遷移,但冪等插入似乎很困難(只能在插入之前讀取?)。
2.添加is_deleted列。爲該列創建輔助索引以支持查詢。冪等插入似乎更容易支持(輕量級事務或更新技巧)。 主要缺點是較舊的記錄具有空值,因此需要數據遷移。
還有第三種更優雅的方法嗎?你是否支持上述建議之一?
我需要防止已經被刪除的記錄重新生效,因爲系統設計爲可以多次發送單個記錄(重試,遷移,自我修復過程)。在這種情況下,預計插入記錄後,除非用戶將其刪除,否則不會更改。 – 2014-10-27 06:31:35
關於'is_deleted':假設在查詢中始終指定分區鍵(tenant_id),則輔助索引對低基數字段也應該有效:[http://stackoverflow.com/q/26439396/3950710] – 2014-10-27 06:49:41