【问题标题】:How To implement Facebook friends module in Database?如何在数据库中实现 Facebook 好友模块?
【发布时间】:2010-10-12 08:17:15
【问题描述】:

我正在为我的研究所开发一个 facebook 类型的应用程序。

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

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

我想过使用一个以顶点为用户,边为连接的图。

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

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

【问题讨论】:

  • 我很确定 facebook 使用 NoSQL 解决方案,因为关系数据库对于它们拥有的数据来说过于臃肿。 en.wikipedia.org/wiki/NoSQL
  • 感谢 seanizer........ 在搜索和重新搜索 noSql 之后,我了解了 Cassandra,它非常适合我的应用程序。我希望如此:-)

标签: java database facebook graph social-networking


【解决方案1】:

就我个人而言,我会专门为它准备一张桌子:

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

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

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

【讨论】:

  • 嗯,我之前已经考虑过这种方法......但它只会导致更多的数据,更多的头痛和更多的编程。
  • @Ashutosh 这是最好的解决方案。所有其他人都会带来更多的头痛和编程。多对多合作从来都不是一件容易的事。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多