2

这是一个示例用例:

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

通常,每个用户的操作已经在“UserAction”列族中,其中用户 id 作为行键,而操作在 timeuuid 列中。您可能还有“AllActions”列族,它存储所有具有相同 timeuuid 作为列名和用户 id 作为列值的操作。它基本上是一个关系列族,但不幸的是没有任何用户操作的细节。我想用这个列族查询很昂贵,因为随机分区。另一方面,如果您将所有详细信息存储在“AllActions”CF 中,那么 cassandra 一次无法正确处理该大行。这就是为什么我想将最后 N 个用户操作以及所有详细信息存储在固定数量的基于 timeuuid 的列中。

也许您可能对此用例有更好的设计解决方案...我喜欢听...

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

插入后,如果我们在 cql 的 DELETE 中有某种范围支持,我们可以删除旧的(溢出)列。AFAIK 不支持这一点。

那么,有什么想法吗?提前致谢...

4

1 回答 1

2

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

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

于 2012-03-03T12:52:00.340 回答