Amazon DynamoDBMapper.delete方法不会删除项目

时间:2017-10-16 18:10:32

标签: amazon-dynamodb

我使用AWS DynamoDBMapper Java类构建了一个存储库类来支持CRUD操作。在我的单元测试中,我创建了一个项目,将其保存到DB,加载它然后将其删除。然后我使用已删除项的主键对DB进行查询,查询返回一个空列表,所有看起来都正确。但是,当我在AWS控制台上检查表时,已删除的项仍然存在,而另一个会话中的另一个客户端仍然可以找到此项。我做错了什么?是否有任何其他配置或设置,以确保"硬删除"发生了预期?我的API看起来像这样:

public void deleteObject(Object obj) {
    Object objToDelete = load(obj);
    delete(obj);
}

public Object load(Object obj) {
    return MAPPER.load(Object.class, obj.getId(),
        ConsistentReads.CONSISTENT.config());
}

private void save(Object obj) {
    MAPPER.save(obj, SaveBehavior.CLOBBER.config());
}

private void delete(Object obj) {
    MAPPER.delete(obj);
}

任何帮助/提示/提示都是最受欢迎的

1 个答案:

答案 0 :(得分:0)

默认情况下,Dynamodb 最终一致。创建 - >阅读 - >立即删除并不总是有效。

  

最终一致性读取(默认) - 最终一致性   选项可最大化您的读取吞吐量。然而,最终   一致阅读可能无法反映最近完成的结果   写。通常在所有数据副本中达成一致性   一秒。在短时间后重复读取应该返回   更新数据。

     

非常一致的读取 - 除了最终的一致性,   Amazon DynamoDB还为您提供了灵活性和控制权   如果您的应用程序或您的应用程序的一个元素,那么一致性很强   申请,需要它。强一致的读取返回结果   这反映了之前收到成功回复的所有写入   阅读。