2010-02-07 34 views
2

對我來說這是一個完全陌生的地方。任何人都可以指出我如何創建社交圖表以及表示它的最佳方式的正確方向?我正在C#/ asp網絡建立一個網站,並需要創建一個「朋友」功能......這種類型的東西通常完全存儲在數據庫中?如果是這樣,怎麼樣?你如何創建社交圖?

+1

你問你怎麼能在你的網站上以圖表形式表示朋友之間的關係?有關您的問題的一些更詳細的信息將產生更準確的答案。 – 2010-02-07 22:15:03

回答

1

你的問題是相當開放的。爲了繪製複雜的圖形,我最喜歡的工具之一是Graphviz。 Graphviz可以使用有向或無向圖。它可以將輸入視爲簡單的文本文件,然後以各種格式輸出圖形。

3

您主要關注的是繪製社交網絡圖片還是存儲數據?

對於存儲你可能會考慮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

0

因此,您的問題主要是數據存儲問題,以及如何存儲和檢索圖形中的邊緣。在你的問題中應用一些簡單的圖表術語:

  • 節點/頂點:在你的情況下,每個人將代表一個節點。邊緣/鏈接:節點之間的關係(在本例中爲「朋友」)將在兩個節點之間創建無向邊。

因此,您需要維護數據庫中的數據結構,以便您解析朋友之間的邊緣關係。

一些有用的信息,或許可以在這個問題上找到:

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

此外,一些決定如何存儲你的邊列表時,你應該考慮的是你有多少邊認爲你的網站會產生。這可能會影響您決定的存儲機制。

希望這些指針有所幫助。