如何在数据库中实现Facebook好友模块?

时间:2010-10-12 08:17:16

标签: java database facebook graph social-networking

我正在为我的学院开发一个facebook类型的应用程序。

我被困在朋友模块中。即如何知道特定用户是否是一个朋友。

我google了很多但没有得到任何满意的答案。 我得到的是:一个人会有很多朋友,在单独的表中实现用户和他们的朋友只会增加冗余和大数据库大小。

我想过使用顶点作为用户和边缘作为连接的图形。

但是如何在db中实现类似的东西。

Facebook如何处理如此庞大的关系?

3 个答案:

答案 0 :(得分:2)

此链接可能有助于您使用朋友模块生成RDBMS。 http://techportal.inviqa.com/2009/09/07/graphs-in-the-database-sql-meets-social-networks/

答案 1 :(得分:1)

就个人而言,我会有一张专门的桌子:

您可以拥有一个只有两列的表:userID和friendID

由于数据库中用户之间的关系是多对多的,因此将其规范化需要一个链接表,将其分解为多对一对多

http://dev.mysql.com/tech-resources/articles/intro-to-normalization.html#03

答案 2 :(得分:1)

这种问题通常通过使用不同类型的数据库来解决。对于社交网络,graph database应该是有意义的,因为节点和关系是其中的一等公民。 social network example图数据库有Neo4j,示例的完整源代码包含在标准的dowload包中。我还在这个主题上写了一个blog post,另一个例子作为起点。

相关问题