首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >布隆过滤器用法

布隆过滤器用法
EN

Stack Overflow用户
提问于 2013-01-19 00:36:32
回答 1查看 7.5K关注 0票数 18

我正在努力理解bloom过滤器的用处。我得到了它的基本逻辑,空间压缩,快速查找,误报等。我只是不能把这个概念放在现实生活中是有益的。一个常见的应用是在web缓存中使用bloom过滤器。我们使用bloom filter来确定给定的URL是否在缓存中。为什么我们不直接访问缓存来确定这一点呢?如果我们得到的答案是肯定的,我们仍然需要去缓存来检索网页(可能不在那里),但如果是否定的,我们可以使用缓存得到相同的答案(缓存可能已经针对快速查找进行了优化?)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-19 01:03:20

布隆过滤器是为以下情况设计的:假阴性是非常糟糕的事情,而假阳性是可以接受的。

例如,假设您正在制作一个web浏览器,并且有一个已知的诈骗网站黑名单。你的黑名单很大--有几百千兆字节--所以你不能把它和浏览器一起发送。但是,您可以将其存储在您自己的服务器上。在这种情况下,您可以在浏览器中提供一个适当大小的Bloom filter来保存所有URL。在访问一个网站之前,你要在过滤器中查找它。然后,如果你得到一个“否”的答案,你就可以保证URL不会被列入黑名单,只能访问该网站。如果您得到的答案是“是”,则该站点可能是恶意的,因此您可以让浏览器调用您的主服务器来获取真正的答案。事实上,您可以在不牺牲准确性的情况下节省大量对服务器的调用,这一点很重要。

缓存的概念与此设置类似。您可以查询筛选器以查看页面是否在缓存中。如果你得到一个“否”的回答,你就可以保证它不会被缓存,并且可以做一个昂贵的操作来从主源中提取数据。否则,您可以检查缓存,看看它是否真的在那里。在极少数情况下,你可能需要检查缓存,发现它不在那里,然后从主源中提取,但你永远不会意外地遗漏缓存中真正的东西。

希望这能有所帮助!

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14403383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档