Cassandra 中 TWCS 中的 SSTable 重叠是什么?

What is SSTable overlap in TWCS in Cassandra?

我正在尝试了解不适合 TWCS 的 cassandra 中的 SStable 重叠。我找到了像 https://thelastpickle.com/blog/2016/12/08/TWCS-part1.html 这样的参考文献,但我仍然不明白重叠是什么意思,以及它是如何由读取修复引起的。谁能提供一个简单的例子来帮助我理解?谢谢

对于 TWCS,数据被压缩到“时间 windows”。如果您配置的时间 window 为 1 小时,TWCS 会将 one-hour window 中写入的所有分区压缩(合并)到一个 SSTable 中。在 24 小时内,您最终会得到 24 个 SSTable,一天中的每个小时一个。

假设您检查上午 9 点生成的 SSTable。该 SSTable 中的最小和最大 [write] 时间戳将在上午 8 点到 9 点之间。

现在考虑一个场景,其中副本在上午 10 点左右错过了一些突变(写入)。上午 10 点到 11 点之间的所有写入都将被压缩到一个 SSTable 中。如果修复在下午 3 点运行,当天早些时候遗漏的突变将包含在下午 3 点到下午 4 点 time-window,即使它确实属于上午 10 点到 11 点的 SSTable time-window。

在 TWCS 中,来自不同时间 windows 的 SSTables 不会被压缩在一起。这意味着来自 2 个不同时间 windows 的数据分散在 2 个 SSTable 中。即使上午 11 点的 SSTable 过期,它也不能从磁盘中删除(删除),因为下午 4 点的 SSTable 中有数据与其重叠。直到下午 4 点 SSTable 中的所有数据也都过期后,上午 11 点的 SSTable 才会被删除。

How data is maintained in Cassandra 中有关于 TWCS 工作原理的简化说明。它包括一个漂亮的图表,希望它能让您更容易地看到数据如何可能跨 SSTables 重叠。干杯!