走自己的路

          路漫漫其修遠兮,吾將上下而求索

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            50 隨筆 :: 4 文章 :: 118 評論 :: 0 Trackbacks

          1.延遲刪除

          一條數據會被很多數據引用。當被引用的數據刪除時,引用的數據也需要刪除。這時候可以用延遲刪除的方法。

          例子:

          用戶發表的帖子,可以被轉發到很多地方。所有轉發過的貼都是對原帖的引用,用戶接著把他的原帖刪除,所有被轉發過的帖子也需要進行清理。我們采用的是延遲刪除的方法,用戶操作時,先直接刪除原帖,被轉發的貼,在點擊時,會到原帖加載內容,這時發現原帖已經不存在,此時這條被點擊的轉發貼也會被刪除。

           

          當用戶訪問引用的數據時,發現被引用的數據不存在,此時刪除引用的數據。

           

          2.線下刪除

          一條數據關聯到很多數據。但這條數據是所有其他數據的入口。

          例子:

          一個QQ群里,會有很多內容,相冊,圖片等等。在解散QQ群時是不可能同步刪除和該群相關的所有數據的。此時可以用線下刪除的方法。先將QQ群的狀態置為inactive(解散)狀態。然后提交一條任務,在指定的時候將所有和該QQ群相關的數據都刪除。任務可以在系統負載比較低的時候觸發。因為QQ群的狀態已經被設置為inactive狀態,它也不會再被其他人訪問到。所有訪問需要加狀態進行判斷。

           

          3.異步刪除

          當某個系統的服務和其他系統的服務做了集成后,業務數據就可能是相互關聯的。當某個服務的數據被刪除時,需要通知相關聯的所有系統刪除和他相關聯的數據。

          例子:

          用戶會對他所加入的群進行了偏好設置,比如對某個群的評價,是否接收該群的通知等等。而這些數據是存在用戶系統(其他服務器)上的。當一個群組被解散時,無法同步地調用用戶系統的服務刪除所有的數據。因為一個群組可能有幾萬甚至更多的成員。此時可以用異步的方式通知用戶系統,群組系統發送一條“群解散”消息給用戶系統,用戶系統接收到消息后,會把所有相關聯的數據都清除。

           

          延遲刪除結合使用:

          如果數據量很大的話異步刪除也需要相當長的時間,這時可以結合使用延遲刪除的方法。

          當用戶在用戶中心點擊某群的偏好設置時,系統發現該群組已經被刪除,就通知用戶該群不存在,并刪除相關的偏好設置。

           

          線下刪除結合使用

          數據量很大如果立即刪除會給系統突發地帶來相當大的負載,甚至可能會引起用戶訪問的響應率降低。這時需要采用線下刪除的方法,將刪除任務分割成很多很小的任務。分批地提交給系統定時處理。

           

          4.不刪除

          有些相關聯的數據,重要性很低,又有有效期。我們是不會再花費額外的代價去刪除它們的。

           

          例子:

          系統會記錄用戶的訪問足跡。用戶可以查詢他的這些訪問足跡。

          您在2011.02.03在群組B(鏈接)回復了C(鏈接)發表的帖子D(鏈接)。

          B被解散或D被刪除后,不需要主動去清理這條數據。因為所有的訪問足跡都是有有效期的,當有效期到了的時候,這條數據就會被自動清除。

          但是當D被刪除后,用戶點擊D鏈接會提示用戶404

           



          posted on 2011-02-24 09:30 叱咤紅人 閱讀(2489) 評論(0)  編輯  收藏 所屬分類: Oracle
          主站蜘蛛池模板: 驻马店市| 拉萨市| 荔浦县| 牙克石市| 浮山县| 巴东县| 禄丰县| 平安县| 白玉县| 达州市| 丹寨县| 通山县| 密山市| 宁强县| 漳州市| 常熟市| 喀喇| 从化市| 新宾| 岳阳市| 陇南市| 松阳县| 吴旗县| 新乐市| 仁寿县| 河北省| 安陆市| 得荣县| 红原县| 富平县| 朝阳区| 长丰县| 平潭县| 福泉市| 茂名市| 瑞丽市| 广州市| 昌邑市| 邳州市| 鄂伦春自治旗| 信丰县|