1.延迟删除
一条数据会被很多数据引用。当被引用的数据删除时,引用的数据也需要删除。这时候可以用延迟删除的方法。
例子:
用户发表的帖子,可以被转发到很多地方。所有转发过的贴都是对原帖的引用,用户接着把他的原帖删除,所有被转发过的帖子也需要进行清理。我们采用 的是延迟删除的方法,用户操作时,先直接删除原帖,被转发的贴,在点击时,会到原帖加载内容,这时发现原帖已经不存在,此时这条被点击的转发贴也会被删 除。

当用户访问引用的数据时,发现被引用的数据不存在,此时删除引用的数据。

2.线下删除
一条数据关联到很多数据。但这条数据是所有其他数据的入口。
例子:
一个扣扣群里,会有很多内容,相册,图片等等。在解散扣扣群时是不可能同步删除和该群相关的所有数据的。此时可以用线下删除的方法。先将扣扣群的 状态置为 inactive(解散)状态。然后提交一条任务,在指定的时候将所有和该扣扣群相关的数据都删除。任务可以在系统负载比较低的时候触发。因为扣扣群的状 态已经被设置为inactive状态,它也不会再被其他人访问到。所有访问需要加状态进行判断。

3.异步删除
当某个系统的服务和其他系统的服务做了集成后,业务数据就可能是相互关联的。当某个服务的数据被删除时,需要通知相关联的所有系统删除和他相关联的数据。
例子:
用户会对他所加入的群进行了偏好设置,比如对某个群的评价,是否接收该群的通知等等。而这些数据是存在用户系统(其他服务器)上的。当一个群组被 解散时,无法同步地调用用户系统的服务删除所有的数据。因为一个群组可能有几万甚至更多的成员。此时可以用异步的方式通知用户系统,群组系统发送一条“群 解散”消息给用户系统,用户系统接收到消息后,会把所有相关联的数据都清除。

延迟删除结合使用:
如果数据量很大的话异步删除也需要相当长的时间,这时可以结合使用延迟删除的方法。
当用户在用户中心点击某群的偏好设置时,系统发现该群组已经被删除,就通知用户该群不存在,并删除相关的偏好设置。

线下删除结合使用
数据量很大如果立即删除会给系统突发地带来相当大的负载,甚至可能会引起用户访问的响应率降低。这时需要采用线下删除的方法,将删除任务分割成很多很小的任务。分批地提交给系统定时处理。

4.不删除
有些相关联的数据,重要性很低,又有有效期。我们是不会再花费额外的代价去删除它们的。

例子:
系统会记录用户的访问足迹。用户可以查询他的这些访问足迹。
您在2011.02.03在群组B(链接)回复了C(链接)发表的帖子D(链接)。
当B被解散或D被删除后,不需要主动去清理这条数据。因为所有的访问足迹都是有有效期的,当有效期到了的时候,这条数据就会被自动清除。
但是当D被删除后,用户点击D链接会提示用户404。

http://hudeyong926.iteye.com/blog/977152相关推荐

  1. dTree 动态生成树(http://luohua.iteye.com/blog/451453)

    转自<http://luohua.iteye.com/blog/451453>,感谢分享! dTree 动态生成树 dTree是个很方便在页面生成树的 js 控件,如果你下载了,我猜里在几 ...

  2. 导入工程时出现错误:Invalid project description http://berdy.iteye.com/blog/1115279...

    http://berdy.iteye.com/blog/1115279 new -> android project -> create project from exist source ...

  3. http://enki-ding-yeah-net.iteye.com/blog/1042644

    http://enki-ding-yeah-net.iteye.com/blog/1042644

  4. http://stamen.iteye.com/blog/1462899

    http://stamen.iteye.com/blog/1462899 [1] Java反射知识-->Spring IoC :http://www.iteye.com/topic/112308 ...

  5. http://hlhpyasd.iteye.com/blog/865865

    http://hlhpyasd.iteye.com/blog/865865 转载于:https://www.cnblogs.com/longshiyVip/p/5964965.html

  6. http://xmuzyq.iteye.com/blog/783218

    http://xmuzyq.iteye.com/blog/783218 在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Pro ...

  7. C语言下,获取文件信息 http://qimo601.iteye.com/blog/1517413

    http://qimo601.iteye.com/blog/1517413 C语言下,获取文件信息 博客分类: C/C++ C语言文件信息文件大小  C语言下,如何获取文件的生成时间,日期和文件大小等 ...

  8. 如何防止SQL注入 http://zhangzhaoaaa.iteye.com/blog/1975932

    如何防止SQL注入 博客分类: 技术转载数据库 转自:http://021.net/vpsfaq/152.html -----解决方案--------------------------------- ...

  9. 微信开发之获取OAuth2.0网页授权认证和获取用户信息进行关联(转:http://playxinz.iteye.com/blog/2249634)

    最近有做了关于微信公众号和自己网站用户进行用户关联授权登录的一个功能,主要是用户关注该公众号,点击会员中心,则会弹出需要关联授权的网页授权:OAuth2.0网页授权,然后用户同意获取用户信息,进行用户 ...

最新文章

  1. MATLAB学习笔记(一)——入门与操作
  2. OpenGL剪切平面和双面渲染
  3. openshift用户管理_OpenShift Express Web管理控制台:入门
  4. linux网络编程之网络应用设计模式、分层模型、通信过程
  5. Android TextView长按复制实现,Android复制文本
  6. 阿里云数据库8月刊:国内首款Cloud Native自研数据库POLARDB精彩亮相VLDB!
  7. 从Java类库看设计模式(4)
  8. C# SQL拼接字符串
  9. Java后端技术知识点汇总(思维导图)
  10. 回顾jpg/png格式图片的区别
  11. [区块链]对话区块链人工智能顶级实力公司ObEN
  12. 移动端H5调起第三方APP
  13. [蓝桥杯Python]:跑步训练----小蓝每天都锻炼身体。正常情况下,小蓝每天跑1千米。如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2千米。如果同时是周一-或月初,小蓝也是跑2千米。小蓝
  14. vue实现下拉二级联动_vue实现二级联动效果
  15. 《城市大脑系列建设标准规范》立项评审会胜利召开
  16. 微信小程序OTO商城(客户端)
  17. 联想昭阳E4电脑U盘安装Win10系统操作教学
  18. 穿越时间的蛀洞——书评《Java企业设计模式》
  19. 与计算机专业相关的英语科普短文,求科普类的简单的英语小短文
  20. (附源码)计算机毕业设计SSM电影网站系统

热门文章

  1. PythonGIS可视化—Matplot basemap工具箱
  2. JMeter的PUT请求,响应结果中文出现乱码的解决方法
  3. Python介绍与特点(自学python知识整理)
  4. Micronaut for Spring支持Spring Boot应用以Micronaut形式运行
  5. 1.8(学习笔记)监听器(Listener)
  6. 《计算机科学与工程导论:基于IoT和机器人的可视化编程实践方法第2版》一1.2.2 团队组建...
  7. Spring MVC 启动
  8. 一行Python代码
  9. C# MVC 项目下的路由配置-RouteConfig
  10. 重新认识块级元素--DIV