我正在为 Cassandra 2.1.3 上的时间序列应用程序创建数据模型。我们将为系统的每个用户保留 X 量的数据,我想知道针对此要求进行设计的最佳方法是什么。
选项1:
在分区键中使用“桶”,因此 X 周期的数据进入同一行。像这样的东西:
((id, bucket), timestamp) -> data
我可以一次删除一行,但要以维护这个存储桶概念为代价。它还限制了我可以查询的范围timestamp
,可能会导致多个查询。
选项2:
将所有数据存储在同一行中。N 删除是每列。
(id, timestamp) -> data
范围查询再次变得容易。但是删除许多列后性能如何?
鉴于我们计划使用 TTL 让数据过期,这两种模型中哪一种会提供最佳性能?Option1 << Option2 的墓碑开销还是两种模型上的每列都有一个墓碑?
我尽量避免把自己埋在墓碑墓地里。