2010-05-08 73 views
0

我一直转圈圈什么必须是一个非常简单的挑战,但我想这样做,从一开始的最有效方式独特的物品清单。因此,我观看了Brett Slatkin的谷歌IO视频(2008 & 2009),关于构建可扩展的应用程序,包括http://www.youtube.com/watch?v=AgaL6NGpkB8,并阅读文档,但作为n00b,我还不确定。显示用户对Java的谷歌应用程序引擎

我试图建立类似于在用户呈现他们打分的项目原来的“hotornot”上GAEJ的应用程序。一旦他们评价,他们会看到另一个他们以前从未见过的。
我的问题是这样的;预先做一个查询来抓取x个项目(比如说100)并将它们放在一个列表中(存储在memcache中?),还是最好在每个评级之后简单地对新项目进行查询。
为了跟踪用户看到的项目,我计划将这些项目的密钥保存在用户实体的列表属性中。这听起来合理吗?

我真的得自己搞不清楚这个所以任何帮助,将不胜感激。

回答

0

我会亲自做这样的事情:

当用户登录,创建的,他们还没有看到100个随机ID的列表。然后,当他们点击下一个项目时,对数据存储进行查询并将列表前面的一个拉回来。

如果这最终太慢,你可以尝试缓存,但它是真的很难MEMCACHE你整个数据库。即使加载他们需要的100个人也很难(随着用户数量的增加)。为1个网页加载拉回1入口并不慢。每次点击将发布1条评论,并将1条条目退回。简单来说,数据存储中只有少数MS。这样做,他们还没有看到100个随机ID可以是缓慢的,这样才有意义,以提前做好,并保持周围(在他们的请求或会话取决于你是如何做的是...)

+0

非常感谢你的答案。独自工作,很高兴知道我正朝着正确的方向前进。再想一想(经过一段时间的睡眠之后!)我估计没有必要在批量生产中抓住一堆ID。我想我会保持简单并获取用户没有看到的随机ID。他们提交评分后,只需使用上面链接的Google IO演示文稿中介绍的合并连接技术再次获取。 我假设做这种读取的成本可以忽略不计,并且随着用户数量的增加而缩放。 谢谢。 – James 2010-05-09 13:02:16