Telegram超级群组搜索索引的布隆过滤器

赖晶灵赖晶灵06月11日2138

据说Telegram大群使用布隆过滤器作为搜索索引,这是个什么原理?为什么不用数据库?能承受多大的数据量?求大神用通俗的语言解释一下原理~

5 个回答

锺永康
锺永康回答于 06 月 11 日
最佳答案

布隆过滤器是一种用来高效判断元素是否可能存在的概率型数据结构。它通过多个哈希函数把数据映射到一个二进制数组中,并且快速判断元素大概率不存在。与数据库相比,布隆过滤器占用更小的内存、查询更快、更抗高并发,但是无法删除数据,而且会有极低的概率出现误判。Telegram使用布隆过滤器做群索引,可以快速过滤掉大量无效的搜索,从而减轻后端服务器的负担。当数据量特别大(亿级)的时候,布隆过滤器的性能优势会更加明显。

滤月光华
滤月光华回答于 06 月 11 日

Telegram使用布隆过滤器进行搜索索引,因为速度快、占用空间少,原理是利用多个哈希函数映射到二进制数组,判断某个数据是否存在。数据库慢,数据量大的时候会出现卡顿。布隆过滤器可以处理海量数据,缺点是误判,不影响搜索速度。简单来说,它是超快的可能存在判断器。

池萌阳
池萌阳回答于 06 月 12 日

布隆过滤器是一种快速判断信息存在与否的算法,速度快,但不能储存内容。Telegram用它来快速检索群,节省资源,应对大数据。数据库慢而贵,布隆过滤器轻巧,适合大数据。

烟雨江南客
烟雨江南客回答于 06 月 13 日

布隆过滤器是快速判断消息是否存在的工具。它比数据库空间小、快得多,但会出错。大群用它是因为要处理海量数据,愿意以精度换速度。

迟晶滢
迟晶滢回答于 06 月 14 日

布隆过滤器是一个高效的数据结构,用来判断元素是否可能属于集合。

它的原理是利用若干个哈希函数,把元素映射到位数组上,当查找时,若对应的每一位都是1则认为存在。

但存在误判,无法删除数据。

相较于数据库,速度快,占用内存小,适合对海量数据的快速判断,如Telegram群搜索这种高频操作。

但是数据量太大也会承受不了,这个看机器的配置。

您的答案