使用云端点(google app engine)中的光标创建像api方法这样的Feed

时间:2016-01-14 19:36:30

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

在客观化中创建Api方法的方法是什么,列出您所关注的人的所有最新帖子?

假设您有Profile个实体编写Post个实体。每个Post都有一个Profile作为其父级。每个Profile都有一个跟随其他Profile的密钥列表。

如何创建一个查询(带有游标),列出按日期降序排序的所有Post个?{/ p>

为了能够做到这一点,我应该以不同于上面描述的模型构建我的模型吗?我认为我可以this方式做到这一点,但我从那篇文章中了解到,Objectify有一些局限性。其中一个原因是您无法在cursor过滤器上使用IN。文档here也说:

  

您可以过滤ID属性,如果此查询仅限于Class   并且实体没有@Parent。如果你在工作上遇到麻烦   围绕这个限制,请咨询objectify-appengine谷歌   基。

objectify-appengine google group不是很活跃......

1 个答案:

答案 0 :(得分:2)

构建Feed有两种常规方法:Scatter-gather或preindex。他们每个都有自己的权衡。

Scatter-gather通常是最容易启动的,尤其是当你可以在数据库中进行连接时。并且它非常灵活 - 更改代码,每个人都能立即看到结果。但是,这种可扩展性受到严重限制,特别是如果您的用户通常会关注大量其他用户。正如您所注意到的那样,它是GAE中的PITA,因为没有连接(并且IN只允许您指定几十个项目)。确定在显示时向用户显示的内容是昂贵的。

Preindex(或" inbox")基本上说,选择在创建内容时看到一段内容的人,并将它们添加到索引中。好消息是显示速度很快(简单的索引步行)。坏消息是对跟进列表的更改不会自动追溯。不过,如果你想要可扩展性,这几乎是你唯一的选择。

Tumblr从散点图聚集切换到收件箱("仪表板索引"):http://highscalability.com/blog/2012/2/13/tumblr-architecture-15-billion-page-views-a-month-and-harder.html

在2009年的Google I / O谈话中,Brett Slatkin谈到如何在GAE上构建一个类似于收件箱的百万用户扇出:https://www.youtube.com/watch?v=AgaL6NGpkB8

旁注:Objectify google组相当安静,因为现在大多数问题都在stackoverflow上询问(无论好坏)。此外,您正在查看非常旧文档,以获取Objectify的过时版本。目前的文档在这里:https://github.com/objectify/objectify/wiki