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

Nosql 从理论上理解卡桑德拉的最终一致性,nosql,cassandra,replication,eventual-consistency,Nosql,Cassandra,Replication,Eventual Consistency,我正在写学士论文的路上。 因此,我关心的最终是理论上的一致性,以及卡桑德拉如何应用这个理论。 为了理解我的问题,考虑下面的一致性定义(据我理解): 因果一致性: 如果内存操作 系统的每个节点都可以看到潜在的因果关系 按同样的顺序。(维基百科) 因此,如果进程a将数据X写入数据库,然后进程B读取该数据X并用Y覆盖该数据,那么我们说,如果B在所有副本(分别为节点)上的a之后获得X,则可以确保因果一致性 读写一致性: 这是因果一致性的一个特例。因此,读取和写入在同一进程A上处理。这种类型的一致性确保

我正在写学士论文的路上。 因此,我关心的最终是理论上的一致性,以及卡桑德拉如何应用这个理论。 为了理解我的问题,考虑下面的一致性定义(据我理解):

  • 因果一致性:

    如果内存操作 系统的每个节点都可以看到潜在的因果关系 按同样的顺序。(维基百科)

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

  • 读写一致性:

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

  • 会话一致性:

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

  • 单调读取一致性:

    如果一个进程在读取后得到一个特定的数据对象,那么系统保证在每次后续的读取访问中,该进程不会得到一个旧的数据对象

  • 单调写入一致性:

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

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

我的问题是卡桑德拉提供了哪种类型的一致性?
这些一致性分别与规则“R+W>N”有何关系“Cassandra中的R+W一致性级别可以在任何读或写查询上设置。这允许应用程序开发人员根据响应时间和数据准确性的要求,在每个查询的基础上调整一致性。Cassandra为读写操作提供了许多一致性级别

你应该首先了解库洛姆

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

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

(复制系数/2)+1

例如,当复制因子为3时,仲裁为2(可以容忍1个副本宕机)。复制因子为6时,仲裁为4(可以容忍2个副本宕机)

对于您的问题,解释如下

(节点读取+节点写入)>复制系数

R+W>N

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

您可以在下面的链接中详细阅读有关Quorom和一致性的更多信息

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

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