【发布时间】: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