gpt4 book ai didi

cassandra - 布隆过滤器在 cassandra 中的作用是什么?

转载 作者:行者123 更新时间:2023-12-04 09:23:43 25 4
gpt4 key购买 nike

从 Cassandra 文档的两个不同链接中,我发现:

link 1

A structure stored in memory that checks if row data exists in the memtable before accessing SSTables on disk





link2

Cassandra checks the Bloom filter to discover which SSTables are likely to have the request partition data.



我的问题是以上两种说法都对吗?如果是,是否分别为 Memtable 和 SSTable 维护布隆过滤器?提前致谢。

最佳答案

Bloom filter是用于检查元素是否存在于集合中的通用数据结构。它的算法设计得非常快,代价是冒着返回误报的风险。

Cassandra 使用布隆过滤器来测试是否有任何 SSTable 可能包含请求的分区键,而无需实际读取它们的内容(从而避免昂贵的 IO 操作)。

如果布隆过滤器返回 false对于给定的分区键,则绝对可以肯定该分区键不存在于相应的 SSTable 中;如果它返回 true ,但是,那么 SSTable 很可能包含分区键。发生这种情况时,Cassandra 将采用更复杂的技术来确定是否需要读取该 SSTable。请注意,大多数读取都会引用布隆过滤器,并且仅在某些写入期间(当内存表刷新到磁盘时)进行更新。您可以阅读更多关于 Cassandra 的读取路径 here .

回到你的问题:

1)第一条语句(“存储在内存中的结构,在访问磁盘上的SSTables之前检查memtable中是否存在行数据”)恕我直言不准确:当memtable刷新到磁盘时确实会更新布隆过滤器,但它们没有引用内存表。

2) 每个 SSTable 维护布隆过滤器,即磁盘上的每个 SSTable 在内存中都有一个相应的布隆过滤器。

关于cassandra - 布隆过滤器在 cassandra 中的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39327427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com