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

Mic*_*cro 1 google-app-engine objectify google-cloud-datastore

如果我将实体保存到数据存储区,然后在通过它的密钥加载实体后,程序是否会等待并确保强一致性?

thing.setValue(newValue);
ofy().save().entity(thing).now();
Thing updatedThing = ofy().load().key(thingKey).now(); 
Run Code Online (Sandbox Code Playgroud)

是否updatedThing包含新值?

当我想要更新实体时,这是一种确保案例强一致性的好方法吗?

Dan*_*scu 5

是的,密钥查找在数据存储区中始终保持一致.从Cloud Datastore中最终一致性开头的表中:

[Lookup by key][2] (get())    Strong consistency
Run Code Online (Sandbox Code Playgroud)

但是有一个问题 - 如果你在同一个事务中同时进行写入和读取,则读取将不会看到写入的信息.从隔离和一致性:

此一致快照视图还扩展到在事务内写入后的读取.与大多数数据库不同,查询和获取Cloud Datastore事务不会在该事务中看到先前写入的结果.具体而言,如果在事务中修改或删除实体,则查询或获取将返回事务开始时实体的 原始版本,如果该实体不存在则返回任何内容.