WHERE 和 IF 之间的 Cassandra CAS 区别

Cassandra CAS differerence between WHERE and IF

使用文章Using lightweight transactions中的示例,这样的交易示例如下:

UPDATE cycling.cyclist_name
  SET firstname = 'Roxane'
  WHERE id = 4647f6d3-7bd2-4085-8d6c-1229351b5498
  IF firstname = 'Roxxane';

这与将 IF 替换为 WHERE 有何不同,如:

UPDATE cycling.cyclist_name
  SET firstname = 'Roxane'
  WHERE id = 4647f6d3-7bd2-4085-8d6c-1229351b5498 
  AND firstname = 'Roxxane';

我猜第二个不是一步完成读写,而是首先根据位置选择然后应用更新,而第一个阻止其他进程写入数据库时查询是 运行。

在来自两个不同客户端的并发更新的情况下,第一个查询将确保一次只应用一个(假设不使用非串行一致性)但是第二次更新不是这样。检查 .