我正在開發約會應用程序爲vk.com(這是俄羅斯的臉書),所以我需要保持社會圖表(通過共同興趣,朋友,喜愛的音樂,電影等鏈接的配置文件)。它看起來像「比用戶C更接近用戶B的用戶A,因爲他們有2個共同朋友和5個共同興趣VS 1共同朋友和4個共同興趣」,「用戶C最接近...」等。 什麼是好解決這個問題? 我從數學知道圖的理論,但我從未在計算機科學中使用過圖(我是web開發人員),我認爲可以通過爲任何用戶生成圖並將其保存在NoSQL數據庫中來解決此問題(如mongo或redis),但這是一個糟糕的解決方案(沒有實時更改,生成需要很長時間)。 你對這個問題有什麼看法?良好的解決方案,以保持圖(數據庫)
2
A
回答
2
你可以考慮的一個選項是FlockDB(Neo4j已被提及)通過Twitter。如果你的問題空間是大規模的簡單查詢,這可能是合適的。它不支持像Neo這樣的圖形步行查詢,但被Twitter用來存儲他們的社交圖,並支持諸如「誰跟隨」等查詢。
2
還有比基於鍵值的數據庫更專門的NoSQL解決方案。看看圖形數據庫,如neo4j。圖形數據庫很容易讓您以直觀的方式存儲和操作圖形。許多基於圖形的算法運行得非常快(與sql相比)。
您還應該看看大型社交網絡是如何做的,特別是如果您有興趣分析整個圖表(對於數據挖掘,這超出了單個用戶的實時計算)。據我所知,Facebook使用高度緩存的MySQL數據庫進行Web請求,並使用Hadoop/HBase和Hive進行大量計算。除了他們的消息傳遞平臺之外,大部分facebook的實時部分都不需要NoSQL。
1
我真的不認爲Facebook存儲他們的主要數據在圖形數據庫中。我認爲他們存儲朋友列表和興趣列表等。查看他們的文檔至少會告訴你它是如何組織的。如果「我喜歡電影」的信息與我的帳戶和興趣「電影」相關聯,則可以輕鬆查找我喜歡的內容以及喜歡看電影的人。
要計算總體「親密度」......如果您只需要至少有一個共同朋友的人,那麼直接評估所有這些人的親密度可能足夠快。否則,我會考慮尋找一個更高維的近似k-d樹搜索,在您的搜索空間中將維度嵌入到維度中。
相關問題
- 1. 良好的數據庫解決方案
- 2. 良好的C#.NET解決方案來管理頻繁的數據庫輪詢
- 3. 用於.Net的良好嵌入式數據庫解決方案(如SQLite)
- 4. 用於LDA轉換的良好數值解決方案
- 5. 數據庫中動態類別項目的好解決方案
- 6. 更好的解決方案?
- 7. Google Drive是Web應用程序的良好數據存儲解決方案嗎?
- 8. 獲得機器的MAC地址 - 良好的解決方案?
- 9. 最佳數據庫/解決方案
- 10. 數據倉庫類型解決方案?
- 11. TFS數據庫部署解決方案
- 12. 數據庫設計解決方案
- 13. 分佈式數據庫解決方案?
- 14. Phonegap數據庫存儲解決方案
- 15. wxNet仍然是單聲道GUI的良好解決方案嗎?
- 16. 尋找阻止TOR的良好解決方案
- 17. Laravel的良好單點登錄解決方案
- 18. Zend Framework + Doctrine + MySQL的良好搜索解決方案?
- 19. Xcode中Emacs密鑰綁定的良好解決方案
- 20. 「標記容器」的良好解決方案?
- 21. 簡單PHP文件的良好雲解決方案?
- 22. Xen虛擬機的良好備份解決方案?
- 23. 什麼是ASP.net解決方案的良好命名約定
- 24. C++持久性解決方案(帶有SQL數據庫)?
- 25. C#中持久表/網格的正確解決方案不需要完整的數據庫解決方案?
- 26. 針對時間點數據庫的歷史解決方案 - 可能的數據倉庫解決方案
- 27. Excel數據解決方案
- 28. 什麼是最好的圖像轉碼庫/解決方案?
- 29. 解決方案用於創建新數據庫,同時保留舊數據庫
- 30. 保持數據庫連接打開 - 良好實踐?
我不太瞭解他們,但我知道,訪問Facebook數據時,他們使用它的API。因此,請嘗試checkint VKontakte的API:http://vk.com/developers.php – 2012-04-01 22:01:03
謝謝,但我的問題不是關於api,而是關於如何在任何數據庫中保留圖數據結構。 – 2012-04-01 23:46:52