Cassandra:使用相同的主键值集插入包含不同数据的多行

时间:2015-11-07 22:53:19

标签: node.js insert cassandra time-series cql

假设我有两行时间序列数据,这些数据与主键具有完全相同的时间戳等。唯一的区别是其余的数据是不同的。 因此,如果集合1具有[时间戳,其他键...],value_col1,value_col2,则集合2的value_col1和value_col2将具有与集合1不同的值。

现在,如果我将这些集合放入一个要插入的批处理中,或者使用单独的插入查询非常快速地进行,那么我在数据库中看到的结果可能会有些不一致:可能是集合1中的value_col1与value_col2的值相结合最后一行。

我花了整整一个晚上发现这实际上是一个错误(或者可能是预期的行为......)我现在使用稍微增加的第2集时间戳我的解决方法.sympton一直没有被注意到很多情况下,但在我的情况下col1是col2的部分解码键,那么我有一个问题! 有没有人有同样的问题或者知道问题究竟在哪里?

我在使用cassandra 2.0.14的nodejs 5.0.0上使用cassandra-node驱动。

1 个答案:

答案 0 :(得分:0)

您应该在Cassandra架构中定义以避免竞争条件。

如果您在同一时刻提供具有相同分区和群集密钥的不同数据,您将无法定义应保留哪些数据。

如果要保留2行,则应使用uuidtimeuuid数据类型。

请参阅nodejs驱动程序文档中的更多信息:http://docs.datastax.com/en/developer/nodejs-driver/2.2/nodejs-driver/reference/uuids-timeuuids.html