App引擎数据存储区,查询按fk属性排序

时间:2012-04-27 10:06:56

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

我正在研究谷歌应用引擎的数据存储,我正在为管理事件开发一个应用程序。 我有2个实体:

- user
- event
    - attribute eventDate

用户可以关注一个或多个事件,因此我创建了链接表

- UserEvent
    -User key
    -Event key

我的问题是我希望有一个用户遵循的事件列表,由eventDate排序。

我该怎么办?

我找到了3个解决方案,但我不喜欢任何人...

  1. 查询所有已订购的事件,然后迭代并仅选择 一个在UserEvent 上有一个出现(我不喜欢因为 可能我会有数千个事件,但用户只能跟随 少数..)
  2. 查询所有用户事件(按userKey过滤)并输入结果 在有序列表中(我不喜欢因为我必须加载所有事件 一次,没有分页)
  3. 在表UserEvent中添加属性eventDate (我不喜欢因为 如果一个活动有3000个关注者,我必须做3000更新......)
  4. 谢谢 的Alessandro

2 个答案:

答案 0 :(得分:0)

如果您真的不喜欢这种非规范化,请考虑使用CloudSQL。

答案 1 :(得分:0)

如果您始终查询给定用户的事件,可以考虑在用户实体中存储事件的ListProperty。

- user
    - attribute eventList []key

您将受到实体最大大小(目前为1MB)的限制,如果列表已编入索引,则限制为5000个条目。