在Cassandra中,如果我在一行中同时更新不同的列,是否会出现写入冲突?
例如我有一张表
CREATE TABLE foo (k text, a text, b text, PRIMARY KEY (k))
我的代码中的一个帖子更新了列a
INSERT INTO foo (k, a) VALUES ('hello', 'foo')
而另一个帖子更新列b
INSERT INTO foo (k, b) VALUES ('hello', 'bar').
当同时运行时,两个查询可能同时到达服务器。
我是否总能期望在一个CQL中更新两列的结果相同?
INSERT INTO foo(k, a, b) VALUES ('hello', 'foo', 'bar')
是否会有任何写入冲突?每个插入都是原子吗?
正如汤姆在回答中提到的那样,在卡桑德拉,所有操作都是以列为基础的。然后每列应该有一个时间戳。在这种情况下,上述方案不会带来任何麻烦,因为一个线程只会更新列a
,而另一个线程只更新列b
。我的理解是否正确?
谢谢!