我正在尝试为以下用例提出压缩策略。
我们有一张ttl为3年的表。我们场景中的大多数数据将在插入后的1个月内更新。
基本上所有对记录的更新都将在一个月内完成,平均在两周内完成。
可能会有一些异常值可能会在一个月后更新,但很少见。
现在我正在考虑使用TWCS,窗口为1个月(或可能是2周) 我知道我们的用例不是一个完美的时间序列数据。但是一个月之后,大多数数据将永远不会收到更新,并且会驻留在一个sstable中。
但是我不确定使用1个月的窗口大小是否有任何副作用。
此外,如果更新窗口大小(即一个月后)会产生任何重大问题吗?
请告诉我上述情况的最佳策略是什么?
答案 0 :(得分:2)
TWCS可能是个不错的选择。但这取决于数据大小。如果你有一个庞大的数据量,你会在1个月后得到大量的sstables。我认为使用Weekly / Biweekly SStables会更合理。
但这将我们带到下一个问题:"无序更新会发生什么?" 问题是sstable不会被丢弃,即使它已经全部到期,因为"阴影"另一个sstable中的数据因此,文件会在您的硬盘中徘徊,比您预期的要长。此外,由于TWCS在窗口完成后压缩数据ONCE,因此您的数据将分散在几个sstables上并可能影响您的读取性能。
这里有2个选项:
如果您在这里有关于TWCS,墓碑和阴影的优秀文章:http://thelastpickle.com/blog/2016/12/08/TWCS-part1.html
永远记住你以后可以改变你的压实策略,它不是免费的"或者"无痛",但可以做到。