【问题标题】:Datastore strong consistency by loading saved entity by key通过按键加载保存的实体实现数据存储强一致性
【发布时间】:2018-09-22 23:22:36
【问题描述】:

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

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

updatedThing 是否包含新值?

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

【问题讨论】:

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


【解决方案1】:

是的,密钥查找在数据存储中始终是一致的。来自Eventual Consistency in Cloud Datastore开头的表格:

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

但有一个问题 - 如果您在同一事务中同时进行写入和读取操作,则读取将看不到写入的信息。来自Isolation and consistency

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 2013-07-25
    相关资源
    最近更新 更多