社交网络中的朋友关系

Posted

技术标签:

【中文标题】社交网络中的朋友关系【英文标题】:Friend Relationships in a Social Network 【发布时间】:2010-12-04 04:08:27 【问题描述】:

我认为与其维护一个包含我网络上所有用户的关系列表的朋友关系表,不如为网络上的每个用户创建一个单独的关系表,其中包含用户选择的所有人员和组的 profileID跟随。 这种方式检索会更快......任何建议将不胜感激......!

【问题讨论】:

这实际上是一个糟糕的主意。在必要时提供足够的索引和缓存应该可以解决您的性能问题。 考虑使用每一页都有一个用户的笔记本。翻阅页面比填满页面上的每一行需要更长的时间。 Sergey 是正确的,多表是一个糟糕的主意。 非常感谢您更新我的知识.. 顺便说一句,您能否详细说明为什么不使用大量表格是一个坏主意。 【参考方案1】:

请记住,数据库通常非常擅长索引(假设您为它们提供了合适的列来索引),因此在任何情况下对特定用户的检索都应该很快。总体而言,创建大量表可能会更慢。

【讨论】:

我希望这个网络拥有庞大的用户群(我会说以百万计..),并假设单个用户拥有 avg。 50 个朋友,表格的大小可能超过 5000 万行...你不认为我需要比具有 5000 万行的单个“朋友”表更好的解决方案来计算用户的朋友列表。您是否建议寻找 NoSQL 解决方案,或者 mysql 是否可以处理此问题以及后续问题,例如使用“帖子”表来计算帖子以生成新闻提要。非常感谢您的回复..! 你能做的最好的事情就是先做一些性能测试。如果您的数据库在该大小的表中具有可接受的性能,那么您就完成了。如果没有,请尝试使用不同的数据库 - 有些数据库比其他数据库执行得更好。小心你的索引:索引是关键(如果你原谅双关语)。如果其他数据库仍然无法工作,那么您应该开始寻找其他选项。【参考方案2】:

这似乎是一个激进的设计决定,以消除可能不存在的问题。对如何构建和访问数据库知之甚少,不可能说这是否是一个错误的决定(可能),或者您的业务需求是否独特而这就是解决方案(不太可能)。我的建议是确定您需要的规范化级别,不要试图消除尚不存在的性能问题。

Should I normalize my DB or not?

【讨论】:

非常感谢!我希望这个网络拥有庞大的用户群(我会说以百万计..),并假设单个用户拥有 avg。 50 个朋友,表格的大小可能超过 5000 万行......你不认为,我需要一些比具有 5000 万行的单个“朋友”表更好的解决方案,以便计算用户的朋友列表。您是否建议寻找 NoSQL 解决方案,或者 MySQL 是否可以处理此问题以及后续问题,例如使用“帖子”表来计算帖子以生成新闻提要。非常感谢您的回复..!【参考方案3】:

如果您在检索信息时遇到数据库查询性能问题,我强烈建议您使用速度非常快的 Vertica 数据库。

【讨论】:

以上是关于社交网络中的朋友关系的主要内容,如果未能解决你的问题,请参考以下文章

实战 SQL:微信微博等社交网络中的友好粉丝关系分析

在社交网络的数据库中存储朋友

如何检测社交网络中两个人是否是朋友关系(union-find算法)

朋友圈中,谁是最有影响力的人?是你么!!

图的表示:如何存储微博、微信等社交网络中的好友关系?

社交网络和网络隶属关系