【问题标题】:Understanding Eventual Consistency in Cassandra from theory从理论上理解 Cassandra 中的最终一致性
【发布时间】:2013-08-28 23:34:58
【问题描述】:

我正在写我的学士论文。 因此,我关心的是理论上的最终一致性以及 Cassandra 如何应用该理论。 要理解我的问题,请考虑以下一致性定义(据我所知):

  • 因果一致性:

    一个系统提供因果一致性,如果内存操作 系统的每个节点都可以看到潜在的因果关系 以相同的顺序。 (维基百科)

    因此,如果进程 A 将数据 X 写入数据库,然后进程 B 读取该数据 X 并用 Y 覆盖它,那么我们说如果 B 在所有副本上都获得 A 之后的 X,则确保了因果一致性(节点)。

  • 读写一致性:

    这是因果一致性的一个特例。因此读写在同一个进程A上处理。这种一致性保证了A在修改后永远不会有旧的数据对象。

  • 会话一致性:

    在这种情况下,进程 A 在会话中访问数据库。只要这个 Session 存在,系统就保证你读你写的一致性

  • 单调读取一致性:

    如果一个进程在读取后​​得到一个特定的数据对象,系统保证进程在每次后续的读取访问时都不会得到一个较旧的数据对象。

  • 单调写入一致性:

    在这种情况下,对 DB 的写入选项将被序列化,写入选项的顺序会导致哪个进程首先写入。

    现在这是一些理论上的一致性选项,其中一些或其中一个在 NoSQL 系统中实现。但是如果我理解错了,请纠正我。

我的问题是 CASSANDRA 提供哪种类型的一致性? 这些一致性与“R+W>N”和“R+W

whereby 
R=read replica count 
W=write replica count 
N=replication factor

I'd really appreciate a quick answer. Thank You!!!

【问题讨论】:

    标签: nosql cassandra replication eventual-consistency


    【解决方案1】:

    Cassandra 中的一致性级别可以针对任何读取或写入查询进行设置。这允许应用程序开发人员根据他们对响应时间和数据准确性的要求,在每个查询的基础上调整一致性。 Cassandra 为读取和写入提供了许多一致性级别。

    你应该先了解QUOROM

    QUORUM 是一个很好的中间地带,可确保高度的一致性,但仍能容忍一定程度的失败。

    法定人数计算为(四舍五入为整数):

    (replication_factor / 2) + 1

    例如,复制因子为 3,法定人数为 2(可以容忍 1 个副本下降)。复制因子为 6 时,法定人数为 4(可以容忍 2 个副本下降)。

    对于你的问题,下面给出解释

    (nodes_read + nodes_written) > 复制因子

    R + W > N

    例如,如果您的应用程序对写入和读取操作都使用 QUORUM 一致性级别,并且您使用的复制因子为 3,那么这可确保始终写入 2 个节点并始终读取 2 个节点。写入和读取的节点组合 (4) 大于复制因子 (3) 确保强读取一致性

    您可以在下面发布的链接中详细了解 Quorom 和一致性

    http://www.datastax.com/docs/1.1/dml/data_consistency

    【讨论】:

      猜你喜欢
      • 2017-09-26
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      相关资源
      最近更新 更多