http://hudeyong926.iteye.com/blog/977152

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

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

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

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

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

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

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

例子:
系统会记录用户的访问足迹。用户可以查询他的这些访问足迹。
您在2011.02.03在群组B(链接)回复了C(链接)发表的帖子D(链接)。
当B被解散或D被删除后,不需要主动去清理这条数据。因为所有的访问足迹都是有有效期的,当有效期到了的时候,这条数据就会被自动清除。
但是当D被删除后,用户点击D链接会提示用户404。
相关文章
|
应用服务中间件 nginx Windows
windows下安装nginx (转载自:http://blog.163.com/njut_wangjian/blog/static/1657964252013327103716818/)
 1.  到nginx官网上下载相应的安装包,http://nginx.org/en/download.html;下载进行解压,将解压后的文件放到自己心仪的目录下,我的解压文件放在了d盘根目录下,如下图所示:          进入window的cmd窗口,输入如下图所示的命令,进入到nginx目录,使用“start nginx.exe ”进行nginx的安装,如下图所示:  安装成功后,
1051 0
|
JavaScript 前端开发 Java
dTree 动态生成树(http://luohua.iteye.com/blog/451453)
转自《http://luohua.iteye.com/blog/451453》,感谢分享! dTree 动态生成树 dTree是个很方便在页面生成树的 js 控件,如果你下载了,我猜里在几分钟之内便能在页面上显示出一颗树来。 它本身给的例子是通过一些静态数据构造树,下面我说一种通过查询的数据动态构造树的方法。 例子里没有真实的数据库操作,而是用一个
1819 0
|
JavaScript 前端开发 Java
DWR框架简单实例 (http://my.oschina.net/u/1790925/blog/366346)
文章转自《http://my.oschina.net/u/1790925/blog/366346》,感谢大牛分享! DWR框架简单实例    1、从DWR官网下载最新版本的jar包,地址:http://directwebremoting.org/dwr/downloads/index.html 2、将jar包放入WEB-INF的lib文件夹下。同时,dwr依赖于commons-l
4688 0
新blog地址: http://hengyunabc.github.io/
新blog地址 http://hengyunabc.github.io/ 新blog切换到github.io 上,先试用一段时间。
1120 0
|
Ubuntu
Ubuntu下装QQ2014(http://my.oschina.net/oscfox/blog/315951)
QQ登陆界面: QQ登陆之后: 1.首先我们需要下载一个 deb的 Wine QQ安装包 qq2014官方下载:http://www.longene.org/download/WineQQ2013SP6-20140102-Longene.deb 2.具体安装 32位系统安装说明: 1.如果之前安
2041 0
本Blog被http://www.dotnetnukeblogs.com/ 收录
本Blog被http://www.dotnetnukeblogs.com/ 收录:     DotNetNukeBlogs.com 由 DotNetNuke 核心成员 Chris Hammond 创建,目的是为了给DotNetNuke社区的领导者提供一个统一发布内容的地方,方便大家的使用。
|
Web App开发 存储 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
      前段时间公司hadoop集群宕机,发现是namenode磁盘满了, 清理出部分空间后,重启集群时,重启失败。 又发现集群Secondary namenode 服务也恰恰坏掉,导致所有的操作log持续写入edits.new 文件,等集群宕机的时候文件大小已经达到了丧心病狂的70G+..重启集群报错 加载edits文件失败。
910 0
|
存储 监控 数据库
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
为首次部署MongoDB做好准备:容量计划和监控 作者Mat Keep ,译者孙镜涛如果你已经完成了自己新的MongoDB应用程序的开发,并且现在正准备将它部署进产品中,那么你和你的运营团队需要讨论一些关键的问题: 最佳部署实践是什么? 为了确保应用程序满足它所必须的服务层次我们需要监控哪些关键指标? 如何能够确定添加分片的时机? 有哪些工具可以对数据库进行备份和恢复? 怎样才能安全地访问所有新的实时大数据? 本文介绍了硬件选择、扩展、HA和监控。
2595 0