HBase学习笔记(三)——布隆过滤器(Bloom Filter)的原理
生活随笔
收集整理的這篇文章主要介紹了
HBase学习笔记(三)——布隆过滤器(Bloom Filter)的原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 布隆過濾器介紹
- 布隆過濾器原理
- 布隆過濾器的優缺點與用途
- 布隆過濾器使用場景
布隆過濾器介紹
????布隆過濾器(Bloom Filter)由 Burton Howard Bloom 在 1970 年提出,是一種空間效率高的概率型數據結構。它專門用來檢測集合中是否存在特定的元素。
布隆過濾器帶有以下特點:
- 一個很長的二進制向量(位數組)
- 一系列隨機函數(哈希)
- 空間效率和查詢效率高
- 有一定的誤判率(哈希表是精確匹配)
布隆過濾器原理
布隆過濾器(Bloom Filter)的核心是實現一個超大的位數組和幾個哈希函數。
????假設位數組的長度為m,哈希函數的個數為k,以上圖為例。
具體操作流程如下:
布隆過濾器添加元素
- 將要添加的元素給k個哈希函數
- 得到對應于位數組上的k個位置
- 將這k個位置設為1
布隆過濾器查詢元素
- 將要查詢的元素給k個哈希函數
- 得到對應于位數組上的k個位置
- 如果k個位置有一個為0,則肯定不在集合中
- 如果k個位置全部為1,則可能在集合中
布隆過濾器的優缺點與用途
優點
- 不需要存儲數據本身,只用比特表示,因此空間占用相對于傳統方式有巨大的優勢,并且能夠保密數據;
- 時間效率也較高,插入和查詢的時間復雜度均為O(k);
- 哈希函數之間相互獨立,可以在硬件指令層面并行計算。
缺點
- 存在假陽性的概率,不適用于任何要求 100% 準確率的場景;
- 只能插入和查詢元素,不能刪除元素,這與產生假陽性的原因是相同的。我們可以簡單地想到通過計數(即將一個比特擴展為計數值)來記錄元素數,但仍然無法保證刪除的元素一定在集合中。
????所以,Bloom Filter 在對查準度要求沒有那么苛刻,而對時間、空間效率要求較高的場合非常合適,本文第一句話提到的用途即屬于此類。另外,由于它不存在 假陰性 問題,所以用作“不存在”邏輯的處理時有奇效,比如可以用來作為 緩存系統(如Redis)的緩沖,防止緩存穿透。
布隆過濾器使用場景
總結
以上是生活随笔為你收集整理的HBase学习笔记(三)——布隆过滤器(Bloom Filter)的原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单片机基础知识点 05 (中断-1)
- 下一篇: 螺孔视觉定位|螺丝孔视觉定位|孔视觉定位