如何在数据库中实现 Facebook 好友模块?
Posted
技术标签:
【中文标题】如何在数据库中实现 Facebook 好友模块?【英文标题】:How To implement Facebook friends module in Database? 【发布时间】:2010-10-12 08:17:15 【问题描述】:我正在为我的研究所开发一个 facebook 类型的应用程序。
我被困在朋友模块中。即如何知道特定用户是否是自己的朋友。
我搜索了很多,但没有得到任何满意的答案。 我得到的是:一个人会有很多朋友,在单独的表中实现用户和他们的朋友只会增加冗余和大数据库。
我想过使用一个以顶点为用户,边为连接的图。
但是如何在 db 中实现类似的东西。
或者 Facebook 如何处理如此庞大的关系?
【问题讨论】:
我很确定 facebook 使用 NoSQL 解决方案,因为关系数据库对于它们拥有的数据来说过于臃肿。 en.wikipedia.org/wiki/NoSQL 感谢 seanizer........ 在搜索和重新搜索 noSql 之后,我了解了 Cassandra,它非常适合我的应用程序。我希望如此:-) 【参考方案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,并以另一个示例为起点。
【讨论】:
以上是关于如何在数据库中实现 Facebook 好友模块?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Facebook iOS SDK 4.0 获取包含用户名和 ID 的用户好友列表
如何在iOS的XMPPFramework中实现发送好友请求的方式?
如何在 ios 的新 facebook sdk 中实现深度链接?