Database 在诸如Cassandra这样的数据库中需要Bloom过滤器

Database 在诸如Cassandra这样的数据库中需要Bloom过滤器,database,indexing,cassandra,bloom-filter,Database,Indexing,Cassandra,Bloom Filter,我知道bloom过滤器会告诉您SSTable中是否存在特定的密钥。我还知道有一些索引可以帮助找到哪些SSTables有一个键。我的问题是:为什么我们首先需要布卢姆过滤器?为什么我们不能取消索引,因为它们两个似乎做着几乎相同的工作,而且与bloom过滤器相比,索引会给出一个确定的答案?索引是为每个SSTable生成的,因此我们需要为每个SSTable读取一个索引来确定分区的位置,等等——这是bloom筛选器防止的性能开销,如果数据不在特定的SSTable中,它允许跳过SSTable的读取。通过bl

我知道bloom过滤器会告诉您SSTable中是否存在特定的密钥。我还知道有一些索引可以帮助找到哪些SSTables有一个键。我的问题是:为什么我们首先需要布卢姆过滤器?为什么我们不能取消索引,因为它们两个似乎做着几乎相同的工作,而且与bloom过滤器相比,索引会给出一个确定的答案?

索引是为每个SSTable生成的,因此我们需要为每个SSTable读取一个索引来确定分区的位置,等等——这是bloom筛选器防止的性能开销,如果数据不在特定的SSTable中,它允许跳过SSTable的读取。通过bloom filter进行查找比从磁盘读取索引快得多。

那么,每个SSTable的bloom filter是否总是存在于内存中?是的,我见过客户为此消耗了数十GB的内存