日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HBase学习笔记(三)——布隆过滤器(Bloom Filter)的原理

發布時間:2024/5/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HBase学习笔记(三)——布隆过滤器(Bloom Filter)的原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 布隆過濾器介紹
  • 布隆過濾器原理
  • 布隆過濾器的優缺點與用途
  • 布隆過濾器使用場景

布隆過濾器介紹

????布隆過濾器(Bloom Filter)由 Burton Howard Bloom 在 1970 年提出,是一種空間效率高的概率型數據結構。它專門用來檢測集合中是否存在特定的元素。

布隆過濾器帶有以下特點:

  • 一個很長的二進制向量(位數組)
  • 一系列隨機函數(哈希)
  • 空間效率和查詢效率高
  • 有一定的誤判率(哈希表是精確匹配)

布隆過濾器原理

布隆過濾器(Bloom Filter)的核心是實現一個超大的位數組和幾個哈希函數

????假設位數組的長度為m,哈希函數的個數為k,以上圖為例。
具體操作流程如下:

  • 假設集合里面有3個元素 {x,y,z},哈希函數的個數為3。首先將位數組進行初始化,將里面每個位都設置為0。
  • 對于集合里面的每一個元素,將元素依次通過3個哈希函數進行映射,每次映射都會產生一個哈希值,這個值對應位數組上面的一個點,然后將位數組對應的位置標記為1。
  • 查詢 W 元素是否存在集合中的時候,同樣的方法將 W 通過哈希映射到位數組上的3個點。
  • 如果3個點的其中有一個點不為1,則可以判斷該元素一定不存在集合中。 反之,如果3個點都為1,則該元素可能存在集合中。
  • 注意:此處不能判斷該元素是否一定存在集合中,可能存在一定的誤判率。
  • 可以從圖中可以看到:假設某個元素通過映射對應下標為4、5、6這3個點。雖然這3個點都為1,但是很明顯這3個點是不同元素經過哈希得到的位置,因此這種情況說明元素雖然不在稽核中,也可能對應的都是1,這是誤判率存在的原因。
  • 布隆過濾器添加元素

    • 將要添加的元素給k個哈希函數
    • 得到對應于位數組上的k個位置
    • 將這k個位置設為1

    布隆過濾器查詢元素

    • 將要查詢的元素給k個哈希函數
    • 得到對應于位數組上的k個位置
    • 如果k個位置有一個為0,則肯定不在集合中
    • 如果k個位置全部為1,則可能在集合中

    布隆過濾器的優缺點與用途

    優點

    • 不需要存儲數據本身,只用比特表示,因此空間占用相對于傳統方式有巨大的優勢,并且能夠保密數據;
    • 時間效率也較高,插入和查詢的時間復雜度均為O(k);
    • 哈希函數之間相互獨立,可以在硬件指令層面并行計算。

    缺點

    • 存在假陽性的概率,不適用于任何要求 100% 準確率的場景;
    • 只能插入和查詢元素,不能刪除元素,這與產生假陽性的原因是相同的。我們可以簡單地想到通過計數(即將一個比特擴展為計數值)來記錄元素數,但仍然無法保證刪除的元素一定在集合中。

    ????所以,Bloom Filter 在對查準度要求沒有那么苛刻,而對時間、空間效率要求較高的場合非常合適,本文第一句話提到的用途即屬于此類。另外,由于它不存在 假陰性 問題,所以用作“不存在”邏輯的處理時有奇效,比如可以用來作為 緩存系統(如Redis)的緩沖,防止緩存穿透。

    布隆過濾器使用場景

    總結

    以上是生活随笔為你收集整理的HBase学习笔记(三)——布隆过滤器(Bloom Filter)的原理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。