如果我将一个实体保存到数据存储中,然后在通过实体密钥加载该实体之后立即执行该程序,该程序会等待并确保强一致性吗?
thing.setValue(newValue);
ofy().save().entity(thing).now();
Thing updatedThing = ofy().load().key(thingKey).now();
updatedThing
是否包含新值?
对于要更新实体的情况,这是确保强烈一致性的好方法吗?
答案 0 :(得分:5)
是的,键查询在数据存储区中始终保持一致。从Eventual Consistency in Cloud Datastore开头的表格开始:
[Lookup by key][2] (get()) Strong consistency
但是有一个陷阱-如果您在同一笔交易中同时执行写操作和读操作 ,读操作将看不到书面信息。来自Isolation and consistency:
此一致的快照视图也扩展为写入后读取 内部交易。与大多数数据库不同,查询和获取 在Cloud Datastore事务中 not 看不到结果 先前在该事务中进行写入。具体来说,如果一个实体是 在事务内修改或删除,查询或获取返回的 交易开始时实体的原始版本,如果该实体不存在,则为 。