gpt4 book ai didi

amazon-dynamodb - 用于帐户余额的 DynamoDB 原子计数器

转载 作者:行者123 更新时间:2023-12-04 20:35:11 25 4
gpt4 key购买 nike

在 DynamoDB 中,原子计数器是一个避免竞争条件的数字

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html#WorkingWithItems.AtomicCounters

是什么使数字具有原子性,我可以从非单位值的浮点数中添加/减去吗?

目前我正在做:“SET balance = balance + :change”

(长版)我正在尝试将 DynamoDB 用于用户余额,因此准确性至关重要。可以同时从多个来源更新余额。不需要预取余额,我们永远不会拒绝交易,我只关心当所有操作完成后,我们还剩下正确的余额。只要最终结果正确,这些操作也可以按任何顺序应用。

据我了解,这应该没问题,但我还没有看到任何原子增量示例可以更改“1”以外的值

我之所以犹豫是因为像 Amazon DynamoDB Conditional Writes and Atomic Counters 这样的问题建议在类似情况下使用条件写入,这听起来是个糟糕的主意。如果我获取余额、更改并执行有条件的写入,则如果值在此期间更改,则写入可能会失败。然而,平衡是关键业务的定义,我总是在忽略文档时感到紧张

-附加信息-

所有写入都来自 Lambda 函数,我预计写入成功率几乎为 100%。但是,我还维护所有更改的历史记录,如果余额处于“未知”状态(例如网络超时),则可以锁定表并根据历史记录重新计算正确的余额。

我认为这是最好的“正常”操作。在 99.999% 的情况下,所有更新都将通过一次写入进行。失败的代价可能非常高,因为我们需要扫描客户的整个历史以重建平衡,但就权衡而言,这似乎是一个非常安全的赌注。

最佳答案

原子计数器的文档非常清楚,在我看来,它对您的用例来说是不安全的。

您要解决的问题很常见,AWS 建议在这种情况下使用乐观锁定。
请参阅以下 AWS 文档,
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptimisticLocking.html

关于amazon-dynamodb - 用于帐户余额的 DynamoDB 原子计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37286471/

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