1. 程式人生 > >Python 操作mongodb億級資料量使用 Bloomfilter 去重例子

Python 操作mongodb億級資料量使用 Bloomfilter 去重例子

工作需要使用 python 處理 mongodb 資料庫兩億資料量去重複,需要在大資料量下快速判斷資料是否存在

網上了解到 Bloom Filter ,Bloom filter 是由 Howard Bloom 在 1970 年提出的二進位制向量資料結構,它具有很好的空間和時間效率,被用來檢測一個元素是不是集合中的一個成員。

關於 Bloom Filter 的詳細介紹請參考:百度百科

使用Python可直接安裝 Pybloom 包,這裡已經實現了 Bloom Filter。

包安裝成功後就可以愉快的使用了

使用例子如下:

from pybloom import BloomFilter

bf = BloomFilter(capacity=10000, error_rate=0.001)

bf.add("www.baidu.com")

print("www.baidu.com" in bf)   # True

print("www.douban.com" in bf)  # False

BloomFilter 是一個定容的過濾器,error_rate 是指最大的誤報率是0.1%(可以省略),capacity 是容量大小,而 ScalableBloomFilter 是一個不定容量的布隆過濾器,它可以不斷新增元素。add 方法是新增元素,如果元素已經在布隆過濾器中,就返回 true,如果不在返回 fasle 並將該元素新增到過濾器中。判斷一個元素是否在過濾器中,只需要使用 in 運算子即可了。

簡單易用的一個 Python 庫,希望對大家有幫助。