1

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

- user
- event
    - attribute eventDate

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

- UserEvent
    -User key
    -Event key

我的问题是我想要一个用户遵循的事件列表,按 eventDate 排序。

我能怎么做?

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

  1. 查询所有订购的事件,然后迭代并仅选择在 UserEvent 上发生一次的事件(我不喜欢,因为我可能会有数千个事件,但用户只关注少数..)
  2. 查询所有用户事件(由 userKey 过滤)并将结果放入有序列表中(我不喜欢,因为我必须一次加载所有事件,没有分页)
  3. 在表 UserEvent 中添加属性 eventDate (我不喜欢,因为如果一个事件有 3000 个关注者,我必须进行 3000 次更新......)

谢谢亚历山德罗

4

2 回答 2

0

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

于 2012-04-27T12:08:38.663 回答
0

如果您总是查询给定用户的事件,您可以考虑在 User 实体中存储一个 ListProperty of Events。

- user
    - attribute eventList []key

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

于 2012-04-27T12:10:53.763 回答