如何确定DynamoDB项目是否确实已删除?

时间:2017-09-28 08:21:48

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

DynamoDB提供用于删除项目的API。在返回的DeleteItemOutcomeDeleteItemResult中,没有字段或方法来确定是否找到了密钥并且项目确实已删除。

确定项目是否确实存在和删除的唯一方法是请求项目'属性:

new DeleteItemSpec() .withPrimaryKey("key","1") .withReturnValues(ReturnValue.ALL_OLD))

然而,这会消耗额外的读取容量。有没有更有效的方法来检查删除结果 - 找到密钥和删除/无效密钥?

2 个答案:

答案 0 :(得分:8)

DeleteItemResult#getAttributes() 用于确定DeleteItem操作是否实际删除了某个项目的方式

如果指定ReturnValue.ALL_OLD并且项目已删除,则返回项目属性的地图,否则返回空地图。这是确定操作是否成功的唯一方法。 API不会返回任何其他确认。

请注意,DeleteItem操作每次至少会消耗1个写入容量单位。如果删除的项目大于1KB,则消耗的容量将大于1.

供参考: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/CapacityUnitCalculations.html#ItemSizeCalculations.Writes

答案 1 :(得分:0)

尝试使用条件表达式,例如

attribute_exists(my_key)

如果元素不存在,将引发条件检查错误