首页 > 解决方案 > 如何在 Cassandra 中可视化原子性?

问题描述

根据这个datastax doc,Cassandra中的原子性是:

在 Cassandra 中,写入在分区级别是原子的,这意味着在一行中插入或更新列被视为一次写入操作。

而根据这个datastax doc,Cassandra中的原子性是:

在 Cassandra 中,写入操作在分区级别是原子的,这意味着同一分区中两行或多行的插入或更新被视为一次写入操作。

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

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

例如 :

如果我有一个插入查询,它将始终在分区中插入一行。因此 Cassandra 确保此行在分区级别成功插入。

但是,如果我有更新查询,其 where 子句具有限定多行的条件,则更新操作在分区级别是原子的,这意味着根据条件的所有合格行都将被更新,或者不会更新。

我的理解正确吗?

标签: cassandranosqlcassandra-3.0atomic

解决方案


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

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


推荐阅读