1.延遲刪除
一條數(shù)據(jù)會(huì)被很多數(shù)據(jù)引用。當(dāng)被引用的數(shù)據(jù)刪除時(shí),引用的數(shù)據(jù)也需要?jiǎng)h除。這時(shí)候可以用延遲刪除的方法。
例子:
用戶發(fā)表的帖子,可以被轉(zhuǎn)發(fā)到很多地方。所有轉(zhuǎn)發(fā)過的貼都是對原帖的引用,用戶接著把他的原帖刪除,所有被轉(zhuǎn)發(fā)過的帖子也需要進(jìn)行清理。我們采用的是延遲刪除的方法,用戶操作時(shí),先直接刪除原帖,被轉(zhuǎn)發(fā)的貼,在點(diǎn)擊時(shí),會(huì)到原帖加載內(nèi)容,這時(shí)發(fā)現(xiàn)原帖已經(jīng)不存在,此時(shí)這條被點(diǎn)擊的轉(zhuǎn)發(fā)貼也會(huì)被刪除。
當(dāng)用戶訪問引用的數(shù)據(jù)時(shí),發(fā)現(xiàn)被引用的數(shù)據(jù)不存在,此時(shí)刪除引用的數(shù)據(jù)。
2.線下刪除
一條數(shù)據(jù)關(guān)聯(lián)到很多數(shù)據(jù)。但這條數(shù)據(jù)是所有其他數(shù)據(jù)的入口。
例子:
一個(gè)QQ群里,會(huì)有很多內(nèi)容,相冊,圖片等等。在解散QQ群時(shí)是不可能同步刪除和該群相關(guān)的所有數(shù)據(jù)的。此時(shí)可以用線下刪除的方法。先將QQ群的狀態(tài)置為inactive(解散)狀態(tài)。然后提交一條任務(wù),在指定的時(shí)候?qū)⑺泻驮?/span>QQ群相關(guān)的數(shù)據(jù)都刪除。任務(wù)可以在系統(tǒng)負(fù)載比較低的時(shí)候觸發(fā)。因?yàn)?/span>QQ群的狀態(tài)已經(jīng)被設(shè)置為inactive狀態(tài),它也不會(huì)再被其他人訪問到。所有訪問需要加狀態(tài)進(jìn)行判斷。
3.異步刪除
當(dāng)某個(gè)系統(tǒng)的服務(wù)和其他系統(tǒng)的服務(wù)做了集成后,業(yè)務(wù)數(shù)據(jù)就可能是相互關(guān)聯(lián)的。當(dāng)某個(gè)服務(wù)的數(shù)據(jù)被刪除時(shí),需要通知相關(guān)聯(lián)的所有系統(tǒng)刪除和他相關(guān)聯(lián)的數(shù)據(jù)。
例子:
用戶會(huì)對他所加入的群進(jìn)行了偏好設(shè)置,比如對某個(gè)群的評價(jià),是否接收該群的通知等等。而這些數(shù)據(jù)是存在用戶系統(tǒng)(其他服務(wù)器)上的。當(dāng)一個(gè)群組被解散時(shí),無法同步地調(diào)用用戶系統(tǒng)的服務(wù)刪除所有的數(shù)據(jù)。因?yàn)橐粋€(gè)群組可能有幾萬甚至更多的成員。此時(shí)可以用異步的方式通知用戶系統(tǒng),群組系統(tǒng)發(fā)送一條“群解散”消息給用戶系統(tǒng),用戶系統(tǒng)接收到消息后,會(huì)把所有相關(guān)聯(lián)的數(shù)據(jù)都清除。
延遲刪除結(jié)合使用:
如果數(shù)據(jù)量很大的話異步刪除也需要相當(dāng)長的時(shí)間,這時(shí)可以結(jié)合使用延遲刪除的方法。
當(dāng)用戶在用戶中心點(diǎn)擊某群的偏好設(shè)置時(shí),系統(tǒng)發(fā)現(xiàn)該群組已經(jīng)被刪除,就通知用戶該群不存在,并刪除相關(guān)的偏好設(shè)置。
線下刪除結(jié)合使用
數(shù)據(jù)量很大如果立即刪除會(huì)給系統(tǒng)突發(fā)地帶來相當(dāng)大的負(fù)載,甚至可能會(huì)引起用戶訪問的響應(yīng)率降低。這時(shí)需要采用線下刪除的方法,將刪除任務(wù)分割成很多很小的任務(wù)。分批地提交給系統(tǒng)定時(shí)處理。
4.不刪除
有些相關(guān)聯(lián)的數(shù)據(jù),重要性很低,又有有效期。我們是不會(huì)再花費(fèi)額外的代價(jià)去刪除它們的。
例子:
系統(tǒng)會(huì)記錄用戶的訪問足跡。用戶可以查詢他的這些訪問足跡。
您在2011.02.03在群組B(鏈接)回復(fù)了C(鏈接)發(fā)表的帖子D(鏈接)。
當(dāng)B被解散或D被刪除后,不需要主動(dòng)去清理這條數(shù)據(jù)。因?yàn)樗械脑L問足跡都是有有效期的,當(dāng)有效期到了的時(shí)候,這條數(shù)據(jù)就會(huì)被自動(dòng)清除。
但是當(dāng)D被刪除后,用戶點(diǎn)擊D鏈接會(huì)提示用戶404。