軟刪除


我們知道,如果在業務界面上刪除一條數據,通常的做法是與后台通信,從數據庫表中刪除掉這一條記錄,這種方式通常被稱為硬刪除。然而這種方式會帶來一個弊端,即數據一旦刪除了,就真的永久刪除了,沒有后悔葯可以吃,也沒有辦法恢復。這樣,在一些場景中,比如需要保留用戶刪除的痕跡或能夠恢復刪除的數據的時候,硬刪除就沒有辦法滿足需求了。因此,相對於硬刪除,聰明的人們又想到了軟刪除。

軟刪除的概念

軟刪除又叫邏輯刪除或標記刪除,是一種對立於硬刪除的刪除方式。這種方式並不是真正的從數據庫表中把記錄刪除,而是通過特定的標記方式標記此記錄已被刪除(在查詢的時候過濾掉此記錄),這樣用戶在界面上看起來就像是數據真的被刪掉了,然而事實上卻是庫里還在,甚至明天還想再見他。

軟刪除的實現方式

軟刪除的實現通常有三種:

1.在表里添加布爾類型的字段,標記該記錄是否被邏輯刪除。

2.在表里添加刪除時間(默認為null),如果有刪除時間則表示此記錄被邏輯刪除,和第一種方式大差不差。

3.將邏輯刪除的數據插入到另外一個表里。

在上面的3種實現方式里,第1種方式算是最普遍的,也較為簡單。而第2種方式雖然相對於第一種方式來說會更嚴謹一些,因為還能有准確的刪除時間,但是在查詢的性能方面卻是比較差的,因為null值會導致全表掃描,導致查詢效率大打折扣。更聰明的做法可以將第1種方式和第二種方式混用,即只用第一種方式的字段做條件,這樣邏輯上會更嚴謹一些,也不會影響查詢性能。而第3種方式則其實是稍微有些偏離了軟刪除的概念,因為數據實際上還是從原來的表中刪除掉了,但是這種方式因為相當於對刪除的數據做了數據分離,因此在數據量比較大的情況下對數據庫性能會有一定的提升。

設計軟刪除的原則與總結

在設計軟刪除的時候,一定要考慮業務上是否一定需要軟刪除,如果不需要請不要畫蛇添足。

當在業務上需要軟刪除的情況下,就要開始考慮業務的數據量和讀寫的比例,從表數據量的角度去分析、優化數據庫的性能,就像上面說的那樣選擇不同的實現方式。

雖然軟刪除從邏輯上看更加嚴謹,且能夠保證數據的完整性,但這並不代表我們在任何時候都要使用軟刪除。當我們確定某些數據真的不需要的時候,硬刪除是十分必要的,因為這樣能減少數據庫表中的記錄數量,有效提升數據庫性能。

 

"人若能夠耐得住寂寞,就能夠少受許多痛苦和少出許多洋相。許多人的痛苦,都是因為不甘寂寞。"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM