如何避免cassandra中的列名冲突

时间:2014-02-13 18:38:40

标签: nosql cassandra hector

我需要在Cassandra列族(宽行/动态列)中存储用户名列表。 列名/比较器类型将是整数,以便根据分数对用户进行排序。 分数范围从0到100.问题是,如果两个或更多用户具有相同的分数,我如何将它们存储在不同的列上?,因为cassandra不会允许... 有没有办法将整数转换为timeuuids?或者针对这个问题的任何其他解决方案?

2 个答案:

答案 0 :(得分:3)

这是我经常看到的一个问题(不是分数,但阻止列名冲突)。通常,解决方案是将UUID连接到列名称的一种形式或另一种形式(因为这些形式永远不会发生冲突)。

如果你想继续按分数排序,那么我建议你使用CompositeType列名。 更具体地说:

CompositeType(score: Integer | time: TimeUUID)

Cassandra中的比较器将首先按分数排序,然后按时间排序(将最近的最后一个我相信)。 TimeUUID也应该处理“同时”得分发布,即使认为具有长时间戳的概率可能会低得离谱。

答案 1 :(得分:0)

您可以使用内置列表功能,请参阅http://www.datastax.com/dev/blog/cql3_collections 只需要包含值的列和该值的用户列表。

相关问题