【发布时间】:2020-12-25 13:34:41
【问题描述】:
我知道布隆过滤器会以概率的方式告诉您某个特定键是否存在于 SSTable 中。我也知道有索引可以帮助找到哪些 SSTables 有一个键。我的问题是:为什么我们首先需要布隆过滤器?为什么我们不能直接取消索引,因为它们似乎都在做几乎相同的工作,而且与布隆过滤器相比,索引会给出确定性的答案?
【问题讨论】:
标签: database indexing cassandra bloom-filter
我知道布隆过滤器会以概率的方式告诉您某个特定键是否存在于 SSTable 中。我也知道有索引可以帮助找到哪些 SSTables 有一个键。我的问题是:为什么我们首先需要布隆过滤器?为什么我们不能直接取消索引,因为它们似乎都在做几乎相同的工作,而且与布隆过滤器相比,索引会给出确定性的答案?
【问题讨论】:
标签: database indexing cassandra bloom-filter
为每个 SSTable 生成索引,因此我们需要读取每个 SSTable 的索引以确定分区的位置等 - 这是布隆过滤器防止的性能开销,它允许如果数据不在特定的 SSTable 中,则跳过读取 SSTable。通过布隆过滤器查找比从磁盘读取索引要快得多。
【讨论】: