如何在cassandra中实现固定数量的(timeuuid)列(使用CQL)?

时间:2012-03-01 23:02:32

标签: cassandra cql

以下是一个用例示例:

您需要存储最后N个(假设为固定存储区大小为1000个)用户操作,其中包含基于timeuuid的列中的所有详细信息。

通常,每个用户的操作都已在“UserAction”列系列中,其中用户ID为行键,timeuuid列中的操作。您可能还有“AllActions”列系列,它将所有具有相同timeuuid的操作存储为列名,将用户ID存储为列值。它基本上是一个关系列系列,但遗憾的是没有任何用户操作的细节。由于随机分区,我猜这个列系列的查询价格昂贵。另一方面,如果您将所有细节存储在“AllActions”CF中,那么cassandra无法在某一点正确处理该大行。这就是为什么我想在最后N个用户操作中存储固定数量的基于timeuuid的列的所有细节。

也许你可能有一个更好的设计解决方案用于这个用例...我喜欢听到......

如果没有,问题是如何有效地在cassandra(使用CQL)中实现固定数量的(timeuuid)列?

插入后,如果我们在cql的DELETE中有某种范围支持,我们可以删除旧的(溢出)列。 AFAIK对此没有任何支持。

那么,任何想法?提前谢谢......

1 个答案:

答案 0 :(得分:2)

恕我直言,这是C *必须像压缩一样处理自己的事情。在客户端处理这个问题并不是一个好主意。

也许,我们需要列系列的一些配置(存储)选项,使它们适合“最新数据”。