作者:小小号号-- | 来源:互联网 | 2022-12-02 17:56
我的时间序列数据TTLs
在1-7天后(取决于用例).数据是不可变的,并按时间戳(cluster by timestamp
)排序- 数据是"写入时"的时间戳(因此新数据时间戳应该始终是渐进的)
分区大小不应超过10K项 - 通常要少得多(最多〜10MB
对于完整的10k项).
我没有找到关于如何配置压缩策略(要考虑哪些参数)的任何好文档,所以我决定这样做:
compaction = {'class': 'TimeWindowCompactionStrategy', 'compaction_window_size': '7', 'compaction_window_unit': 'DAYS'}
绝对不确定这是否正确
什么是KPI
我应该考虑?
1> Glauber Cost..:
没有一个正确的答案:
作为配置的结果,如果数据在过去7天内插入,则数据将被压缩在一起.TWCS的最大优点是它可以在不读取它们的情况下使整个SSTable到期,因为它知道SSTable中的所有数据都已经过期.
在这种情况下,您在1天内TTLd的数据尚未过期,因为它将在7天的窗口中集中在一起.在最坏的情况下,您的SSTable将在7天窗口的末尾插入一个突变,因此整个SSTable将保持7天左右,直到一个突变到期.
这听起来不是最理想的,但至少您可以从单个SSTable为该窗口中的数据提供所有读取服务.反过来说,你可以将窗口设置为一天.这会使您的数据过期更快,但对于7天内存活的数据,您现在将触及7个SSTable而不是一个.
摘要:
更大的时间窗口:更慢的到期时间,更快的实时数据读取更小的时间窗口:更快的到期时间,更慢的实时数据读取.
就像生活中的大多数事情一样,事实就在中间!虽然两种选择都可行 - 而你现在理解权衡,但最佳窗口可能在1和7中间.