拉墙/仪表板数据,如facebook,twitter,tumblr等

时间:2013-12-28 21:28:54

标签: mysql facebook twitter tumblr sharding

我觉得必须在其他地方询问,但我找不到正确的搜索词来找到答案。如果这是重复的,请指出其他地方的正确答案。

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等都有自己的内部构建或内部修改的数据库,用于其独特的用例。

4 个答案:

答案 0 :(得分:2)

我可以列举一些关于如何更快地处理/获取数据的技术,但我不确定这些技术是由facebook,twitter ......等实现的。它们中的每一个都是在不同的平台上构建的架构。

  1. 从缓存内存中获取数据 - 意味着用户将在不触及数据库的情况下获取数据,而不是从内存中获取数据
  2. 将流程拆分到不同的服务器 - 意味着资源由多个服务器处理,以防止出现瓶颈。
  3. 如果你想具体了解facebook使用的堆栈,你可以阅读链接。 http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/

答案 1 :(得分:1)

查看Open Graph- Twitter& Facebook都使用这种架构来检索用户发布的“故事”。它是语义网理念的一个版本。 https://developers.facebook.com/docs/opengraph/ SQL调用的日子结束了(感谢上帝)。 FQL- Facebook查询语言仍然有效,但很大程度上已被弃用。它不是SQL,而是针对图形的查询语言版本(是数据库)。

答案 2 :(得分:1)

基本上所有真正重要的网站都已经从SQL服务器转移到NoSQL以某种形式或其他形式(其中几个非常大的网站已经编写了自己的!)。 NoSQL数据库放宽了ACID约束,但结果更能扩展和处理潜在的大量请求。

如果你是谷歌NoSQL,你会发现很多关于它的信息。

http://blog.3pillarglobal.com/exploring-different-types-nosql-databases

http://www.mongodb.com/learn/nosql

SQL仍然有它的位置,但对于很多事情来说NoSQL是前进的方式。

答案 3 :(得分:0)

感谢大家的回复。看起来最有可能的方法是通过图形数据库,如GraphDB,Neo4j或FlockDb,后者是Twitter的图形数据库。使用Neo4j,可以完成http://docs.neo4j.org/chunked/milestone/cypher-cookbook-newsfeed.html中记录的内容。

当然,Google,Facebook等都有自己的内部构建或内部修改的数据库,用于其独特的用例。