【问题标题】:What are SERIAL and LOCAL_SERIAL consistency levels in Cassandra?Cassandra 中的 SERIAL 和 LOCAL_SERIAL 一致性级别是什么?
【发布时间】:2022-10-23 18:41:38
【问题描述】:

根据this 文档,Cassandra 有不同的一致性级别,其中两个分别称为SERIALLOCAL_SERIAL。我了解除了这两个级别之外的所有一致性级别。它说它与轻量级交易有关,但我也不明白。

如果有人可以向我解释这些级别,那就太好了。

【问题讨论】:

    标签: cassandra consistency


    【解决方案1】:

    轻量级事务 (LWT) 是需要按顺序执行且不能中断的操作,需要线性一致的一致性——在数据库术语中,记录在事务进行时被锁定,因此没有其他进程可以对其进行操作。

    LWT 也称为比较和设置 (CAS) 操作,其中必须在执行“设置”(写入语句)之前满足“比较”步骤(条件语句)。为了满足该条件,LWT 必须在写入之前执行读取(比较)--read-before-write。

    LWT 的一个经典示例用法是创建新用户名。在将用户名分配给用户之前,我们必须首先检查(读取)用户名是否已在使用中(“比较”步骤)。如果它不存在,那么我们可以创建它,否则用户必须选择另一个用户名。

    CQL 的条件语句包括使用IF EXISTSIF NOT EXISTS 子句。例如:

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

    串行一致性SERIALLOCAL_SERIAL 专门用于“read-before-write”读取阶段的轻量级事务。您可以选择使用SERIAL 一致性(要求所有 DC 中的副本法定人数)或LOCAL_SERIAL(要求本地 DC 中的副本法定人数)。

    串行一致性不能用于正常读取或写入,只能用于 LWT。

    有关详细信息,请参阅Lightweight transactions in Cassandra。干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-23
      • 2018-06-13
      • 2016-07-05
      • 2014-09-16
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      相关资源
      最近更新 更多