第二章 数据查找与资源分配算法——海量数据中的查找

2.3 海量数据中的查找

2.3.1 基于布隆过滤器查找

布隆过滤器是1970年由布隆提出的,它实际上是一个很长的二进制矢量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中,它的有点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。

1. 概念

判断一个元素是否在一个集合里,通常的方法是将集合中所有元素保存起来,然后通过比较确定。传统的方法是,将所有的数据放在一个集合里面,或许是链表,或许是树,或许是散列表,然后分别通过时间复杂度O(n),O(lg n),O()找到。

布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射为一个位数组中的K个点,把它们置为1。检索时,只要查看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个是0,则被检索元素一定不在集合中;如果都是1,则被检元素很可能在。

2. 应用:搜索引擎中的URL过滤

2.3.4 倒排索引查找

索引是一种用于数据快速查找的数据结构,哈希表、二分查找、分块查找也可以视为一种索引,这类索引的价值在于在较短的时间内获得最相关、最全、最深的数据集合。

倒排索引主要用于信息检索领域,它是其中最常用的数据索引存储结构,被用来存储文档集合中某个单词对应的文档集合及单词在文件中存在的位置,因此也称为反向索引,与其相对应的是正向索引。

倒排索引的数据结构是检索系统中非常重要的组成部分,检索时间是检索系统中最重要的衡量指标之一,其核心在于倒排索引的设计。

在数据量较大时,会将海量数据进行分布式索引,分布式哈希表和分布式倒排索引则时较好的处理方式,但从检索的综合评价角度,分布式索引更为合适。

你可能感兴趣的:(第二章 数据查找与资源分配算法——海量数据中的查找)