gpt4 book ai didi

database - 选什么? Quorum OR Cassandra 中的最新时间戳数据

转载 作者:行者123 更新时间:2023-12-04 08:07:57 34 4
gpt4 key购买 nike

我正在阅读有关 Cassandra 的内容,并了解到有仲裁概念(即,如果有多个节点/副本存储特定 key ,则在读取操作期间选择并返回在这些副本中占多数的数据)来处理一致性在读操作期间。
我的怀疑可能很愚蠢,但我无法了解在我们的多数数据值与最新时间戳数据不同的情况下,Quorum 概念如何有用。
我们如何决定我们必须返回哪个数据值?
前任 -
对于特定的键“key1”
时间戳:t1>t2
5个副本
副本0(主节点)已关闭

replicaNo - 值 - TIMESTAMP -
副本 1 - 值 1 - t1
副本 2 - 值 2 - t2
副本 3 - 值 2 - t2
副本 4 - 值 2 - t2
那么在上面的情况下,我们应该返回多数(value2)还是最新的时间戳(value1)?
有人可以帮忙吗?

最佳答案

在 Cassandra 中,最后一次写入总是获胜。这意味着对于 (a1,t1) 和 (a2, t2) 与 t2>t1 值 a2 将被认为是正确的。
关于您的问题,单独阅读 QUORUM 并没有那么有用。那是因为为了具有完全一致性,必须遵循以下规则:

RC+WC>RF
(RC - 读取一致性;WC - 写入一致性;RF - 复制因子)
在您的情况下(当大多数副本具有旧数据时),QUORUM 会增加获得正确数据的机会,但不能保证。
最常见的用例是使用法定人数进行读取和写入。这意味着对于 5 的 RF,3 个节点将具有正确的值。现在,如果我们也从 3 个节点中读取数据,那么 3 个节点中的一个不可能没有新值(因为最多有 2 个具有旧值)。
关于读取的工作原理,当您要求 RF 为 5 的仲裁时,协调器节点将要求一个节点提供实际数据,并要求 2 个节点提供该数据的摘要。然后协调器节点将来自第一个节点的摘要(实际数据)与其他 2 个摘要进行比较。如果它们匹配,则返回第一个节点的所有数据。如果它们不同,则会触发读取修复,这意味着数据将在所有可用节点上更新。
因此,如果您在 RF 为 5 上以一致的方式编写一个,不仅即使在法定人数下您也会冒着获取旧数据的风险,而且如果拥有良好数据的节点发生问题,那么您可能会完全丢失它。找到平衡取决于特定的用例。如果有疑问,请使用法定人数进行读取和写入。
希望这是有道理的,
干杯!

关于database - 选什么? Quorum OR Cassandra 中的最新时间戳数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66132099/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com