如何在 Cassandra 中可视化原子性?

How to visualize Atomicity in Cassandra?

根据 this datastax doc Cassandra 中的原子性是:

In Cassandra, a write is atomic at the partition-level, meaning inserting or updating columns in a row is treated as one write operation.

而根据 this datastax doc Cassandra 中的原子性是:

In Cassandra, a write operation is atomic at the partition level, meaning the insertions or updates of two or more rows in the same partition are treated as one write operation.

我的困惑是,原子性是在单行基础上看到的,还是在分区级别可以包含多个行的 table?

我假设它是两者的结合,具体取决于我们在 Cassandra 中执行的查询类型。

例如:

如果我有一个插入查询,它总是会在一个分区中插入一行。因此 Cassandra 确保该行在分区级别成功插入。

但是如果我有更新查询,其 where 子句的条件是限定多行,那么更新操作在分区级别是原子的,这意味着根据条件更新所有符合条件的行,或者 none是。

我的理解对吗?

"row" 和 "partition" 被混淆了,因为以前行表示分区,现在行表示分区的一部分。

它们对分区来说是原子的。请记住,这是针对单个副本的参考,因此包含 5 列的批处理中的一行或多行都在一个副本上的单个操作中全部更新(无跨节点隔离)。如果您设置 (key, value) VALUES ('abc', 'def'),您将永远不会只看到 key 而看不到 value 集。但是,您可能会进行读取,并且只有 1 个副本设置了它,而其他副本则没有。这意味着根据您的复制因子和要求的一致性级别,您要么看到全部内容,要么一无所获。这也适用于一个分区内的多行,但您不能在没有批处理(记录或未记录)的情况下使用单个更新语句更新 2 行。