Bloom Filter 資料結構的應用

來源:互聯網
上載者:User

來源: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


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.