【发布时间】:2018-02-08 18:58:13
【问题描述】:
我们根据类别将事件存储在多个表中。 每个事件都有一个 id,但包含多个子元素。 我们有一个查找表来使用 subelement_id 查找事件。 每个子元素最多可以参加 7 个活动。 因此,该分区最多可容纳 7 行。 在 5 年内,我们将在 eventlookup 中有 30-500 亿行。
CREATE TABLE eventlookup (
subelement_id text,
recordtime timeuuid,
event_id text,
PRIMARY KEY ((subelement_id), recordtime)
)
问题:一旦达到 5(或其他数字)年标记,我们如何删除旧数据。 我们希望以特定的时间间隔清除“尾巴”,比如每周或每月。
目前调查的方法:
- TTL X 年(性能不错,但需要事先知道 TTL,每列多出 8 个字节)
- 不删除 - 只需忽略问题(其他人的问题:0)
- 速率受限的单行删除(执行完整的表扫描并可能执行数十亿条删除语句)
- 将表拆分为多个表 -> “CREATE TABLE eventlookupYYYY”。不需要一年一次,只需放弃它。 (问题是每次读取都可能查询所有表)
还有其他我们可以考虑的方法吗?
是否有我们现在可以做出的设计决策(我们还没有投入生产)来缓解未来的问题?
【问题讨论】:
-
嗨@Mumi,你如何设置“X 年的 TTL”?