在 Cassandra 中使用带有时间戳的插入

Using Insert with timestamp in Cassandra

我正在尝试使用时间戳在 Cassandra 中插入(也更新和删除)数据,但 table 没有发生任何变化。有什么帮助吗?

BEGIN BATCH
  INSERT INTO transaction_test.users(email,age,firstname,lastname) VALUES ('1',null,null,null) USING TIMESTAMP 0;
  INSERT INTO transaction_test.users(email,age,firstname,lastname) VALUES ('2',null,null,null) USING TIMESTAMP 1;
  INSERT INTO transaction_test.users(email,age,firstname,lastname) VALUES ('3',null,null,null) USING TIMESTAMP 2;         
APPLY BATCH;

我认为您陷入了 Cassandra 的“时间戳控制”。 C* 中的操作仅在新操作的时间戳比前一个操作“更高”时执行。

让我们看一个例子。给定以下插入

INSERT INTO test (key, value ) VALUES ( 'mykey', 'somevalue') USING TIMESTAMP 1000;

你期望这样的输出:

select key,value,writetime(value) from test where key='mykey';

 key   | value     | writetime(value)
-------+-----------+------------------
 mykey | somevalue |             1000

而且应该是这样的,除非你之前有人没有对这个时间戳更高的信息进行操作。例如,如果您现在写

INSERT INTO test (key, value ) VALUES ( 'mykey', '999value') USING TIMESTAMP 999;

这是输出

select key,value,writetime(value) from test where key='mykey';

 key   | value     | writetime(value)
-------+-----------+------------------
 mykey | somevalue |             1000

如您所见,值和时间戳都没有更新。