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

时间:2015-02-18 14:02:03

标签: cassandra

我试图使用时间戳在Cassandra中插入(否则更新和删除)数据,但表中没有变化 任何帮助PLZ?

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;

1 个答案:

答案 0 :(得分:7)

我认为你正在陷入卡桑德拉"时间戳的控制"。仅当新操作的时间戳为" 更高"时才执行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

它应该是这样的,除非你之前没有人用更高的TS对这些信息进行操作 - 例如,如果你现在写的话

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

正如你所看到的,ts值都没有被更新。

HTH, 卡罗