在谷歌辦公時間每月問答的最新一期中,有人提出了一個問題,即與穀歌搜索控制台中的一般數據相比,洩露的數據量更高。
這個問題引起了 Google 搜索關係團隊成員 Gary Illyes 的詳細回應,揭示了 Google 對布隆過濾器的使用。
Search Console 中的數據不成比例
問題是,“為什麼過濾後的數據高於 Search Console 中的一般數據,這毫無意義。”
從表面上看,這似乎有點矛盾。
期望總體數據將更加完整,因此比任何過濾的子集更加廣泛。
然而,這並不是用戶的體驗。 這裡發生了什麼?
搜索控制台和布隆過濾器
伊利斯開始回答:
“簡短的答案是,我們大量使用布隆過濾器,因為我們必須處理大量數據,而布隆過濾器可以節省我們大量的時間和存儲空間。
當您處理一組中的大量項目時,我的意思是數十億甚至數万億的項目,快速查找項目變得非常困難。 這就是布隆過濾器派上用場的地方。”
布隆過濾器通過首先查詢編碼或編碼數據的單獨集合來加速大數據搜索。
Illyes 解釋說,這可以實現更快但不太準確的分析:
“因為你首先查找哈希值,所以速度相當快,但哈希有時會導致數據丟失,無論是有意還是無意,而丟失的數據就是你所經歷的:需要檢查的數據越少,意味著可以更準確地預測某件事是否存在。父集中是否存在或不存在,而這種缺失的數據就是您所遇到的情況:傳遞的數據越少,意味著可以更準確地預測某些內容是否在父集中。
從本質上講,布隆過濾器通過預測數據集中是否存在某些內容來加速搜索,但代價是準確性,並且數據集越小,預測越準確。”
速度與準確性:深思熟慮的權衡
伊利斯的解釋揭示了一種刻意的妥協:速度和效率高於完美的準確性。
這種方法可能會令人驚訝,但在處理 Google 每天處理的海量數據時,這是一種必要的策略。
總結
過濾後的數據可能高於 Search Console 中的一般數據,因為 Google 使用布隆過濾器來快速分析大量數據。
布隆過濾器允許谷歌處理數万億個數據點,但它們犧牲了一些精度。
這種偏移是故意的。 Google 更關心速度而不是 100% 的準確性。 對於谷歌快速分析數據來說,微小的錯誤是值得的。
因此,看到洩露的數據優於一般數據並不是錯誤的。 這就是布隆過濾器的工作原理。
特色圖片:Tetiana Yurchenko/Shutterstock