BloomFilter 大規模資料處理利器

2021-06-28 08:45:15 字數 526 閱讀 9938

bloom filter是由bloom在2023年提出的一種多雜湊函式對映的快速查詢演算法。通常應用在一些需要快速判斷某個元素是否屬於集合,但是並不嚴格要求100%正確的場合。

一. 例項

為了說明bloom filter存在的重要意義,舉乙個例項:

假設要你寫乙個網路蜘蛛(web crawler)。由於網路間的鏈結錯綜複雜,蜘蛛在網路間爬行很可能會形成「環」。為了避免形成「環」,就需要知道蜘蛛已經訪問過那些url。給乙個url,怎樣知道蜘蛛是否已經訪問過呢?稍微想想,就會有如下幾種方案:

1. 將訪問過的url儲存到資料庫。

2. 用hashset將訪問過的url儲存起來。那只需接近o(1)的代價就可以查到乙個url是否被訪問過了。

3. url經過md5或sha-1等單向雜湊後再儲存到hashset或資料庫。

4. bit-map方法。建立乙個bitset,將每個url經過乙個雜湊函式對映到某一位。

方法1~3都是將訪問過的url完整儲存,方法4則只標記url的乙個對映位。

Bloom Filter 大規模資料處理利器

bloom filter 是由bloom 在1970 年提出的一種多雜湊函式對映的快速查詢演算法。通常應用在一些需要快速判斷某個元素是否屬於集合,但是並不嚴格要求 100 正確的場合。一.例項 為了說明 bloom filter 存在的重要意義,舉乙個例項 假設要你寫乙個網路蜘蛛 web crawl...

大規模資料實戰

前後端處理分離解耦,前批處理 有向圖編譯,後端為有向圖優化 自動資源分配 自動監控 錯誤跟蹤 首先我們忘掉所有的框架,我們想做的業務設計其實是就是乙個count 乙個topk 衡量指標很簡單是sla 工程一致性模型,強一致性,弱一致性,最終一致性 cloud spanner 就是強一致性,業務級的資...

Python大規模資料插入Postgresql

需要owner許可權 alter table t rs standard satellite image add constraint unique source product id unique source product id batchinsert批量插入 def batchinsert ...