0

我正在考虑主屏幕中的 Github/Bitbucket 新闻提要。

有多个用户(数十或数千)观看多个项目(数十或数百)。每个项目都会有其最新的更新状态消息。

组合结果如下所示:

  • 项目 A:问题 #3 从打开到关闭
  • 项目 B:@someuser 评论了问题 #231
  • 项目 C:@anotheruser 已打开问题 #1493
  • 项目 B:@thirduser 评论了问题 #231

使用 SQL 时,我会考虑类似

select * from notifi where projId in (<user's watching list>)

但是对于 GAE,这是通过同时进行多个查询来实现的。这不会是有效的。而且它不适用于观看超过 30 个项目的用户(根据https://developers.google.com/appengine/docs/python/datastore/gqlreference不能同时进行超过 30 个查询)。

我怎么能实现类似的东西?

4

1 回答 1

0

保留一个包含项目更改列表的模型并更新它。订阅用户,每个人都会得到相同的更新,在将更新发送给用户之前减去他们自己进行的更新。所以每个项目一个查询,结果发送给所有订阅用户。因此,您不会基于用户进行“选择”,而是基于项目。

或者只是尝试一些东西,然后使用可用的工具对其进行优化。并使用NDB

于 2012-12-16T11:30:46.150 回答