【问题标题】:How does Dynamo manage write conflict?Dynamo 如何管理写入冲突?
【发布时间】:2013-09-18 03:19:47
【问题描述】:

当 Dynamo 写入一个节点时,如果这个节点有这个数据的冲突版本,它会怎么做?

直接删除它,还是将它与冲突的版本一起存储?

【问题讨论】:

    标签: nosql cassandra amazon-dynamodb riak


    【解决方案1】:

    这在Dynamo paper 的第 4.4 节(数据版本控制)中有专门介绍;该对象的多个版本被保留,并且需要在稍后由客户端进行协调(在讨论典型的实际使用时,客户端的后续操作然后将所述协调后的数据写回集群)。

    我们 (Basho/Riak) 尝试提供与 Riak 相关的相当不错的主题报道,包括指向其他​​资源的链接,网址为:http://docs.basho.com/riak/latest/theory/concepts/Vector-Clocks/

    【讨论】:

    • 那篇论文有很多我不知道的有趣信息; AWS 当前的 DynamoDB 产品中的一些似乎也不正确。您确定本文中的 Dynamo 与 AWS 提供的 DynamoDB 之间存在一对一的关系吗?
    • @brian 在论文的第 5 节中,据说读取操作的最后一步是“(v) 如果启用了版本控制,则执行语法协调并生成一个不透明的写入上下文,其中包含包含所有剩余版本的矢量时钟。”由于协调器是发电机中的节点之一,因此它不了解数据的语义。我的问题是协调员如何进行句法协调?
    • @CoryKendall - 不是“不正确”回复:DynamoDB,而是 DynamoDB 不是 Dynamo 实现,真的 :)。 OP 用很多非常不同的东西标记了它,我只是去了解它的工作原理:Dynamo(原始论文)和 Riak。
    猜你喜欢
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    相关资源
    最近更新 更多