我觉得这必须在其他地方问,但我找不到正确的搜索词来找到答案。如果这是副本,请在其他地方指出正确的答案。
像Facebook,Twitter,Tumblr这样的服务,我相信还有一大堆其他的服务可以让你关注其他用户。然后,他们的帖子会出现在墙上或仪表板上。我想知道,有了这么大的数据集,这些服务怎么能这么快地拉取帖子。我假设他们不是在使用SQL服务器,也不是在做以下事情:
SELECT * FROM `posts` WHERE `poster_id` IN ( super long list of users being followed ) ORDER BY `date` LIMIT 10;因为上面可能有一个非常大的用户ids列表,同样,它也不能很好地使用分片,所有这些大型服务都使用分片。
那么,谁能描述一下这些服务使用什么样的查询、算法或数据库来显示关注的帖子?
编辑:感谢大家的回复。似乎最有可能的方式是通过一个图形数据库,如GraphDB,Neo4j或FlockDb,后者是推特的图形数据库。在Neo4j中,它所做的事情与http://docs.neo4j.org/chunked/milestone/cypher-cookbook-newsfeed.html中的文档类似。
当然,Google、Facebook等都有自己的内部构建或内部修改的数据库,用于其独特的用例。
发布于 2013-12-31 14:10:33
我可以说出一些关于如何更快地处理/获取数据的技术,但我不确定这些是不是由facebook,twitter..etc..as实现的相同的技术,每个技术都建立在不同的平台和架构上。
从缓存中获取数据-意味着用户将在不接触数据库的情况下获取数据,而不是将数据从memory
如果你想特别了解facebook使用的堆栈,你可以阅读链接。http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/
发布于 2014-01-07 07:28:15
查看Open Graph- Twitter和Facebook都使用这种架构来检索用户发布的“故事”。它是语义网思想的一个版本。https://developers.facebook.com/docs/opengraph/调用SQL的日子已经结束了(感谢上帝)。FQL- Facebook查询语言仍然有效,但在很大程度上已被弃用。它不是SQL,而是一种针对图形(was数据库)的查询语言版本。
发布于 2014-01-07 08:47:39
基本上,所有真正的大型站点都以这样或那样的形式从SQL server迁移到了NoSQL (一些真正大型的站点已经编写了自己的!)。NoSQL数据库放松了ACID限制,但结果是能够更好地扩展和处理潜在的大量请求。
如果你用谷歌搜索NoSQL,你会发现很多关于它的信息。
http://blog.3pillarglobal.com/exploring-different-types-nosql-databases
http://www.mongodb.com/learn/nosql
SQL仍然占有一席之地,但对于很多事情来说,NoSQL是前进的方向。
https://stackoverflow.com/questions/20819573
复制相似问题