如何配置cassandra timewindowcompactionstrategy

ubbxdtey  于 2021-06-15  发布在  Cassandra
关注(0)|答案(2)|浏览(374)

我的时间序列数据 TTLs 1-7天后(取决于用例)。数据是不可变的,并按时间戳排序( cluster by timestamp )-数据的时间戳为“写入时”(因此新的数据时间戳应始终是渐进的)
分区大小不应超过10k项-通常要少得多(最多)~ 10MB 全部10公里项目)。
我没有找到任何关于如何配置压缩策略的好文档(需要考虑哪些参数),所以我决定这样做:

compaction = {'class': 'TimeWindowCompactionStrategy', 'compaction_window_size': '7', 'compaction_window_unit': 'DAYS'}

肯定不确定这是不是正确的
有什么问题 KPI 我应该考虑一下?

91zkwejq

91zkwejq1#

ttl在sstables中创建通过压缩删除的tombstone。太多的墓碑几乎不会影响你的阅读成绩。
因此,在您的情况下,监视每次读取的墓碑数是值得的 nodetool tablestats 或者jmx。
请看这篇关于在cassandra中删除墓碑的文章。

8fsztsew

8fsztsew2#

没有唯一正确的答案:
根据您的配置,如果数据是在过去7天内插入的,则会将其压缩在一起。twcs的最大优点是,它可以使整个sstable过期,甚至不必读取它们,因为它知道sstable中的所有数据都已过期。
在这种情况下,您在1天内获取的数据还不能过期,因为它将在7天的窗口中集中在一起。在最坏的情况下,您的sstable将有一个刚刚插入7天窗口末尾的突变,因此整个sstable将保留7天以上,直到该突变过期。
这听起来不太理想,但至少您可以从一个sstable为该窗口中的所有数据读取提供服务。反过来说,你会设置,例如,窗口为一天。这将使您的数据更快地过期,但对于7天有效的数据,您现在将接触7个sstables,而不是1个sstables。
总结:
时间窗口越大:过期越慢,实时数据的读取速度越快时间窗口越小:过期越快,实时数据的读取速度越慢。
就像生活中的大多数事情一样,真相就在中间!虽然这两个选项都能起作用,而且您现在已经了解了取舍,但最好的窗口可能在1和7的中间。

相关问题