Delete
數據庫同步和軟刪除方案中的 Tombstone 表與已刪除標誌
我需要跟踪已刪除的項目以滿足客戶端同步需求。
一般來說,最好添加一個tombstone 表和一個觸發器來跟踪從伺服器數據庫中刪除一行的時間 - 基本上是在 tombstone 表中添加一個包含已刪除項目的數據的新行 - 還是將項目保留在原始表並將它們標記為已刪除,通常使用位類型的列,以指示刪除了一行,並在刪除發生時跟踪另一列?
一般來說,最好了解具體要求,而不是根據在大多數情況下最有效的設計決策。 任何一個都可能更可取。以下是一些需要收集的細節:
- 刪除需要多快?
- 取消刪除需要多快?
- 多久查詢一次已刪除的數據,是否會與未刪除的數據一起查詢?
- 對已刪除數據的查詢需要多快?
- 您是否還需要只保留已刪除的項目或更改?
- 你需要保持主表上的表/索引很小嗎?
- 數據庫平台上有哪些分區和/或更改跟踪技術可用?
- 有多少可用磁碟空間?
- 刪除是即時進行還是批量操作?