在App Engine

时间:2015-07-25 14:08:27

标签: google-app-engine amazon-web-services memcached google-cloud-datastore

我一直致力于社交应用。我将首先解释这些问题,然后在下面的问题中进行总结。

在网络中,会有频道和用户。用户可以订阅这些频道,也可以订阅其他用户。这样,我们就有两个来源可以生成帖子。

现在,我们可以简单地保留一个活动模型来记录所有操作,它们的种类以及它们的影响。无论是来自频道,还是来自用户。在为每个用户创建Feed时参考这些内容。

我在Brett Slatkin的 talk 中找到了一个解决方案,它基本上建议使用ListProperty将每个帖子与每个订阅者链接起来。但Guido suggests如果有超过1000个元素,则不使用列表。因此,如果一个频道的用户数超过1000,这可能会遇到问题。即使这样做 -

我想根据受欢迎程度(基于投票数,评论数)对帖子进行排名,并应用一些时间衰减功能。更像是Reddit。为此,我必须将Activity保留在内存中,并根据每个用户的排名对其进行过滤和排序。我还需要定期这样做,因为新活动将继续发生,旧的活动也会获得,或者失去价值。

挑战在于 - 将数据保存在内存中(用于处理Feed以及保持快速)。我将不得不将每个用户提要的副本存储到持久存储中,但如果帖子的顺序将会发生变化,我该如何在数据库中跟踪它?

另外:我保持打开选项 - 如果必须,我将转移到AWS。

总结:

  1. 是否有更好的解决方案可以在不使用列表的情况下跟踪订阅者?使用像PostID>这样的东西一个实体中的SubscriberID 非常,非常昂贵且效率低下。
  2. 如果对上述问题有任何具有成本效益且快速的解决方案,我该如何应对下一个挑战 - 即生成个性化Feed? (记忆问题 - 未知大小的memcache)
  3. 如果我可以生成个性化的Feed(将是动态的,将会更改)如何将其保存在数据库中?。
  4. 我已经阅读了几篇文章,我可以解决AWS的前两个问题,但我试图远离手动扩展工作。如果没有办法,我愿意转向AWS。即使我转移到AWS,我也无法想到第三个问题的解决方案。

    任何想法,方向,资源都会有所帮助!谢谢!

0 个答案:

没有答案