來源:http://www.xymyeah.com/645.html
應用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,提高了執行效率。
出錯的情況:不存在。
應用3:分布式緩衝技術。Web 緩衝技術的原理是一個 proxy 如果要請求網頁,它會先查看其他 proxy 是不是有這個網頁,而不是直接向Web 請求。這樣做可以提高下載網頁的速度。為了減少網路傳輸的資料量,proxy 定時廣播自己以 Bloom Filter 格式儲存的 url,而不是把自己龐大的 url 列表廣播給其他 proxy。
出錯的情況:某 proxy 以為一個 proxy 中存在某個 url,而實際上那個 proxy 中並沒有這個 url。因此會造成一定的延遲。
因為,緩衝的內容頻繁變化,所以 proxy 通常使用 counting bloom filter 存自己緩衝的 url, 而只用 0-1 bloom filter 存別的 proxy 緩衝的 url。
應用4:p2p。p2p 技術的基本原理是 peer 從來源站點下載檔案的同時也從其他 peer 處下載檔案。通常是一個很大的檔案分布式儲存在很多個 peer 上,這樣就要求在下載時 peer 們相互合作,peer A 需要把自己有但 peer B 沒有的資料發送給 peer B,使用 bloom filter 可以方便地進行集合運算 SA-SB 來找到需要傳輸的資料。
出錯的情況:可能有 SA-SB 中的資料被漏掉,沒有傳到 peer B。
更多請到http://www.xymyeah.com/645.html