在 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
如您所见,值和时间戳都没有更新。
我正在尝试使用时间戳在 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
如您所见,值和时间戳都没有更新。