如何将列附加到Cassandra中的特定行

时间:2013-03-28 17:26:21

标签: concurrency cassandra

似乎每个列都需要一个名称,并且将按照您提供的名称隐含的顺序存储。

如果我不关心名称,如果它被附加到现有列(这样它将出现在插入发生时存在的所有列之后),该怎么办?

实际上,我要求一个原子auto_increment列名,这样我可以保证并发尝试追加列不会踩到彼此的脚趾,并且所有这些都出现在列列表的末尾附近(所以UUID名字真的不是我想要的。)

用例实际上是一个日志(对于特定的密钥,因此我希望它保留在特定的行中),这些日志将相对较少地更新,但可以同时进行。如果我只使用时间戳作为列名,那么使用相同的时间戳和数据丢失可能会有两次并发编辑,我不希望这种情况发生。

Cassandra有可能这样吗?

1 个答案:

答案 0 :(得分:3)

您应该使用TimeUUIDType。它是按时间排序的,包括:

  • 时间戳(分辨率100 ns)
  • 避免碰撞的随机组件(非常高的概率)
  • 生成器的MAC地址,以避免跨机器发生冲突。

如果您想要始终获取最新的列,可以使用ReversedType将其包装起来,以提高效率。