2011-08-30 27 views
1

是否存在有一個內置功能恢復中2個或更多的人共同的朋友列表中的任何圖形數據庫(S) - 就像像Facebook這樣的社交網絡?結果應儘可能快地返回,而無需執行復雜的計算或遍歷數據庫。如果沒有,那麼實施它的方法是什麼?那麼OriendDB呢?如何使用圖形數據庫和Redis的組合?圖形數據庫返回的共同朋友的名單中2人在社交網絡

回答

0

不知道有關特定圖形數據庫(我來這從建築上的Redis的頂我自己的圖形數據庫),但假設朋友就是一個直接連接,尋找共同的朋友是相當簡單 - 我們只需要從每個完整的好友列表並計算交點。

的Redis有一個命令來做到這一點本身和速度非常快。 SQL查詢也很簡單。獲取單個節點的所有連接應該可以在任何圖形數據庫上使用,即使您需要檢索完整列表並計算應用程序代碼中的交集,只要您不必與人打交道,性能就足夠了誰擁有數千/數百萬的朋友。

其中越來越複雜的是處理間接關係 - 交集操作是相同的,但這些集合不以所需的形式存在而沒有遍歷圖形,因此在計算交集之前,需要構建一組所有用戶的二級連接。您可以在查詢的第一步執行此操作,或者在連接更改時保持永久集更新 - 適當的方法取決於您是否需要優化數據使用情況並編寫性能或讀取性能。