1.延遲删除
一條資料會被很多資料引用。當被引用的資料删除時,引用的資料也需要删除。這時候可以用延遲删除的方法。
例子:
使用者發表的文章,可以被轉發到很多地方。所有轉發過的貼都是對原帖的引用,使用者接着把他的原帖删除,所有被轉發過的文章也需要進行清理。我們采用 的是延遲删除的方法,使用者操作時,先直接删除原帖,被轉發的貼,在點選時,會到原帖加載内容,這時發現原帖已經不存在,此時這條被點選的轉發貼也會被删 除。
當使用者通路引用的資料時,發現被引用的資料不存在,此時删除引用的資料。
2.線下删除
一條資料關聯到很多資料。但這條資料是所有其他資料的入口。
一個扣扣群裡,會有很多内容,相冊,圖檔等等。在解散扣扣群時是不可能同步删除和該群相關的所有資料的。此時可以用線下删除的方法。先将扣扣群的 狀态置為 inactive(解散)狀态。然後送出一條任務,在指定的時候将所有和該扣扣群相關的資料都删除。任務可以在系統負載比較低的時候觸發。因為扣扣群的狀 态已經被設定為inactive狀态,它也不會再被其他人通路到。所有通路需要加狀态進行判斷。
3.異步删除
當某個系統的服務和其他系統的服務做了內建後,業務資料就可能是互相關聯的。當某個服務的資料被删除時,需要通知相關聯的所有系統删除和他相關聯的資料。
使用者會對他所加入的群進行了偏好設定,比如對某個群的評價,是否接收該群的通知等等。而這些資料是存在使用者系統(其他伺服器)上的。當一個群組被 解散時,無法同步地調用使用者系統的服務删除所有的資料。因為一個群組可能有幾萬甚至更多的成員。此時可以用異步的方式通知使用者系統,群組系統發送一條“群 解散”消息給使用者系統,使用者系統接收到消息後,會把所有相關聯的資料都清除。
延遲删除結合使用:
如果資料量很大的話異步删除也需要相當長的時間,這時可以結合使用延遲删除的方法。
當使用者在使用者中心點選某群的偏好設定時,系統發現該群組已經被删除,就通知使用者該群不存在,并删除相關的偏好設定。
線下删除結合使用
資料量很大如果立即删除會給系統突發地帶來相當大的負載,甚至可能會引起使用者通路的響應率降低。這時需要采用線下删除的方法,将删除任務分割成很多很小的任務。分批地送出給系統定時處理。
4.不删除
有些相關聯的資料,重要性很低,又有有效期。我們是不會再花費額外的代價去删除它們的。
系統會記錄使用者的通路足迹。使用者可以查詢他的這些通路足迹。
您在2011.02.03在群組b(連結)回複了c(連結)發表的文章d(連結)。
當b被解散或d被删除後,不需要主動去清理這條資料。因為所有的通路足迹都是有有效期的,當有效期到了的時候,這條資料就會被自動清除。
但是當d被删除後,使用者點選d連結會提示使用者404。