Skip to content

A java solution that resolve big data deduplication problem

Notifications You must be signed in to change notification settings

MarcelLeon/BdBloomFilter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

BdBloomFilter

A java solution that resolved big data deduplication problem


BloomFilter介绍:Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是 集合中的一个成员。查询返回“可能在集合中”或“绝对不在集合中”。元素可以添加到集合中,但不会被删除(尽管可以通过“计数”过滤器来解决); 添加到集合 中的元素越多,误报的概率就越大。 https://en.wikipedia.org/wiki/Bloom_filter https://baike.baidu.com/item/bloom%20filter/6630926

目的:解决频繁接收重复数据造成的后台(持久层)压力问题

实现:redis bitMap数据类型、guava murmurHash算法

实现原理:借鉴并重构google guava的bloomFilter实现(ps:guava的实现是基于long,而bdBloomFilter是基于redis bitmap结构), 通过murmurhash3函数生成位节点,并加了自己的可配置参数

优点:相较于数据库层面校验速度快得多、节省大量内存、相较于guava的实现BdBloomFilter不会把jvm搞大

缺点:会有误判率(但是控制的好基本不会出现问题)、放入过滤器里的数据不好删除(这意味着 要过滤掉的数据突然不用过滤了,这样的场景我还没有想到)

About

A java solution that resolve big data deduplication problem

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published