我有一个包含 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/