写然后读取实体不从数据存储区获取实体

时间:2012-02-04 00:14:36

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

我遇到以下问题。我现在正在使用低级别 谷歌数据存储API而不是JDO,这样我应该在一个 更好的位置,以确切了解我的代码中发生了什么。我是 将实体写入数据存储区,然后不久读取它 来自使用Jetty和eclipse的数据存储区。有时写的 实体未被阅读。如果是这样的话,这将是一个真正的问题 发生在生产代码中。我使用的是2.0 RC2 API。

我已多次尝试过,有时会检索实体 来自数据存储区,有时它不是。我做的很简单 提交写入事务后立即查询数据存储区。

(如果我通过调试器运行代码,那么运行得足够慢 该实体有可能在第二次通过时被回读。

非常感谢任何有关此问题的帮助,

此致

1 个答案:

答案 0 :(得分:5)

开发服务器与实时服务器上的High Replication数据存储具有相同的一致性保证。 “全局”查询使用的索引仅保证最终与写入一致。要使用强一致性保证执行查询,必须使用“祖先”键将查询限制为实体组。

典型的技术是将特定于组中单个用户的数据分组,因此用户可以看到仅限于具有强一致性保证的用户组的查询更改。另一种技术是使用更高级的客户端逻辑在提交更改后立即更新客户端的本地视图,以便用户在更新全局索引时立即看到UI中的更改。

请参阅queriestransactions上的文档。