`
ldd600
  • 浏览: 103814 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
47bb354f-8b5f-3ea6-a206-c7ead38c741c
Hyperic插件开发不完...
浏览量:11273
社区版块
存档分类
最新评论

海量数据的删除策略

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

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

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

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

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

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

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

例子:
系统会记录用户的访问足迹。用户可以查询他的这些访问足迹。
您在2011.02.03在群组B(链接)回复了C(链接)发表的帖子D(链接)。
当B被解散或D被删除后,不需要主动去清理这条数据。因为所有的访问足迹都是有有效期的,当有效期到了的时候,这条数据就会被自动清除。
但是当D被删除后,用户点击D链接会提示用户404。
分享到:
评论
20 楼 陈修恒 2011-06-02  
引用
延迟删除结合使用:
如果数据量很大的话异步删除也需要相当长的时间,这时可以结合使用延迟删除的方法。
当用户在用户中心点击某群的偏好设置时,系统发现该群组已经被删除,就通知用户该群不存在,并删除相关的偏好设置。

比较喜欢这种方式。
19 楼 zhulin10541 2011-06-02  
学习喽~~
18 楼 niumd 2011-06-01  
硬链接删除
17 楼 njyu 2011-03-15  
嗯 有待深入学习!
16 楼 yanaicheng 2011-03-14  
ldd600 写道
1.延迟删除
一条数据会被很多数据引用。当被引用的数据删除时,引用的数据也需要删除。这时候可以用延迟删除的方法。
例子:
用户发表的帖子,可以被转发到很多地方。所有转发过的贴都是对原帖的引用,用户接着把他的原帖删除,所有被转发过的帖子也需要进行清理。我们采用的是延迟删除的方法,用户操作时,先直接删除原帖,被转发的贴,在点击时,会到原帖加载内容,这时发现原帖已经不存在,此时这条被点击的转发贴也会被删除。

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

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

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

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

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

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

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

15 楼 itcrown2005 2011-03-14  
  这个算法已经很成熟了
14 楼 ldd600 2011-03-14  
dir_murong 写道
学习了,不过有时候业务上决定你采用的方案,当上亿条数据 需要删除的时候 就很恐怖了。

比方说,年终了,银行要结算一些数据,从A库倒到B库,A库里要删除数据,这时候可能是上亿的数据量。同时这样的删除可能因为业务需要一条一条删而且这一条删除之后,下一条数据的删除之前需要根据这一条删除后,B库里发生的变化而进行校验。那么IO量之大就可想而知了。 这样的情况,怎么处理比较合适

能不能按时间分表?
13 楼 ldd600 2011-03-14  
huansinho 写道
ldd600 写道
lzg406 写道
海量数据删除还真是头疼的事情,我用的是“分解动作”,还是熬不过数据库,什么事务日志不够,表空间不够。。。

恩,删除时要考虑分批多线程删除。



分批为啥还有多线程?是否需要考虑锁的问题?


锁,具体是什么case呢? 分享一下。

为了提高清除的速率。不过线程数不能太多,IO也会增加。

每一批都是不同的行,多线程分批删除是不需要锁的。建议不要用锁,互联网应用尽量避免用锁,除非是企业级应用,或者跟钱相关的东东。DB底层每个CUD操作都会上锁。如果涉及到锁,业务就比较复杂了。
12 楼 huansinho 2011-03-12  
ldd600 写道
lzg406 写道
海量数据删除还真是头疼的事情,我用的是“分解动作”,还是熬不过数据库,什么事务日志不够,表空间不够。。。

恩,删除时要考虑分批多线程删除。



分批为啥还有多线程?是否需要考虑锁的问题?
11 楼 dir_murong 2011-03-11  
学习了,不过有时候业务上决定你采用的方案,当上亿条数据 需要删除的时候 就很恐怖了。

比方说,年终了,银行要结算一些数据,从A库倒到B库,A库里要删除数据,这时候可能是上亿的数据量。同时这样的删除可能因为业务需要一条一条删而且这一条删除之后,下一条数据的删除之前需要根据这一条删除后,B库里发生的变化而进行校验。那么IO量之大就可想而知了。 这样的情况,怎么处理比较合适
10 楼 ldd600 2011-03-10  
lzg406 写道
海量数据删除还真是头疼的事情,我用的是“分解动作”,还是熬不过数据库,什么事务日志不够,表空间不够。。。

恩,删除时要考虑分批多线程删除。
9 楼 lzg406 2011-03-10  
海量数据删除还真是头疼的事情,我用的是“分解动作”,还是熬不过数据库,什么事务日志不够,表空间不够。。。
8 楼 ldd600 2011-03-10  
段箭*残箫 写道
lz在TX上班?

。非也,文中例子中用的是别名。
7 楼 段箭*残箫 2011-03-09  
lz在TX上班?
6 楼 t42dw 2011-03-09  
我没有相关经验,看了你的贴真是受教了
5 楼 likekelly 2011-03-09  
总结的很好,收藏
4 楼 ak121077313 2011-03-08  
删除的最大问题是你不知道代码里面那一句操作引用了这条数据。

错误的删除结果非常恐怖
3 楼 renwe2007 2011-03-08  
思路很好啊,学习!
2 楼 ldd600 2011-02-26  
piao_bo_yi 写道
恩,思路的确是这样,思想就是分解动作、延迟动作、忽略动作。不过把这些东西灵活结合起来,真是件艺术。


哈哈。精辟,动作还分主动和被动。
1 楼 piao_bo_yi 2011-02-26  
恩,思路的确是这样,思想就是分解动作、延迟动作、忽略动作。不过把这些东西灵活结合起来,真是件艺术。

相关推荐

    一种基于云计算的海量数据分布式存储策略.pdf

    本文介绍了一种基于云计算的海量数据分布式存储策略,该策略通过划分服务区域并采用多层服务器集群的方式,实现了用户无论在何时何地都能高效、正确、完整地访问所需数据的目标。该策略还解决了数据副本数量的问题,...

    百亿级别海量数据删除方案(不停机维护)

    ### 百亿级别海量数据删除...综上所述,对于百亿级别的海量数据删除工作,在不停机维护的前提下,需要综合运用多种技术和策略,确保数据删除的高效性和安全性。同时,也需要密切监控系统的运行状态,确保业务不受影响。

    MySQL海量数据查询优化策略.

    在处理MySQL海量数据查询优化时,我们需要关注的策略包括但不限于以下几点: 1. 优化索引使用:避免全表扫描至关重要。为此,应当在查询条件(WHERE)和排序(ORDER BY)涉及的列上创建索引。索引有助于数据库管理...

    如何处理海量数据.pdf

    ### 如何处理海量数据 #### 一、挑战与难点 ...综上所述,处理海量数据需要综合运用多种技术和策略。只有深入了解这些技术和策略,并结合具体场景灵活运用,才能有效地管理并充分利用这些宝贵的资源。

    虚拟列表快速显示海量数据

    在IT行业中,尤其是在开发大型数据应用时,如何高效地处理和显示海量数据是一个常见的挑战。`DataGridView`控件是Windows Forms应用程序中常用的一种用于显示表格数据的组件,它提供了丰富的功能,包括排序、筛选和...

    大数据量,海量数据 处理方法总结

    ### 大数据量,海量数据处理方法总结 在IT领域,特别是大数据分析、数据库管理和算法设计方面,处理海量数据的能力是至关重要的技能之一。本文旨在总结处理大数据量、海量数据的有效方法,涵盖从理论基础到实际应用...

    海量数据查询优化

    在处理海量数据时,有效的查询优化策略至关重要。以下是一些优化查询性能的方法: 1. **选择合适的索引策略**:根据查询模式创建索引,特别是对频繁出现在WHERE子句中的列。考虑创建复合索引,如果查询经常基于多列...

    海量数据处理总结(大量数据处理)

    本文将围绕“海量数据处理”这一主题,详细探讨几种核心的技术方法,包括Bloom Filter、Hashing以及Bit-Map,它们在实际场景中的应用以及优化策略。 #### 一、Bloom Filter:高效的空间换时间 Bloom Filter是一种...

    SQL 海量数据查询

    ### SQL Server 海量数据处理:查询、插入与删除 在现代数据分析与企业级应用中,高效处理海量数据是IT专业人员必须掌握的关键技能之一。本文将深入探讨SQL Server环境下如何进行大规模数据的操作,包括查询、插入...

    C++海量数据求最大值程序

    在C++编程中,处理海量数据是一项挑战,尤其是在找出数据中的最大值或前n个最大值时。这里我们将深入探讨如何利用数据结构有效地解决这个问题。首先,我们要理解,当面对大规模数据时,直接使用简单的线性搜索算法是...

    海量数据处理的方法

    ### 海量数据处理的方法详解 #### 一、Bloom Filter **定义**: Bloom Filter是一种高效的数据结构,用于快速判断一个元素是否在一个集合中。它使用位数组和多个哈希函数来实现。虽然Bloom Filter可能会产生误报...

    python 做海量数据处理

    在Python中进行海量数据处理是一项挑战,因为Python解释器在内存管理和性能方面相对于其他专为大数据设计的语言(如Java或C++)可能稍显不足。然而,通过一些策略和技巧,我们可以有效地处理大规模数据。以下是从...

    常见的海量数据处理方法

    ### 常见的海量数据处理方法 在大数据时代,如何高效、准确地处理海量数据是许多企业和组织面临的关键挑战之一。本文将详细介绍几种实用的数据处理方法,包括但不限于算法优化和技术选择,旨在帮助读者更好地理解和...

    大数据量,海量数据处理方法总结[转][文].pdf

    【大数据量,海量数据处理方法总结】 大数据量的处理是现代信息技术领域的重要课题,尤其在互联网巨头如百度、谷歌和腾讯等公司中,这类问题尤为常见。本文将概述几种处理海量数据的有效方法,包括Bloom Filter、...

    海量数据的MySQL数据集

    综上所述,“海量数据的MySQL数据集”是一个丰富的资源,涵盖了MySQL在大数据处理中的各种技术,包括优化策略、导入方法、存储引擎选择、数据冗余和复制、以及数据分析。对开发者和数据分析师来说,这是一个学习和...

    论文研究-海量数据快速批量处理的研究与实现.pdf

    本文是关于海量数据快速批量处理的研究与实现的论文,重点研究了在数据库应用中如何快速大批量抽取和处理数据,并针对特定需求提出了基于共性特征的数据集进行交互式批量处理和批量加工的实现方法。 1. 海量数据的...

    海量数据去重的Hash与BloomFilter,bitmap1

    本文将深入探讨两种常用的技术:哈希和布隆过滤器,以及它们在处理海量数据时的应用。 哈希算法是数据去重的基础,它能够将任意大小的数据映射为固定长度的哈希值。在分布式一致性哈希算法中,哈希空间被组织成一个...

    基于文件路径的重复数据删除集群的数据路由策略 (2014年)

    重复数据删除集群是解决不断增长的海量数据备份需求的一种有效方法。它的关键问题是数据路由策略,即如何把数据合理分配到集群内的各个节点。目前的数据路由策略利用文件或者数据段的最小数据块签名计算路由目标节点,...

    大存储数据检索删除工具

    "大存储数据检索删除工具"的标题表明,它专注于在海量数据环境中进行快速查找和移除信息。 大数据,作为标签之一,是指那些传统数据处理工具无法有效管理的海量、高速生成的数据集合。这些数据可能来自各种来源,...

Global site tag (gtag.js) - Google Analytics