【问题标题】:What is the optimal RDBMS solution for large social networking sites like Facebook?对于像 Facebook 这样的大型社交网站来说,最佳的 RDBMS 解决方案是什么?
【发布时间】:2010-02-10 20:48:04
【问题描述】:

我发现了两种可能的解决方案来实现 Facebook 等社交网站的数据库结构。

1.:创建一个“关系”表并将所有友谊插入其中。例如:用户 A 将 B 添加为朋友 (A-B),然后逻辑将 (A-B) 和 (B-A) 放入“关系”表中。然后它索引第一个属性。

2.:为所有包含朋友的用户创建一个唯一的表。大多数数据库使用近 20 亿个唯一表,所以这不是问题;但是,数据库大小将增加近 300 倍(预计每个用户平均有 300 个朋友)。在这种情况下,查询好友不会有问题(就像 SELECT * FROM 一样简单)

有什么想法吗?我在某个地方错了吗? 谢谢大家。

【问题讨论】:

  • 哦,忘了说:我在寻找如何实现它的答案,我发现他们根本不使用 RDBMS 来实现数据结构。但是以 RDBMS 方式实现仍然很有趣。
  • AFAIK,Facebook 使用 MySQL,但您仍然可能需要考虑使用图形数据库。示例:neo4j.org
  • RDBMS 解决方案是第一个。添加额外的表格,每个数据项一个,不在该方法中。在我见过的每个 SQL 实现中,表名都不像数据条目那样方便地操作。
  • 是的,我阅读了 Twitter 的消息队列,而不是 Facebook。

标签: database facebook social-networking


【解决方案1】:

您描述的每用户表解决方案听起来基本上像 Oracle 的分区功能。

不完全相关,但我推荐这篇很棒的帖子:Presentation Summary “High Performance at Massive Scale: Lessons Learned at Facebook”

我认为友谊表是他们最不关心的问题:)

【讨论】:

【解决方案2】:

您不必担心最大表格大小之类的问题。为了创建像 Facebook 这样的网站,无论如何您都必须将所有表分片/分区到多台机器上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多