【发布时间】:2015-05-20 04:38:24
【问题描述】:
我正在开发一个类似 SNS 的移动应用项目,用户可以在其中上传他们的内容,并可以在他们的主页上看到他们订阅的主题或朋友的更新。
我将用户内容存储在 mysql 中,并通过简单地首先查询用户订阅的人员和内容,然后使用 'where userid IN (....) 或主题查询过滤掉的内容表来查询用户特定的主页数据IN (....)' 子句。
我怀疑当内容表堆积或用户订阅大量用户或主题时,这会变得非常慢。我们新发布的应用程序已经开始每周有成千上万的新用户,并且随着时间的推移越来越多。可扩展性现在必须是我们关心的问题。
所以我想知道 Facebook 或 Twitter 如何处理数量惊人的订阅问题。他们是否为每个用户处理一个列表?我试图搜索,但我得到的只是如何与 Facebook 或 Twitter 交互,而不是他们如何实际实现此功能。
我注意到,您在使用 Facebook 时,只会在您的提要中看到更新而不是历史记录。这意味着订阅新用户不会像使用我当前的方法那样将大量过时的内容转储到您的提要中。
Facebook 如何设计他们的数据库以及他们如何向订阅用户发送新内容?
我的后端目前是 PHP+MySQL,如果应该这样做的话,我不介意引入其他后端技术,例如 Redis 或 JMS 之类的东西。
【问题讨论】: