为Google App Engine实施项目新闻源

时间:2012-12-16 09:42:01

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

我在主屏幕上想到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个查询)。

我怎样才能实现类似的东西?

1 个答案:

答案 0 :(得分:0)

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

或者只是尝试某些,然后使用可用的工具进行优化。并使用NDB