从理论上理解卡桑德拉的最终一致性

时间:2013-08-26 13:01:38

标签: nosql cassandra replication eventual-consistency

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

  • 因果一致性

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

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

  • 读写一致性

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

  • 会话一致性:

    在这种情况下,进程A访问会话中的DB。只要此会话存在,系统就会保证您具有“读写一致性”

  • 单调阅读一致性

    如果进程在读取后​​获取特定数据对象,则系统会保证每个后续Read-Access上的进程都不会获得较旧的数据对象。

  • 单调写一致性

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

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

  

我的问题是CASSANDRA提供哪种类型的一致性?    这些Consistencys如何与规则“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!!!

1 个答案:

答案 0 :(得分:2)

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

您应该首先了解QUOROM

QUORUM是一个很好的中间地带,确保了强大的一致性,但仍能容忍某种程度的失败。

法定人数计算为(向下舍入为整数):

(replication_factor / 2)+ 1

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

对于您的问题,解释如下:

  

(nodes_read + nodes_written)> replication_factor

     

R + W> Ñ

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

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

  

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