火龙果软件-海量数据处理小结
火龙果软件-腾讯-游戏产品运营事故案例介绍

火龙果整理
网游运营事业部组织图
部门总经理
市场部
策划部
客服部
技术部
海外部
渠道部
市场策划组
网站设计组
翻译
测试
策略
网络游戏事业部的组织架构图
火龙果整理
《凯旋》公测之后,为了迎接十一长假,策划希望策划一些线上活 动,继续冲高在线,Mini Boss活动就此出炉。
火龙果整理
• 只有合理的将一个整体任务的结果责任赋予某人,才能让 其拥有与这个责任对等的权力来制约和控制整个事情。 • 经验必须是沉积在每个人身上,而不是整个团队,富有经 验的的产品经理是一个团队的重要财富。
火龙果整理
现在的运营团队工作模型
• 一个运营团队的三层工作模型
火龙果整理
– 程序实现后提交测试组测试两轮,在测试中因为没有使用大量QB来进行真实的模 拟测试,所以居然没有发现概率方面存在异常;
– 种种错误累加起来使26%概率的特等奖终于出现在了外网环境中; – 从当晚8点多发布活动到10点之前关闭这个活动,仅一个多小时共产生游戏币21个 亿,有700多名用户参与了刷取游戏币; – 由于钱的数量巨大,玩家四处转移游戏币。而冻结账户方面没有预案,虽然紧急 处理及时,但冻结不彻底,扣款程序又出问题等, 最终损失还是构成了一级事故 ; – 事故发生后对员工和相关领导都受到了处罚。
– 经此打击,更多的活跃玩家离开了凯旋,游戏在线下跌到1万余。
火龙果整理
对于回档游戏数据,团队既没有成熟的运营处理预案,也没有进行过任何 演练,迟钝的反应和生硬的处理手法显现出了运营团队的稚嫩。
火龙果整理
《凯旋》产品
• 在白装备事件中,我们得到了哪些教训呢? • • • • • 对于网游产品,测试部门是一定需要专业重点建设的; 对于紧急事故必须有完备的处理预案和责任人制度; 对于重大的备份恢复操作,平时要经常演习熟悉; 对于风险评估和具体应对,我们还需要更多的经验; 对于用户管理和运营维护方面的经验缺乏,舆论导向控制 不力,用户反馈收集缓慢,信息不全,用户体验很差; • 最重要的是,我们需要一个符合网游产品运营特点的团队 管理结构。
数据分析处理工作总结

数据分析处理工作总结在过去的一年中,我担任数据分析处理工作。
通过对各种数据的收集和分析,我深入了解到了数据分析的重要性和挑战,同时也在实践中不断提升自我能力和技能。
在本文中,我将总结我在数据分析处理工作中的一些心得和经验。
一、数据收集和整理在数据分析处理的过程中,数据的收集和整理是非常重要的。
首先,我们需要确定分析目标,明确需要收集哪些数据。
然后,我们可以通过各种途径获取数据,如数据库查询、数据采集工具、第三方数据提供商等。
在收集数据的同时,我们必须确保数据的准确性和完整性,清理掉可能存在的错误和冗余数据。
二、数据清洗和预处理收集到的原始数据通常包含一些噪音和不规则性。
因此,在数据分析之前,我们通常需要对数据进行清洗和预处理。
清洗数据的目标是去除异常值和缺失值,并对数据进行校验和纠正。
预处理数据的目标是对数据进行标准化、归一化、去重等操作,以便后续的分析和建模。
三、数据分析和建模在数据清洗和预处理之后,我们可以进行数据分析和建模。
数据分析的目标是通过统计分析、数据挖掘等方法,发现数据中的潜在规律和趋势。
数据建模的目标是基于已有数据,构建模型来预测未来的趋势和结果。
在数据分析和建模的过程中,需要根据实际情况选择合适的方法和工具,如统计学、机器学习等,并对结果进行评估和优化。
四、结果呈现和报告撰写数据分析的最终目标是将结果呈现给相关人员,并撰写相应的报告。
在呈现结果的过程中,我们通常使用数据可视化的方法,如图表、图表等,以便更直观地展示分析结果。
在撰写报告的过程中,我们需要将分析方法、结果和结论进行逻辑化和系统化的整理,以便读者可以更好地理解和应用。
五、团队合作和自我提升在数据分析处理工作中,团队合作和自我提升是非常重要的。
团队合作可以促进信息共享和协同工作,提高工作效率和成果。
自我提升包括不断学习和掌握新的数据分析方法和工具,提高自身的分析和解决问题的能力。
通过这一年的工作总结,我意识到数据分析处理对于企业的发展和决策具有重要的意义。
火龙果软件--Oracle数据库

火龙果整理
Database Architecture
数据库结构 (Database Architecture) Oracle 数据库结构包括物理(physical)和逻辑(logical)结构 • 物理(physical)结构包括控制文件(control files), 在线重作日志(online redo log files), 和数据文件(data files). • 逻辑logical结构包括表空间(tablespaces), 段(segments), 区间(extents), 和数据块(data blocks). Oracle server 可以有条理的通过表空间以及 段、扩展、数据块控制磁盘空间 表空间(Tablespaces) Oracle database 的数据存储在表空间中。
– An Oracle database can be logically grouped into smaller logical areas of space known as tablespaces. – 一个 tablespace 只能同时属于一个database。 – 每个 tablespace 包含一个或多个操作系统文件-数据文件(data files). – 一个 tablespace 可能包含一个或多个segments. – Tablespaces 可以在数据库运行时使其在线。 – 除了SYSTEM tablespace 或 有活动回滚段的 tablespace ,tablespaces 可以被离线(offline)。 – Tablespaces 可以在读/写之间切换。
火龙果整理
火龙果整理
Architecture and Administration
火龙果整理
数据分析的工作总结7篇

数据分析的工作总结7篇只有依据个人的实际工作能力展开写作,才可以将工作总结写得更有价值,将工作总结写好,我们可以更好的找出工作中的问题,下面是本店铺为您分享的数据分析的工作总结7篇,感谢您的参阅。
数据分析的工作总结篇1今年以来,我校加大信息化基础建设,严格落实信息系统安全及保护,从源头做起,不断提升了信息基础安全理念,强化信息技术安全管理和保障,加强对包括设备安全,数据安全,信息安全等信息化建设保障,以信息化促进学院业务管理的精简化和标准化。
一、信息等级化分类,安全分类化保护。
我校网络管理信息化管理现状,自网络信息中心(以下简称中心)成立时起,我中心制订了宿舍网络使用条款服务器托管等安全条款,此八年以来,保障了广大师生网络使用及业务系统安全,未因网络出现重大安全问题,未有因业务系统托管而出现硬件无法修复、数据被盗等基础保障。
本年工作进度报告:1、服务系统保护、上学期我中心开始了安全等级建设,确立了服务系统安全分等级保护目标,重要信息重点保护,次要信息次级保护原则,针对原来一个系统多个应用的服务进行了应用分离,减少一个服务出题问题,多个业务受影响等问题,今年购买了存储服务器和服务器防火墙两个重要基础安全设备,针对我校业务系统保障,对学校官网、精品资源共享课网、一卡通等数据备份。
使用了硬件防火墙对公开业务数据安全保护,现已对官网、青果系统、数字化校园系统进行ips保护、web应用防护,其它系统进行安全审计防范等安全设施。
2、基础网络保障、今年我中心更换包括核心dcrs7608在内多个老旧网络设备,针对日益流行wifi设备进行规范管,对宿舍网络wifi 共享禁用,对办公网络wifi使用教育,谨慎使用开外式网络,减少基础网络隐患。
二、20XX年信息安全工作安排及问题整改1、规范流程操作,加强网络信息化教育。
我中心要求系统使用部门或使用人员都应该了解信息安全形势,所管理系统的安全等级,遵守谁管理谁负责的原则,掌握操作技能,努力提高系统信息保障能力,对官网、青果系统、财务系统、图书馆管理系统、一卡通数据系统等业务所属部门要求分配专员管理,提高业务系统信息安全习惯。
数据分析应用工作总结汇报

数据分析应用工作总结汇报
在过去的一段时间里,我一直在进行数据分析应用工作,并且在这个过程中取得了一些显著的成绩。
在这篇总结汇报中,我将分享我在数据分析应用工作中所取得的成就和经验。
首先,我成功地建立了一个高效的数据分析流程。
通过使用各种数据分析工具和技术,我能够快速地收集、清洗和分析大量的数据。
这使得我能够及时地为公司提供有关市场趋势、客户行为和业务绩效的关键见解。
其次,我在数据可视化方面取得了一些重要的进展。
我使用了各种数据可视化工具,如Tableau和Power BI,来创建直观、易于理解的数据报告和仪表板。
这些可视化工具帮助我向团队和管理层传达复杂数据的含义,使他们能够更好地理解业务状况并做出明智的决策。
此外,我还深入研究了机器学习和预测分析技术。
通过应用这些技术,我能够预测销售趋势、客户流失率和产品需求,从而帮助公司制定更有效的营销和业务战略。
最后,我还积极参与了团队合作和知识分享。
我与团队成员合作完成了一些重要的数据分析项目,并且与他们分享了我在数据分析应用方面的经验和技巧。
这不仅提高了团队的整体工作效率,也加强了团队之间的合作和交流。
总的来说,我在数据分析应用工作中取得了一些重要的成就,并且积累了丰富的经验和技能。
我相信这些成就和经验将为公司的业务发展和成功做出重要贡献。
我将继续努力学习和提升自己在数据分析应用方面的能力,为公司的未来发展做出更大的贡献。
感谢公司给予我这次宝贵的工作机会,我期待着在未来继续与公司一起取得更多的成就。
数据分析软件应用工作总结

数据分析软件应用工作总结在当今数字化时代,数据成为了企业决策、业务优化和创新发展的关键驱动力。
而数据分析软件作为处理和分析数据的重要工具,其应用的效果和价值对于企业的运营和发展至关重要。
在过去的一段时间里,我深入参与了数据分析软件的应用工作,积累了丰富的经验,也取得了一些成果。
在此,我将对这段时间的工作进行总结和回顾。
一、工作背景与目标随着公司业务的不断拓展和数据量的急剧增长,传统的数据分析方法已经无法满足需求。
为了更高效地从海量数据中提取有价值的信息,支持决策制定和业务优化,公司决定引入一系列先进的数据分析软件,并成立专门的团队负责软件的应用和推广。
我的主要工作目标是熟练掌握这些数据分析软件的功能和操作,将其应用到实际的业务场景中,为各部门提供准确、及时和有深度的数据分析报告,助力公司实现业务增长和竞争力提升。
二、数据分析软件的选择与评估在开始工作之前,我们对市场上众多的数据分析软件进行了广泛的调研和评估。
考虑到公司的业务需求、数据规模、技术实力和预算等因素,我们最终选择了几款主流的数据分析软件,如_____、_____和_____。
这些软件在数据处理能力、分析功能、可视化效果和用户友好性等方面都具有出色的表现。
例如,_____软件在数据清洗和预处理方面功能强大,能够快速处理大规模的数据;_____软件则在数据分析和建模方面具有丰富的算法和工具,能够满足复杂的分析需求;_____软件以其出色的可视化效果,能够将分析结果以直观、清晰的方式呈现给用户。
三、数据收集与整理在应用数据分析软件之前,首先需要收集和整理相关的数据。
这是一项繁琐但至关重要的工作,数据的质量和完整性直接影响到分析结果的准确性和可靠性。
我们与公司各个部门进行了密切的沟通和协作,收集了包括销售数据、客户数据、生产数据、财务数据等在内的各类业务数据。
然后,对这些数据进行了清洗、去重、转换和整合,确保数据的格式统一、规范和准确。
在数据收集和整理的过程中,我们也遇到了一些问题和挑战。
火龙果软件--BigTable简介

首先,向大家介绍在2006年OSDI大会上发表BigTable论文,也就是《Bigtable: A Distributed Storage System for Structured Data》里面所提到的一些特性:I.新特性在2009的LADIS大会上,Google院士jeff dean有一个非常精彩的Talk,称为“Design Lessons and Advice from Building Large Scale Distributed Systems”,在这次Talk中他提到了很多BigTable的新特性:表2. 在LADIS 2009大会上的Talk中提到的特性No CommentsPosted in PaaS相关技术, YunTable开发日记, 《云计算核心技术剖析》, 云计算II.Bigtable:一个分布式的结构化数据存储系统15 Jul为了方便部分博友和我自己,我特地将BigTable的中文版论文转载到人云亦云,原文地址在Google Labs,译者为alex。
III.摘要Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据。
Google 的很多项目使用Bigtable存储数据,包括Web索引、Google Earth、Google Finance。
这些应用对Bigtable提出的要求差异非常大,无论是在数据量上(从URL到网页到卫星图像)还是在响应速度上(从后端的批量处理到实时数据服务)。
尽管应用需求差异很大,但是,针对Google的这些产品,Bigtable还是成功的提供了一个灵活的、高性能的解决方案。
本论文描述了Bigtable提供的简单的数据模型,利用这个模型,用户可以动态的控制数据的分布和格式;我们还将描述Bigtable 的设计和实现。
IV. 1 介绍在过去两年半时间里,我们设计、实现并部署了一个分布式的结构化数据存储系统—在Google,我们称之为Bigtable。
数据处理的工作总结报告

数据处理的工作总结报告
在当今信息化的社会中,数据处理已经成为了各行各业中不可或缺的一部分。
作为一项重要的工作,数据处理需要高效、准确地处理大量的数据,以便为企业决策提供支持。
在过去的一段时间里,我有幸参与了数据处理工作,并在此总结一下我的工作经验和心得。
首先,数据处理工作需要高度的责任心和细心。
在处理数据的过程中,任何一
点疏忽都可能导致数据的错误,从而影响到企业的决策和运营。
因此,我们必须对每一个数据进行仔细的核对和验证,确保数据的准确性和可靠性。
其次,数据处理工作需要良好的沟通和协作能力。
在处理数据的过程中,我们
经常需要与其他部门或同事进行沟通和协作,以获取所需的数据或解决数据处理中的问题。
因此,良好的沟通和协作能力可以帮助我们更好地完成数据处理工作。
另外,数据处理工作也需要不断的学习和提升。
随着科技的发展和企业的变化,数据处理工作也在不断地发生变化和更新。
因此,我们需要不断地学习新的数据处理技术和方法,以适应新的工作需求。
总的来说,数据处理工作是一项重要而复杂的工作,需要我们具备高度的责任
心和细心,良好的沟通和协作能力,以及不断的学习和提升。
希望通过我们的努力,能够为企业的决策和运营提供更好的支持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
海量的数据处理问题,对其进行处理是一项艰巨而复杂的任务。
原因有以下几个方面:一、数据量过大,数据中什么情况都可能存在。
如果说有10条数据,那么大不了每条去逐一检查,人为处理,如果有上百条数据,也可以考虑,如果数据上到千万级别,甚至过亿,那不是手工能解决的了,必须通过工具或者程序进行处理,尤其海量的数据中,什么情况都可能存在,例如,数据中某处格式出了问题,尤其在程序处理时,前面还能正常处理,突然到了某个地方问题出现了,程序终止了。
二、软硬件要求高,系统资源占用率高。
对海量的数据进行处理,除了好的方法,最重要的就是合理使用工具,合理分配系统资源。
一般情况,如果处理的数据过TB级,小型机是要考虑的,普通的机子如果有好的方法可以考虑,不过也必须加大CPU和存,就象面对着千军万马,光有勇气没有一兵一卒是很难取胜的。
三、要求很高的处理方法和技巧。
这也是本文的写作目的所在,好的处理方法是一位工程师长期工作经验的积累,也是个人的经验的总结。
没有通用的处理方法,但有通用的原理和规则。
那么处理海量数据有哪些经验和技巧呢,我把我所知道的罗列一下,以供大家参考:一、选用优秀的数据库工具现在的数据库工具厂家比较多,对海量数据的处理对所使用的数据库工具要求比较高,一般使用Oracle或者DB2,微软公司最近发布的SQL Server 2005性能也不错。
另外在BI领域:数据库,数据仓库,多维数据库,数据挖掘等相关工具也要进行选择,象好的ETL工具和好的OLAP工具都十分必要,例如Informatic,Eassbase等。
笔者在实际数据分析项目中,对每天6000万条的日志数据进行处理,使用SQL Server 2000需要花费6小时,而使用SQL Server 2005则只需要花费3小时。
二、编写优良的程序代码处理数据离不开优秀的程序代码,尤其在进行复杂数据处理时,必须使用程序。
好的程序代码对数据的处理至关重要,这不仅仅是数据处理准确度的问题,更是数据处理效率的问题。
良好的程序代码应该包含好的算法,包含好的处理流程,包含好的效率,包含好的异常处理机制等。
三、对海量数据进行分区操作对海量数据进行分区操作十分必要,例如针对按年份存取的数据,我们可以按年进行分区,不同的数据库有不同的分区方式,不过处理机制大体相同。
例如SQL Server的数据库分区是将不同的数据存于不同的文件组下,而不同的文件组存于不同的磁盘分区下,这样将数据分散开,减小磁盘I/O,减小了系统负荷,而且还可以将日志,索引等放于不同的分区下。
四、建立广泛的索引对海量的数据处理,对大表建立索引是必行的,建立索引要考虑到具体情况,例如针对大表的分组、排序等字段,都要建立相应索引,一般还可以建立复合索引,对经常插入的表则建立索引时要小心,笔者在处理数据时,曾经在一个ETL流程中,当插入表时,首先删除索引,然后插入完毕,建立索引,并实施聚合操作,聚合完成后,再次插入前还是删除索引,所以索引要用到好的时机,索引的填充因子和聚集、非聚集索引都要考虑。
五、建立缓存机制当数据量增加时,一般的处理工具都要考虑到缓存问题。
缓存大小设置的好差也关系到数据处理的成败,例如,笔者在处理2亿条数据聚合操作时,缓存设置为100000条/Buffer,这对于这个级别的数据量是可行的。
六、加大虚拟存如果系统资源有限,存提示不足,则可以靠增加虚拟存来解决。
笔者在实际项目中曾经遇到针对18亿条的数据进行处理,存为1GB,1个P4 2.4G的CPU,对这么大的数据量进行聚合操作是有问题的,提示存不足,那么采用了加大虚拟存的方法来解决,在6块磁盘分区上分别建立了6个4096M的磁盘分区,用于虚拟存,这样虚拟的存则增加为4096*6 + 1024 = 25600 M,解决了数据处理中的存不足问题。
七、分批处理海量数据处理难因为数据量大,那么解决海量数据处理难的问题其中一个技巧是减少数据量。
可以对海量数据分批处理,然后处理后的数据再进行合并操作,这样逐个击破,有利于小数据量的处理,不至于面对大数据量带来的问题,不过这种方法也要因时因势进行,如果不允许拆分数据,还需要另想办法。
不过一般的数据按天、按月、按年等存储的,都可以采用先分后合的方法,对数据进行分开处理。
八、使用临时表和中间表数据量增加时,处理中要考虑提前汇总。
这样做的目的是化整为零,大表变小表,分块处理完成后,再利用一定的规则进行合并,处理过程中的临时表的使用和中间结果的保存都非常重要,如果对于超海量的数据,大表处理不了,只能拆分为多个小表。
如果处理过程中需要多步汇总操作,可按汇总步骤一步步来,不要一条语句完成,一口气吃掉一个胖子。
九、优化查询SQL语句在对海量数据进行查询处理过程中,查询的SQL语句的性能对查询效率的影响是非常大的,编写高效优良的SQL脚本和存储过程是数据库工作人员的职责,也是检验数据库工作人员水平的一个标准,在对SQL语句的编写过程中,例如减少关联,少用或不用游标,设计好高效的数据库表结构等都十分必要。
笔者在工作中试着对1亿行的数据使用游标,运行3个小时没有出结果,这是一定要改用程序处理了。
十、使用文本格式进行处理对一般的数据处理可以使用数据库,如果对复杂的数据处理,必须借助程序,那么在程序操作数据库和程序操作文本之间选择,是一定要选择程序操作文本的,原因为:程序操作文本速度快;对文本进行处理不容易出错;文本的存储不受限制等。
例如一般的海量的网络日志都是文本格式或者csv格式(文本格式),对它进行处理牵扯到数据清洗,是要利用程序进行处理的,而不建议导入数据库再做清洗。
十一、定制强大的清洗规则和出错处理机制海量数据中存在着不一致性,极有可能出现某处的瑕疵。
例如,同样的数据中的时间字段,有的可能为非标准的时间,出现的原因可能为应用程序的错误,系统的错误等,这是在进行数据处理时,必须制定强大的数据清洗规则和出错处理机制。
十二、建立视图或者物化视图视图中的数据来源于基表,对海量数据的处理,可以将数据按一定的规则分散到各个基表中,查询或处理过程中可以基于视图进行,这样分散了磁盘I/O,正如10根绳子吊着一根柱子和一根吊着一根柱子的区别。
十三、避免使用32位机子(极端情况)目前的计算机很多都是32位的,那么编写的程序对存的需要便受限制,而很多的海量数据处理是必须大量消耗存的,这便要求更好性能的机子,其中对位数的限制也十分重要。
十四、考虑操作系统问题海量数据处理过程中,除了对数据库,处理程序等要求比较高以外,对操作系统的要求也放到了重要的位置,一般是必须使用服务器的,而且对系统的安全性和稳定性等要求也比较高。
尤其对操作系统自身的缓存机制,临时空间的处理等问题都需要综合考虑。
十五、使用数据仓库和多维数据库存储数据量加大是一定要考虑OLAP的,传统的报表可能5、6个小时出来结果,而基于Cube的查询可能只需要几分钟,因此处理海量数据的利器是OLAP多维分析,即建立数据仓库,建立多维数据集,基于多维数据集进行报表展现和数据挖掘等。
十六、使用采样数据,进行数据挖掘基于海量数据的数据挖掘正在逐步兴起,面对着超海量的数据,一般的挖掘软件或算法往往采用数据抽样的方式进行处理,这样的误差不会很高,大大提高了处理效率和处理的成功率。
一般采样时要注意数据的完整性和,防止过大的偏差。
笔者曾经对1亿2千万行的表数据进行采样,抽取出400万行,经测试软件测试处理的误差为千分之五,客户可以接受。
还有一些方法,需要在不同的情况和场合下运用,例如使用代理键等操作,这样的好处是加快了聚合时间,因为对数值型的聚合比对字符型的聚合快得多。
类似的情况需要针对不同的需求进行处理。
海量数据是发展趋势,对数据分析和挖掘也越来越重要,从海量数据中提取有用信息重要而紧迫,这便要求处理要准确,精度要高,而且处理时间要短,得到有价值信息要快,所以,对海量数据的研究很有前途,也很值得进行广泛深入的研究。
一般来说第7种方案是最常用的,有的主要就是使用第7种方案,选择的余地也非常的大,不只是俺月,日,年,也可以按周等等划分,灵活性较高而面对大量数据的处理一般都是分批次处理,之前我做一个文本分类器,面对1g多的索引(索引1g多,但是分类时需要的数据就大得多了),40-50分钟就可以跑完所有分类:一是分批操作。
二是给jvm回收存的时间,比如每次20w的数据进行分类,完成之后睡眠一段时间,每睡眠一端时间就手动gc一次。
通过这些方式取得了很明显得见效。
海量数据处理专题(一)大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯这样的一些涉及到海量数据的公司经常会问到。
下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。
下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。
本贴从解决这类问题的方法入手,开辟一系列专题来解决海量数据问题。
拟包含以下几个方面。
1.Bloom Filter2.Hash3.Bit-Map4.堆(Heap)5.双层桶划分6.数据库索引7.倒排索引(Inverted Index)8.外排序9.Trie树10.MapReduce在这些解决方案之上,再借助一定的例子来剖析海量数据处理问题的解决方案。
欢迎大家关注。
海量数据处理专题(二)【什么是Bloom Filter】Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。
Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。
因此,Bloom Filter不适合那些“零错误”的应用场合。
而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。
这里有一篇关于Bloom Filter的详细介绍,不太懂的博友可以看看。
【适用围】可以用来实现数据字典,进行数据的判重,或者集合求交集【基本原理及要点】对于原理来说很简单,位数组+k个独立hash函数。
将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。
同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。
所以一个简单的改进就是counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了。
还有一个比较重要的问题,如何根据输入元素个数n,确定位数组m的大小及hash函数个数。