【发布时间】:2022-10-23 18:41:38
【问题描述】:
根据this 文档,Cassandra 有不同的一致性级别,其中两个分别称为SERIAL 和LOCAL_SERIAL。我了解除了这两个级别之外的所有一致性级别。它说它与轻量级交易有关,但我也不明白。
如果有人可以向我解释这些级别,那就太好了。
【问题讨论】:
标签: cassandra consistency
根据this 文档,Cassandra 有不同的一致性级别,其中两个分别称为SERIAL 和LOCAL_SERIAL。我了解除了这两个级别之外的所有一致性级别。它说它与轻量级交易有关,但我也不明白。
如果有人可以向我解释这些级别,那就太好了。
【问题讨论】:
标签: cassandra consistency
轻量级事务 (LWT) 是需要按顺序执行且不能中断的操作,需要线性一致的一致性——在数据库术语中,记录在事务进行时被锁定,因此没有其他进程可以对其进行操作。
LWT 也称为比较和设置 (CAS) 操作,其中必须在执行“设置”(写入语句)之前满足“比较”步骤(条件语句)。为了满足该条件,LWT 必须在写入之前执行读取(比较)--read-before-write。
LWT 的一个经典示例用法是创建新用户名。在将用户名分配给用户之前,我们必须首先检查(读取)用户名是否已在使用中(“比较”步骤)。如果它不存在,那么我们可以创建它,否则用户必须选择另一个用户名。
CQL 的条件语句包括使用IF EXISTS 或IF NOT EXISTS 子句。例如:
INSERT INTO users (username, name) VALUES (?, ?) IF NOT EXISTS
串行一致性SERIAL 和LOCAL_SERIAL 专门用于“read-before-write”读取阶段的轻量级事务。您可以选择使用SERIAL 一致性(要求所有 DC 中的副本法定人数)或LOCAL_SERIAL(要求本地 DC 中的副本法定人数)。
串行一致性不能用于正常读取或写入,只能用于 LWT。
有关详细信息,请参阅Lightweight transactions in Cassandra。干杯!
【讨论】: