Cassandra LWT/Paxos查询和#x27;时间戳和普通查询';卡桑德拉时间戳
使用cassandra时,如果执行以下两个cql,则第二个cql将不会成功Cassandra LWT/Paxos查询和#x27;时间戳和普通查询';卡桑德拉时间戳,cassandra,timestamp,cql,Cassandra,Timestamp,Cql,使用cassandra时,如果执行以下两个cql,则第二个cql将不会成功 insert into job_info (id, create_time) values (5be224c6-8231-11e7-9619-9801b2a97471, 0) IF NOT EXISTS; insert into job_info (id, create_time) values (5be224c6-8231-11e7-9619-9801b2a97471, 1); 键空间和表如下所示: CREATE K
insert into job_info (id, create_time) values (5be224c6-8231-11e7-9619-9801b2a97471, 0) IF NOT EXISTS;
insert into job_info (id, create_time) values (5be224c6-8231-11e7-9619-9801b2a97471, 1);
键空间和表如下所示:
CREATE KEYSPACE scheduler WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;
CREATE TABLE scheduler.job_info (
id timeuuid PRIMARY KEY,
create_time int
) with caching = {'keys':'ALL', 'rows_per_partition':'NONE'};
我把这一期发到了,通讯员说:
您正在混合LWT/Paxos查询({IF NOT EXISTS}}),它处理
时间戳以其自己的方式,使用“正常”查询,这是众所周知的
在排序方面导致不可预测的结果(这里发生了什么
不是第二次插入失败,而是它被分配了一个
时间戳小于第一个查询,因此被忽略)。长
简而言之,不要将LWT/Paxos查询与其他查询(至少
在同一个分区上),您将避免这个问题
我的问题是,LWT/Paxos查询和“正常”查询的时间戳有什么区别
第一个cql和第二个cql的执行时间间隔为几秒,但第二个仍不成功。那么,这真的是时间戳造成的问题吗?如果两个查询从单个客户端(cqlsh/驱动程序)执行同步。您的最新值应该是
1
这两个查询是从不同的客户端执行的吗?如果是,则将其包括在您的问题中。非常令人吃惊的是,即使LWT和正常查询之间相隔几秒钟,LWT查询上的写入时间戳仍然比正常查询上的时间戳晚。如果这两个查询是从单个客户端执行的t(cqlsh/驱动程序)同步。您的最新值应为1
这两个查询是否从不同的客户端执行?如果是,则将其包括在您的问题中。令人吃惊的是,即使LWT和正常查询之间相隔几秒钟,LWT查询上的写入时间戳仍然比正常查询上的时间戳晚。