你如何创建社交图?

问题描述:

对我来说这是一个完全陌生的地方。任何人都可以指出我如何创建社交图表以及表示它的最佳方式的正确方向?我正在C#/ asp网络建立一个网站,并需要创建一个“朋友”功能......这种类型的东西通常完全存储在数据库中?如果是这样,怎么样?你如何创建社交图?

+1

你问你怎么能在你的网站上以图表形式表示朋友之间的关系?有关您的问题的一些更详细的信息将产生更准确的答案。 – 2010-02-07 22:15:03

你的问题是相当开放的。为了绘制复杂的图形,我最喜欢的工具之一是Graphviz。 Graphviz可以使用有向或无向图。它可以将输入视为简单的文本文件,然后以各种格式输出图形。

您主要关注的是绘制社交网络图片还是存储数据?

对于存储你可能会考虑a graph database。然而,这个领域最成熟的产品是neo4j,它的名字建议是用Java编写的。这个SO discussion list .Net的一些替代方法。

编辑

你还是没有说清楚是否需要设计咨询或代码示例。 Andrew Siemer写了一篇两部分的文章,概述了the issues,然后介绍了some ASP.net code。我不认为这是一个完整的解决方案,但它可以让你指引正确的方向。

+0

基本上我需要做你在Facebook上做的事情。我需要能够交朋友,然后能够看到你的朋友列表,点击它们来查看他们的个人资料等,我只是不知道存储这些数据以及如何检索/操作它的最佳方式。 – ijjo 2010-02-07 22:34:04

+0

第一个问题是您的网站需要多少流量?你需要优化“朋友列表”以便阅读......或写入吗?如果写入可以最终一致...则优化读取站点(可能是更高的通信量)。另外,考虑数据结构。您可能保留一个给定视图的数据的平面副本,已经为用户...非规格化数据拼接在一起。让我知道,如果我能帮忙。 – 2014-08-15 18:55:23

+1

@AndrewSiemer - 你提供的帮助非常亲切。但是,由于这个问题已经过了四年多了,它还不止有点晚。 – APC 2014-08-16 08:24:45

因此,您的问题主要是数据存储问题,以及如何存储和检索图形中的边缘。在你的问题中应用一些简单的图表术语:

  • 节点/顶点:在你的情况下,每个人将代表一个节点。边缘/链接:节点之间的关系(在本例中为“朋友”)将在两个节点之间创建无向边。

因此,您需要维护数据库中的数据结构,以便您解析朋友之间的边缘关系。

一些有用的信息,或许可以在这个问题上找到:

challenge-how-to-implement-an-algorithm-for-six-degree-of-separation

此外,一些决定如何存储你的边列表时,你应该考虑的是你有多少边认为你的网站会产生。这可能会影响您决定的存储机制。

希望这些指针有所帮助。