使用Bloom过滤器进行复合对象.据我了解,



允许bloom滤波器允许以100%的保证在集合中不存在该元素。但这可能会证明1%的机会表明元素存在,而实际上它不存在。

但是它可以用于复杂的对象和键 - 不仅是单个密码,ID或名称吗?例如,假设我有数百万个具有独特特征的对象(ID,名称,其他一些字段) - 我可以同时使用Bloom Filter与所有这些特征一起检查对象不存在吗?

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

  • 将所有这些字段(ID,名称,其他字段)组合到一个组合键中。并计算该组合键的哈希函数。
  • 为每个字段维护单独的Bloom滤波器(一个用于ID的Bloom滤波器,名称的另一个Bloom Filter,另一个字段的一个Bloom Filter)。查询时,您可以单独查询每个Bloom过滤器。仅当每个Bloom过滤器返回YES时,该对象最有可能在集合中。如果一个或多个BLOOM滤镜返回否,则该对象并非绝对不在集合中。即使您只有有关对象的部分信息,这也使您可以查询。
  • 或两者的组合,例如,ID的一个花朵过滤器,一个用于名称和其他字段的组合。

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

最新更新