我知道bloom过滤器会告诉您sstable中是否存在某个特定的密钥。我还知道有些索引可以帮助查找哪些sstables有一个键。我的问题是:为什么我们首先需要布鲁姆过滤器?既然索引和bloom过滤器的作用几乎相同,而且与bloom过滤器相比,索引会给出一个确定性的答案,那么为什么我们不能取消索引呢?
8ftvxx2r1#
索引是为每个sstable生成的,因此我们需要为每个sstable读取一个索引,以确定分区的位置等。这是bloom过滤器防止的性能开销,如果数据不在特定的sstable中,它允许跳过sstable的读取。通过bloomfilter进行查找比从磁盘读取索引快得多。
1条答案
按热度按时间8ftvxx2r1#
索引是为每个sstable生成的,因此我们需要为每个sstable读取一个索引,以确定分区的位置等。这是bloom过滤器防止的性能开销,如果数据不在特定的sstable中,它允许跳过sstable的读取。通过bloomfilter进行查找比从磁盘读取索引快得多。