d-Left Counting Bloom Filter (2)

來源:互聯網
上載者:User

關於d-left hashing,上一篇文章已經介紹過了,這裡不再多講。前面提到過,使用d-left hashing是為瞭解決雜湊表的Server Load Balancer問題。為了瞭解d-left hashing如何解決這個問題,我們先來看沒有d-left hashing的情況。同一個hash value高位用作地址低位用作fingerprint,這就意味著同一個地址對應著多個fingerprint。一個地址對應一個bucket,因此一個bucket需要儲存多個fingerprint。由於單個雜湊函數的hash value分布不均,各個bucket的負載也不均衡。如果每個bucket能儲存的fingerprint數量固定,為了不溢出必須按最壞的情況來分配bucket的容量,這就造成了不小的浪費。

 

使用d-left hashing之後,fingerprint的分布相對比較均衡,因此大大減少了空間的浪費。原來即使分配很大的雜湊表,由於按最壞情況分配bucket容量,仍然很難縮小bucket的容量,並且雜湊表中大量空間閑置。而使用d-left hashing可以讓儲存的資訊分布均勻,更加緊湊,從而用更小的空間儲存同樣多的資訊。在Perfect Hashing VS. Bloom Filter一文中提到過,d-left counting bloom filter可以比counting bloom filter節省至少一倍的空間,就是因為counting bloom filter負載不均衡,很多空間都被浪費掉了。

 

從另一個角度考慮,d-left hashing扮演的其實是一個perfect hash function的角色。原來負載不均衡的情況下,碰撞的情況很嚴重,使用d-left hashing後大大減少了碰撞。當然,它不能完全消除碰撞,因此它只是用一種開銷較小的方式類比了perfect hash function,可以稱它為almost-perfect hash function。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.