Database Cassandra写入一致性级别所有澄清

Database Cassandra写入一致性级别所有澄清,database,cassandra,nosql,cassandra-2.0,cap-theorem,Database,Cassandra,Nosql,Cassandra 2.0,Cap Theorem,根据税收数据: 如果协调器无法写入足够的副本以满足请求的一致性级别,则会引发不可用的异常,并且不会执行任何写入操作 这是否意味着在写入过程中,由写入更新的数据将不可用于读取请求?我的意思是,可能有4/5个节点成功地向协调器发送了成功消息,这意味着它们的数据已经更新。但是第五个还没有写。现在,如果读请求进入并到达这4个节点中的一个,它仍将显示旧数据,直到协调器收到第5个节点的确认并将新数据标记为有效?如果协调器在尝试写之前知道它不可能实现一致性,然后,它将在执行写操作之前立即使请求失败。(这在给出

根据税收数据:

如果协调器无法写入足够的副本以满足请求的一致性级别,则会引发不可用的异常,并且不会执行任何写入操作


这是否意味着在写入过程中,由写入更新的数据将不可用于读取请求?我的意思是,可能有4/5个节点成功地向协调器发送了成功消息,这意味着它们的数据已经更新。但是第五个还没有写。现在,如果读请求进入并到达这4个节点中的一个,它仍将显示旧数据,直到协调器收到第5个节点的确认并将新数据标记为有效?

如果协调器在尝试写之前知道它不可能实现一致性,然后,它将在执行写操作之前立即使请求失败。(这在给出的报价中有描述)

但是,如果协调器认为在尝试时有足够的节点达到其配置的一致性级别,它将开始向其对等方发送数据。如果其中一个节点没有返回成功,请求将失败,并且您将进入一种状态,其中失败的节点拥有旧数据,通过的节点拥有新数据

如果一个读取请求进入,它将显示它在到达的节点上找到的数据,无论它是旧的还是新的

让我们以你的例子来说明

如果有5个节点和3个复制节点。这将意味着这5个节点中的3个将具有您发送的写操作。但是,三个节点中的一个向协调器返回了故障。现在,如果您以一致性级别ALL阅读。您将读取所有三个节点,并将始终获得新的写入(最新时间戳始终获胜)


但是,如果使用一致性级别1进行读取,则有1/3的机会获得旧值。

如果协调器在尝试写入之前知道它不可能实现一致性,那么它将在写入之前立即使请求失败。(这在给出的报价中有描述)

但是,如果协调器认为在尝试时有足够的节点达到其配置的一致性级别,它将开始向其对等方发送数据。如果其中一个节点没有返回成功,请求将失败,并且您将进入一种状态,其中失败的节点拥有旧数据,通过的节点拥有新数据

如果一个读取请求进入,它将显示它在到达的节点上找到的数据,无论它是旧的还是新的

让我们以你的例子来说明

如果有5个节点和3个复制节点。这将意味着这5个节点中的3个将具有您发送的写操作。但是,三个节点中的一个向协调器返回了故障。现在,如果您以一致性级别ALL阅读。您将读取所有三个节点,并将始终获得新的写入(最新时间戳始终获胜)

但是,如果您使用一致性级别1进行读取,则有1/3的机会获得旧值