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

Java 在从DynamoDB保存和删除项目时使用DynamoDBMapperConfig Clobber或Update,java,spring,amazon-web-services,amazon-dynamodb,Java,Spring,Amazon Web Services,Amazon Dynamodb,我有一张带3个GSI的DynamoDB桌子。我只需要在表上执行3个操作-保存、删除和获取。所有项目都将是唯一的。 我不知道哪一个更好- 我有以下变量- ddbMapperConfigClobber = new DynamoDBMapperConfig.Builder().withConsistentReads( DynamoDBMapperConfig.ConsistentReads.CONSISTENT) .withSaveBehavior(Dy

我有一张带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文档:

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

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

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