Amazon dynamodb Amazon DynamoDB条件写入和原子计数器

Amazon dynamodb Amazon DynamoDB条件写入和原子计数器,amazon-dynamodb,database-concurrency,distributed-database,Amazon Dynamodb,Database Concurrency,Distributed Database,我目前使用的应用程序要求我在20到30分钟内多次增加DynamoDB中某个项目的属性。我一直在做一些关于DynamoDBs的补充阅读 dynamo中的原子计数器似乎是我需要的一个合乎逻辑的选择,但我确实担心数据的一致性,特别是在像dynamo这样的分布式数据库中,并且会影响数据的准确性。我希望API在高峰期会受到重创,但我希望避免与条件更新相关的性能问题。我想我想知道使用DynamoDB的原子计数器有多可靠,以及如何使用dynamo正确地实现它们。也欢迎提出其他建议 是的,这些是您想要使用的功能

我目前使用的应用程序要求我在20到30分钟内多次增加DynamoDB中某个项目的属性。我一直在做一些关于DynamoDBs的补充阅读


dynamo中的原子计数器似乎是我需要的一个合乎逻辑的选择,但我确实担心数据的一致性,特别是在像dynamo这样的分布式数据库中,并且会影响数据的准确性。我希望API在高峰期会受到重创,但我希望避免与条件更新相关的性能问题。我想我想知道使用DynamoDB的原子计数器有多可靠,以及如何使用dynamo正确地实现它们。也欢迎提出其他建议

是的,这些是您想要使用的功能。通过DynamoAPI使用它们就是一种方法

现在,在这两个特性之间,如果需要修改对业务非常关键的计数器,请使用条件写入(如果且仅当现有值为x时,请告诉API将值更新为x+10)

您提到的同一文档解释了原子计数器:

“如果您怀疑以前的请求 未成功。但是,您可能会面临应用相同更新的风险 两次。这对于网站计数器可能是可以接受的,因为 可以容忍游客人数稍微过多或过少。 但是,在银行应用程序中,使用 条件更新。“


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

我也在考虑使用某种缓存。将值写入缓存,然后每两分钟刷新一次缓存。只有在计数器不是业务关键型的情况下,缓存才会再次正常工作,因为缓存可能会下降,可能不太可靠等。这样,缓存有助于减少延迟并节省dynamo的吞吐量。