2014-01-22 42 views
2

我們正在設計具有高度互聯的數據集的社交網站的體系結構。 (如用戶可以關注其他用戶,地點,興趣,並根據這些建議)。 Feed將直接來自實體以及來自間接連接的實體。 (地點和興趣可以連接到其他地方和利益在一個像樹的倒置樹)。社交網站Neo4j和Mysql的體系結構

現在我們計劃使用Neo4j來存儲實體與其ID之間的複雜關係。我們想要在MySQL中存儲該實體的實際數據。我們希望將圖形數據庫內容保持爲最小尺寸(但對於整個關係(對於提要非常重要)),以便我們可以在運行時將整個圖形加載到RAM中。 (整個圖形在內存中用於快速檢索內容)。一旦我們從Neo4j獲得了對象的ID,我們就可以在MySQL上運行正常的SQL查詢。

我們使用PHP和MySQL組合。現在我們已經瞭解到,如果Neo4j以嵌入模式實施,它適用於複雜算法和快速數據檢索。現在我們需要將Neo4j與PHP集成。我們計劃爲Neo4j實現創建RESTful Java API(或SOAP)。這樣我們就可以做到。

我們將擁有至少100萬個節點和1000萬個關係。 Neo4j能否在1-5秒內通過適當的索引來遍歷100萬個沒有性能故障的節點?

現在,請指導我,如果這將工作。任何以前已經做過這種事情的人。你在這方面的任何一點指導對我來說都是非常有用的。

謝謝

P/S:我附上一些項目關係圖,給你更多的瞭解。請詢問你是否需要更多的投入。

https://drive.google.com/file/d/0B-XA2uVZaFFTWDdwUEViZ2ZsbkE/edit?usp=sharing

https://drive.google.com/file/d/0B-XA2uVZaFFTTGV4d1IySXlWRGs/edit?usp=sharing

回答

0

是的,10M的關係和1M的節點應該是即使在內存中保留沒有問題。爲了達到最快的檢索,我將建立在Java服務器擴展和使用嵌入式API,甚至Cypher支架,並公開自定義REST端點,你的PHP環境談判,看http://docs.neo4j.org/chunked/milestone/server-plugins.html

+0

謝謝彼得。我想我應該去開發定製的JAVA API的。你以前做過嗎?以及將它與REST整合的體驗如何? – user609306

+0

以及100萬節點解析所需時間? thabks – user609306

+0

使用Java的經驗是好的,是的,我已經完成了,因爲我寫了部分代碼;)讓我們知道你是否有問題。 –

3

我前一段時間發佈的非託管的擴展,它代表一種活動流。隨意看看,只需通過一個簡單的http-REST調用即可從PHP使用它。

https://github.com/jexp/neo4j-activity-stream

域模型的圖片是在這裏:

enter image description here