我在主屏幕上想到Github / Bitbucket新闻提要。
有多个用户(数十或数千)观看多个项目(数十或数百)。每个项目都会有最新的更新状态消息。
综合结果如下:
使用SQL时,我会想到像
这样的东西select * from notifi where projId in (<user's watching list>)
但对于GAE,这可以实现为同时进行多个查询。这不会有效。对于观看超过30个项目的用户来说,它不起作用(根据https://developers.google.com/appengine/docs/python/datastore/gqlreference,同时不能超过30个查询)。
我怎样才能实现类似的东西?
答案 0 :(得分:0)
保留包含项目变更列表的模型并更新。订阅用户,每个人都获得相同的更新,在将更新发送给用户之前减去他们自己做的更新。因此,每个项目一个查询,结果发送给所有订阅用户。所以你不要在用户的基础上进行“选择”,而不是项目。
或者只是尝试某些,然后使用可用的工具进行优化。并使用NDB!