2

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

  • 因果一致性:

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

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

  • 读写一致性:

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

  • 会话一致性:

    在这种情况下,进程 A 在会话中访问数据库。只要这个 Session 存在,系统就保证给你一个 Read-your-write Consistency

  • 单调读取一致性:

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

  • 单调写入一致性:

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

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

我的问题是 CASSANDRA 提供哪种类型的一致性? 以及这些一致性如何与规则“R+W>N”和“R+W<=N”相关

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

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

1 回答 1

2

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

于 2013-08-27T15:01:29.780 回答