【问题标题】:Amazon DynamoDB Conditional Writes and Atomic CountersAmazon DynamoDB 条件写入和原子计数器
【发布时间】:2014-05-02 04:14:04
【问题描述】:

我目前正在处理的应用程序要求我在 20 到 30 分钟的时间内多次增加属于 DynamoDB 中某个项目的属性。我一直在做一些关于 DynamoDB 的额外阅读conditional writes and atomic counters

dynamo 中的原子计数器似乎是我需要的合理选择,但我确实担心数据的一致性,尤其是跨分布式数据库(如 dynamo)和数据准确性问题。我预计 API 会在高峰时间受到重创,但我想避免与条件更新相关的性能问题。我想我想知道原子计数器在 DynamoDB 中的可靠性以及如何使用 dynamo 正确实现它们。也欢迎其他建议。

【问题讨论】:

    标签: amazon-dynamodb database-concurrency distributed-database


    【解决方案1】:

    是的,这些是您想要使用的功能。通过 Dynamo API 使用它们是一种方式。

    现在,在这两个功能之间,如果您需要修改的计数器对业务非常重要,请使用条件写入(您告诉 API 更新值以说 x + 10“IF 且仅当”现有值为 x )

    你提到的同一份文件解释了原子计数器:

    "如果您怀疑之前的请求可能会重试此操作 没有成功。但是,您可能会冒险应用相同的更新 两次。这对于网站计数器来说可能是可以接受的,因为您 可以容忍稍微多计或少计访客。 但是,在银行应用程序中,使用 有条件的更新。”

    因此,如果是关键业务操作,则使用条件写入,否则使用原子计数器。希望它澄清。

    【讨论】:

    • 我也在考虑使用某种缓存。将值写入缓存,然后每两分钟刷新一次缓存。
    • 只有当计数器不是关键业务时,缓存才会再次正常工作,因为缓存可能会下降并且可能不太可靠等。这样缓存有助于减少延迟并节省发电机 -吞吐量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2018-08-27
    • 2016-04-25
    • 2016-05-12
    • 2012-03-11
    • 2016-10-21
    • 2012-05-07
    相关资源
    最近更新 更多