java - 从 DynamoDB 保存和删除项目时使用 DynamoDBMapperConfig Clobber 或 Update

标签 java spring amazon-web-services amazon-dynamodb

我有一个包含 3 个 GSI 的 DynamoDB 表。我只需要对表执行 3 个操作 - 保存、删除和获取。所有的元素都是独一无二的。 我很困惑哪个会更好 -

我有以下变量 -

ddbMapperConfigClobber = new DynamoDBMapperConfig.Builder().withConsistentReads(
            DynamoDBMapperConfig.ConsistentReads.CONSISTENT)
            .withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.CLOBBER).build();


ddbMapperConfigUpdate = new DynamoDBMapperConfig.Builder().withConsistentReads(
            DynamoDBMapperConfig.ConsistentReads.CONSISTENT)
            .withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.UPDATE).build();

我应该使用哪一个来保存

ddbMapper.save(item, ddbMapperConfigUpdate); or  ddbMapper.save(item, ddbMapperConfigClobber);

我应该使用哪一个来删除 -

ddbMapper.delete(item,ddbMapperConfigClobber); or ddbMapper.delete(item,ddbMapperConfigUpdate);

最佳答案

以下是描述不同保存行为的 AWS 文档:

https://aws.amazon.com/blogs/developer/using-the-savebehavior-configuration-for-the-dynamodbmapper/

当该项目存在时,每个项目都有不同的行为。

我知道您是说您只关心保存/读取/删除而不关心更新,但您必须记住 DynamoDB 不是事务性数据库。所以你必须考虑重试和幂等性。 DynamoDB 执行本身的交付机制。还有调用者的保证级别(即至少一次、最多一次等)。

所以无论你喜欢与否,你都必须关心更新。 现在,它在某种意义上可能并不“重要”(因为您已经以某种方式保证相同的信息始终传播),但 DynamoDB 不知道这一点,因此您必须回答这个问题(或将其留空以使用默认行为)

关于java - 从 DynamoDB 保存和删除项目时使用 DynamoDBMapperConfig Clobber 或 Update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44860262/

相关文章:

java - 如何让 eclipse 识别预处理器语句?

mysql - 通过 JPA 存储库中的 native 查询然后通过 sql 查询获取不同的顺序

amazon-web-services - 在没有 AWS_SECRET_ACCESS_KEY 的情况下,您可以使用 AWS_ACCESS_KEY_ID 做什么?

amazon-web-services - Jenkins ECS 和 EFS 出错

java - Scala 有 floatToIntBits 和 intBitsToFloat 方法吗?

面向非线性应用层协议(protocol)的Java服务器程序

Java ReplaceAll 正则表达式用于替换Json字符串值

java - 如何在 Spring 应用程序中配置 jetty 最大 header 大小

java - 使用 Spring Boot 或 Hibernate Validator 验证日期

numpy - 如何为我的 AWS Elastic Beanstalk 应用程序安装 matplotlib?