【问题标题】:using bloom filter for composite objects对复合对象使用布隆过滤器
【发布时间】:2018-12-19 14:21:56
【问题描述】:

据我了解,Bloom 过滤器可以 100% 保证判断集合中是否不存在该元素。但它可能会以 1% 的几率说明元素存在,而实际上它并不存在。

但它可以用于复杂的对象和键——而不仅仅是单个密码、ID 或名称?例如,假设我有数百万个具有独特特征(id、名称、其他字段)的对象——我可以使用布隆过滤器同时检查所有这些特征的对象不存在吗?

【问题讨论】:

    标签: bloom-filter


    【解决方案1】:

    当然可以。您有多种选择:

    • 将所有这些字段(id、name、其他字段)组合成一个组合键。并根据该组合键计算哈希函数。
    • 为每个字段维护单独的 Bloom 过滤器(一个用于 id 的 Bloom 过滤器,另一个用于名称的 Bloom 过滤器,一个用于另一个字段的 Bloom 过滤器)。查询时,您分别查询每个布隆过滤器。仅当每个 Bloom 过滤器都返回 yes 时,该对象才最有可能在集合中。如果一个或多个布隆过滤器返回 no,则该对象不一定不在集合中。即使您只有对象的部分信息,这也允许您进行查询。
    • 或两者的组合,例如一个用于 id 的 Bloom 过滤器,一个用于名称和其他字段的组合。

    当然,拥有多个 Bloom 过滤器会占用更多内存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-14
      • 2015-10-25
      • 2023-02-02
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      • 2023-01-02
      • 2011-12-20
      相关资源
      最近更新 更多