Cassandra 中的更新不是反模式吗?



根据Datastax文档,在Cassandra中写入之前读取是一种反模式。

每当我们在CQLSH中使用UPDATE或使用Datastax驱动程序来设置几列(使用IF和集合更新(时,它不会先在写入之前进行读取吗?这不是反模式吗?我错过了什么吗?

附言我不是在谈论仅仅是 UPSERTS,而是特定列的更新。

啪!

不,更新不是反模式。

在Cassandra中,更新是一个类似于插入的更新插入操作。

UPDATE 将一个或多个列值写入 Cassandra 表中的行。与 INSERT 一样,UPDATE 是一个更新插入操作:如果指定的行不存在,该命令将创建它。同一分区键中的所有 UPDATE 都以原子方式和隔离方式应用。

但轻量级事务是在写入操作之前读取的。实际上以四次往返为代价。

轻量级事务示例:

#Lightweight transaction Insert
INSERT INTO customer_account (customerID, customer_email) 
VALUES (‘LauraS’, ‘lauras@gmail.com’)
IF NOT EXISTS;
#Lightweight transaction Update
UPDATE customer_account
SET    customer_email=’laurass@gmail.com’
IF     customerID=’LauraS’; 

上述两个语句都是轻量级事务

来源 : http://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlUpdate.html#cqlUpdate__description

最新更新