通过按键加载保存的实体,数据存储具有强大的一致性

时间:2018-09-22 23:22:36

标签: google-app-engine google-cloud-datastore objectify

如果我将一个实体保存到数据存储中,然后在通过实体密钥加载该实体之后立即执行该程序,该程序会等待并确保强一致性吗?

thing.setValue(newValue);
ofy().save().entity(thing).now();
Thing updatedThing = ofy().load().key(thingKey).now(); 

updatedThing是否包含新值?

对于要更新实体的情况,这是确保强烈一致性的好方法吗?

1 个答案:

答案 0 :(得分:5)

是的,键查询在数据存储区中始终保持一致。从Eventual Consistency in Cloud Datastore开头的表格开始:

[Lookup by key][2] (get())    Strong consistency

但是有一个陷阱-如果您在同一笔交易中同时执行写操作和读操作 ,读操作将看不到书面信息。来自Isolation and consistency

  

此一致的快照视图也扩展为写入后读取   内部交易。与大多数数据库不同,查询和获取   在Cloud Datastore事务中 not 看不到结果   先前在该事务中进行写入。具体来说,如果一个实体是   在事务内修改或删除,查询或获取返回的   交易开始时实体的原始版本,如果该实体不存在,则为