java - 带有 Android 的 Google Cloud Endpoints - 缓存响应?

标签 java android google-app-engine google-cloud-endpoints datastore

我正在使用 Google Cloud Endpoints (Java) 作为 Android 应用程序的后端。后端数据存储到Datastore

问题在于 Android 客户端通常无法从后端接收到正确的数据。重复请求后,最终收到正确的数据。

你能告诉我是什么导致了这个问题吗? Cloud Endpoints 库中是否有某种响应缓存?或者在 Datastore 中缓存?

我已阅读有关 Datastore 提供的最终一致性的信息,因此我尝试在更新实体后等待至少 10 秒,然后再进行下一个查询请求。够了吗?

非常感谢。

最佳答案

听起来您构建数据模型的方式与您希望使用数据模型的方式不一致。如果没有看到您的数据模型示例,我无法为您提供有关如何更改它的提示,但这里有一个可能对您有所帮助的简单示例。

假设我有一个“Post”实体和一个“CommentForPost”实体。用户可以为每个 Post 条目创建多个 CommentForPost 条目。从逻辑上讲,CommentForPost 是 Post 的子项,但如果您不使 Post 成为所有 CommentForPost 条目的祖先,则无法保证立即一致性。如果用户 A 创建评论然后查询它,他们可能不会立即看到该条目。

另一方面,如果您使 Post 实体成为所有 CommentForPost 条目的父实体,那么您将保证即时一致性,因为它们被保存为单个 EntityGroup。如果用户 A 创建一个条目并立即查询它(使用 Post 键作为祖先),那么他们肯定会得到准确的数据。

此处的限制是您每秒只能创建一个 CommentForPost 条目。这就是给予和接受的地方。如果您需要在短时间内进行大量更新,那么您将无法保证一致性(例如,100 个用户都在同时添加 CommentForPost 条目)。如果你想保证一致性,那么你不能在短时间内有很多更新。

有道理吗?

关于java - 带有 Android 的 Google Cloud Endpoints - 缓存响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25630493/

相关文章:

Git 中的 Java config.properties 文件

android - 如何通过 Android 模拟器在 Windows 中使用 telnet?

php - Google App Engine 上的 Mediawiki 链接缺少标题参数

python - 使用重复的键属性序列化 NDB 模型

Java/Android : virtual dispatch, switch-case,或数组访问

Java Servlet 不删除 cookie

android - fragment 中的 MapFragment 与 Google Maps api v2 fragment 中的 MapView

google-app-engine - 任务队列未运行我的所有任务 - App Engine 后端

java - 寻找 AngularJS 客户端的 App Engine Channel Api Java 替代解决方案

android - 如何使用健身 api 获取距离?