【发布时间】:2013-12-28 21:28:53
【问题描述】:
我觉得这必须在其他地方问,但我无法找出正确的搜索词来找到答案。如果这是重复的,请在其他地方指出正确的响应。
Facebook、Twitter、Tumblr 等服务,我相信还有很多其他服务允许您关注其他用户。然后他们的帖子会出现在墙上或仪表板上。我想知道,拥有如此庞大的数据集,这些服务如何能够如此快速地拉出帖子。我假设他们没有使用 SQL 服务器,也没有做类似的事情:
SELECT * FROM `posts` WHERE `poster_id` IN ( super long list of users being followed ) ORDER BY `date` LIMIT 10;
因为上面可能有一个非常大的用户 ID 列表,它同样不能很好地与所有这些大型服务都使用的分片一起工作。
那么,谁能描述一下这些服务使用什么样的查询、算法或数据库来显示关注的帖子?
编辑:感谢大家的回复。似乎最有可能做到这一点的方法是通过 GraphDB、Neo4j 或 FlockDb 等图形数据库,后者是 Twitter 的图形数据库。使用 Neo4j,它的完成类似于 http://docs.neo4j.org/chunked/milestone/cypher-cookbook-newsfeed.html 中记录的内容。
当然,Google、Facebook 等都有自己的、内部构建或内部修改的数据库,用于其独特的用例。
【问题讨论】:
-
不是 100% 确定你在问什么,但这里有一篇关于 Tumblr 架构的有趣文章:highscalability.com/blog/2012/2/13/… 实际上,这与@rav 下面发布的文章非常相似
-
首先,他们可能不再使用 MySQL,例如 twitter uses FlockDB
-
是的,我发现他们不太可能使用 MySQL 进行这样的操作。我不认为它不是为这样的东西而建的。感谢您提供有关 FlockDB 的信息,它让我指明了正确的方向。
标签: mysql facebook twitter tumblr sharding