我找到了两种可能的解决方案来实现Facebook等社交网站的数据库结构。
1:创建一个'Relationships'表并将每个友谊插入其中。例如:用户A将B添加为朋友(A-B),然后逻辑将(A-B)和(B-A)放入“关系”表中。然后它索引第一个属性。
2 .:为包含好友的所有用户创建一个唯一的表。大多数数据库使用近20亿个唯一表,因此不会出现问题;但是,数据库大小将近300倍(预计每位用户平均300个朋友)。在这种情况下,查询朋友不会有问题(就像SELECT * FROM一样简单)
有什么想法吗?我错了吗? 谢谢大家。
答案 0 :(得分:3)
您描述的每用户表解决方案听起来基本上就像Oracle的分区功能。
不完全相关,但我推荐这篇精彩帖子:Presentation Summary “High Performance at Massive Scale: Lessons Learned at Facebook”
我认为友谊表是他们最关心的问题:)
答案 1 :(得分:1)
您不必担心最大的表格大小和类似的东西。为了创建像Facebook这样的网站,你必须将所有表格分割/分区到多台机器上。