我的时间序列数据TTLs
在1-7天后(取决于用例)。
数据是不可变的,并按时间戳(cluster by timestamp
)排序-数据带有时间戳“写时”(因此,新数据时间戳应始终为渐进式)
分区大小不应超过1万个项目-通常要少得多(完整的1万个项目最多为10MB
)。
我没有找到有关如何配置压缩策略(要考虑哪些参数)的良好文档,因此我决定这样做:
compaction = {'class': 'TimeWindowCompactionStrategy', 'compaction_window_size': '7', 'compaction_window_unit': 'DAYS'}
绝对不确定这是正确的
我应该考虑哪些
KPI
? 最佳答案
没有一个正确的答案:
配置的结果是,如果数据是在最近7天内插入的,则数据将被压缩在一起。 TWCS的最大优点是它可以使整个SSTables失效,甚至不读取它们,因为它知道SSTable中的所有数据都已经失效。
在这种情况下,您在1天中进行TTL传输的数据还不能过期,因为它们将在7天的窗口中集中在一起。在最坏的情况下,您的SSTable将有一个突变插入到7天窗口的末尾,因此整个SSTable将再保留7天,直到一个突变终止。
这听起来不是很理想,但是至少您将能够从单个SSTable中为该窗口中的数据提供所有读取。反之,则可以将窗口设置为一天。这将使您的数据过期快得多,但是对于存活7天的数据,您现在将使用7个SSTable,而不是1个。
概括:
较大的时间范围:较慢的到期时间,更快的实时数据读取
时间窗口更小:过期时间更快,实时数据读取速度更慢。
就像生活中的大多数事物一样,真相在中间!虽然这两个选项都可以工作-并且您现在已经了解了取舍,但最佳窗口可能在1到7的中间位置。