cassandra - 如何在 Cassandra 中可视化原子性?
问题描述
根据这个datastax doc,Cassandra中的原子性是:
在 Cassandra 中,写入在分区级别是原子的,这意味着在一行中插入或更新列被视为一次写入操作。
而根据这个datastax doc,Cassandra中的原子性是:
在 Cassandra 中,写入操作在分区级别是原子的,这意味着同一分区中两行或多行的插入或更新被视为一次写入操作。
我的困惑是,原子性是在单行基础上看到的,还是在分区级别的表中可以包含多行?
我假设它是两者的组合,具体取决于我们在 Cassandra 中执行的查询类型。
例如 :
如果我有一个插入查询,它将始终在分区中插入一行。因此 Cassandra 确保此行在分区级别成功插入。
但是,如果我有更新查询,其 where 子句具有限定多行的条件,则更新操作在分区级别是原子的,这意味着根据条件的所有合格行都将被更新,或者不会更新。
我的理解正确吗?
解决方案
“行”和“分区”被混淆了,因为以前的行表示分区,现在行表示分区的一部分。
它们对分区是原子的。请记住,这是对单个副本的引用,因此包含 5 列的批次中的一行或多行都在一个副本上的单个操作中更新(无跨节点隔离)。如果您的设置(key, value) VALUES ('abc', 'def')
,您将永远不会只看到 thekey
而不是value
set。但是,您可能会进行读取,并且只有 1 个副本设置了它,而其他副本则没有。这意味着根据您要求的复制因子和一致性级别,您要么看到全部内容,要么什么也看不到。这也适用于分区中的多行,但您不能使用没有批处理(记录或未记录)的单个更新语句更新 2 行。
推荐阅读
- php - 变量中的 Livewire 实例将自身设置为 null
- python - 使用 conda 安装 mss 时出现错误
- java - java list.add() 正在更新所有索引
- r - 使用 R studio 在离线环境中循环本地包安装
- reactjs - 图像下载在 Reactjs 应用程序的移动设备中不起作用
- python - 如何根据某些标准定位和替换数据框中的值
- visual-studio-code - 如何在 vs 代码中使用不同的键来触发完成?
- linux - Alsa conf 不同的播放和捕获速率
- python - 未在 python setuptools 中安装软件包
- azure - REST API 客户端 - Visual Studio 更新