Cassandra等数据库需要Bloom Filter
Need of Bloom Filter in databases such as Cassandra
我知道布隆过滤器会告诉您特定键是否存在于 SSTable 中的概率。我也知道有索引可以帮助找到哪些 SSTables 有一个键。我的问题是:为什么我们首先需要布隆过滤器?为什么我们不能直接取消索引,因为它们似乎都在做几乎相同的工作,而且与布隆过滤器相比,索引会给出确定性的答案?
为每个 SSTable 生成索引,因此我们需要为每个 SSTable 读取一个索引以确定分区的位置等 - 这是布隆过滤器阻止的性能开销,即如果数据不在特定的 SSTable 中,则允许跳过读取 SSTable。通过布隆过滤器查找比从磁盘读取索引快得多。
我知道布隆过滤器会告诉您特定键是否存在于 SSTable 中的概率。我也知道有索引可以帮助找到哪些 SSTables 有一个键。我的问题是:为什么我们首先需要布隆过滤器?为什么我们不能直接取消索引,因为它们似乎都在做几乎相同的工作,而且与布隆过滤器相比,索引会给出确定性的答案?
为每个 SSTable 生成索引,因此我们需要为每个 SSTable 读取一个索引以确定分区的位置等 - 这是布隆过滤器阻止的性能开销,即如果数据不在特定的 SSTable 中,则允许跳过读取 SSTable。通过布隆过滤器查找比从磁盘读取索引快得多。