Google App Engine Objectify Data Store - 最近私人用户数据的实体和查询?

时间:2014-04-15 00:38:30

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

在数据存储中使用Objectify存储私有用户特定数据(如文档和图像)的最有效方法是什么?

我使用Google的UserFactory来获取当前登录的用户。

默认情况下,用户只需要查看第一页上显示的最新条目(例如30个条目)。他们可以通过浏览页面查看较旧的条目。条目数在理论上是无限的。

这似乎是一种常见的情况,但我对在设计实体方面解决此问题的最佳方法感到困惑,因此我可以最大限度地减少数据存储操作。 / p>

所以,这是我最初提出的实体:

SubclassedUser (extends User, stored as entity)

UserDocuments
- @Parent SubclassedUser author 
- String messageText
- @Index DateTime updatedDate
- DateTime createddDate

UserImages
- @Parent SubclassedUser uploader 
- String imageUrl
- @Index DateTime createdDate

但这是我的问题:

  • 是否为用户创建了适当的存储用户的方式?
  • 索引用于排序,因此我可以获取最新的条目。我们的想法是在日期进行降序ORDER BY,并使用LIMIT显示每个页面。有没有更有效的方法这样做,所以我可以避免执行索引查询,因为大多数时候用户只想查看最新的数据?
  • 如果UserDocuments和UserImages的数量继续增加,查询是否会出现性能问题?什么是最好的解决方法?

提前非常感谢你!

1 个答案:

答案 0 :(得分:2)

如果你想要检索"最近的"你必须有一个索引。实体。没有比这更好的方法了。

数据存储区性能不依赖于您存储的实体数量,而只取决于您检索的实体数量。