Bloom Filter 資料結構的應用

2021-05-27 15:44:45 字數 952 閱讀 8589

應用1:儲存字典。大家可能對於 word 的拼寫檢查功能非常了解,當你拼錯乙個單詞的時候,word 會自動將這個單詞用紅線標註出來。 word 的具體工作原理不得而知,但是在另乙個拼寫檢查器 unix spell-checkers 這個軟體中用到了 bloom filter。unix spell-checkers 將所有的字典單詞存成 bloom filter 資料結構,而後直接在 bloom filter 上進行查詢。

出錯的情況:漏掉出錯的單詞。

應用2:資料庫的 semi-join 操作。舉個例子,ta 儲存了 employee / city 字段, tb 儲存了 city / cost of living 字段。現在需要將所有 cost of living > 50,000$ 的 employee 找出來,顯然需要 join ta 和 tb。直觀地看,需要將 tb 的所有 city / cost of living 字段值發給 tb,然後找到 city 相匹配的 join 一下,得出所有 employee / city 字段值。這樣做是又費時又費力的。bloom filter 的做法是把 tb 的 city 字段做成 bloom filter 資料結構發給 ta,讓 ta 中的 city 

在這個 bloom filter 上做匹配,把所有找到的 employee / city 再重新發個 tb 做 join。 這樣做相當於過濾掉了一部分不存在於 ta 中的city,提高了執行效率。

出錯的情況:不存在。

出錯的情況:某 proxy 以為乙個 proxy 中存在某個 url,而實際上那個 proxy 中並沒有這個 url。因此會造成一定的延遲。

因為,快取的內容頻繁變化,所以 proxy 通常使用 counting bloom filter 存自己快取的 url, 而只用 0-1 bloom filter 存別的 proxy 快取的 url。

出錯的情況:可能有 sa-sb 中的資料被漏掉,沒有傳到 peer b。

更多請到

資料結構 資料結構緒論

資料結構是相互間存在一種或多種特定關係的資料元素的集合。程式設計 資料結構 演算法 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。資料元素是組成資料的 有一定意義的基本單位,是計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以由若干個資料項組...

資料結構 資料結構演算法

分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...

Bloom Filter 海量資料處理

先來看這樣乙個爬蟲相關問題 檔案a中有10億條url,每條url占用64位元組,機器的記憶體限制是4g,現有乙個url,請判斷它是否存在於檔案a中 爬過的url無需再爬 如果有很多個url需要判斷呢?分析之後我們可以發現,這就是快速query問題,通常查操作居多,寫操作較少。要快速判斷乙個url是否...