我使用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);
}
任何帮助/提示/提示都是最受欢迎的
答案 0 :(得分:0)
默认情况下,Dynamodb 最终一致。创建 - >阅读 - >立即删除并不总是有效。
最终一致性读取(默认) - 最终一致性 选项可最大化您的读取吞吐量。然而,最终 一致阅读可能无法反映最近完成的结果 写。通常在所有数据副本中达成一致性 一秒。在短时间后重复读取应该返回 更新数据。
非常一致的读取 - 除了最终的一致性, Amazon DynamoDB还为您提供了灵活性和控制权 如果您的应用程序或您的应用程序的一个元素,那么一致性很强 申请,需要它。强一致的读取返回结果 这反映了之前收到成功回复的所有写入 阅读。