什么是Cassandra中的SERIAL和LOCAL_SERIAL一致性级别?

n3ipq98p  于 2022-11-05  发布在  Cassandra
关注(0)|答案(1)|浏览(169)

根据这个文档,Cassandra有不同的一致性级别,其中两个叫做SERIALLOCAL_SERIAL。除了这两个级别,我理解了所有的一致性级别。它说它与轻量级事务有关,但我也不明白。
如果有人能给我解释一下这些水平就太好了。

cbjzeqam

cbjzeqam1#

轻量级事务(LWT)是需要按顺序执行并且不能被中断的操作,它需要可线性化的一致性--用数据库术语来说,当事务正在进行时,记录被锁定,因此没有其他进程可以对其进行操作。
LWT也被称为比较和设置(CAS)操作,其中在执行“设置”(写语句)之前必须满足“比较”步骤(条件语句)。为了满足条件,LWT必须在写之前执行读(比较)--写前读。
LWT的一个典型用法是创建新用户名。在将用户名分配给用户之前,我们必须首先检查(读取)该用户名是否已在使用(“比较”步骤)。如果该用户名尚不存在,则我们可以创建它,否则用户必须选择另一个用户名。
CQL的条件语句包括使用IF EXISTSIF NOT EXISTS子句。例如:

INSERT INTO users (username, name) VALUES (?, ?) IF NOT EXISTS

序列一致性SERIALLOCAL_SERIAL专门用于“写前读”的读取阶段的轻量事务。您可以选择使用SERIAL一致性(要求所有DC中有仲裁副本)或LOCAL_SERIAL(要求本地DC中有仲裁副本)。
串行一致性不能用于正常的读取或写入,只能用于LWT。
有关更多信息,请参阅Lightweight transactions in Cassandra。干杯!

相关问题