根据this datastax doc,卡桑德拉的原子性为:
在Cassandra中,写操作在分区级别是原子的,这意味着在行中插入或更新列被视为一次写操作。
根据this datastax doc,卡桑德拉的原子性为:
在Cassandra中,写操作在分区级别是原子的,这意味着在同一分区中两行或更多行的插入或更新被视为一个写操作。
我的困惑是原子性是在单行基础上还是在分区级别的表中可以包含多行?
根据我们在Cassandra中执行的查询类型,我认为这是两者的结合。
例如:
如果我有一个插入查询,它将始终在分区中插入一行。因此,Cassandra确保在分区级别成功插入此行。
但是,如果我的update查询的where子句具有限定多行的条件,则更新操作在分区级别是原子的,这意味着将根据条件更新所有符合条件的行,否则将不更新任何行。
我的理解正确吗?
答案 0 :(得分:3)
“行”和“分区”被合并,因为前一行表示分区,而现在行表示分区的一部分。
它们对于分区是原子的。请记住,这是指单个副本,因此一批包含5列的批处理中的一个或多个行都将在一个副本上的一次操作中全部更新(没有跨节点隔离)。如果您的设置为(key, value) VALUES ('abc', 'def')
,那么您将永远不会看到仅key
而不是value
设置。但是,您可能会进行读取,并且只设置了1个副本,而其他则没有。含义取决于您的复制因子和要求的一致性级别,您将看不到整个内容或什么都看不到。这也可以应用于分区中的多行,但是如果没有批处理(已记录或未记录),则无法使用单个update语句来更新2行。