2014-12-26 51 views
0

我一直在Java Servlet Web應用程序(Maven Web應用程序原型項目)的上下文中使用neo4j。我有一個單獨的MySQL服務器運行它存儲用戶信息。Web應用程序 - 每用戶Neo4j數據庫

應用程序需要爲每個需要存儲的用戶(最好在數據庫中,而不是服務器上的文件夾)提供單獨的圖形數據庫。

我用下面的代碼來創建數據庫:

GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabase("Neo4j/db"); 

這存儲在服務器主機上的本地目錄數據庫。通過爲每個用戶製作一個本地圖形數據庫來「污染」主機是不可取的(例如,它會消耗用於數據存儲的主機內存,這自然是數據庫的責任)。另外,我寧願如果我不需要配置和運行單獨的neo4j服務器。

有沒有辦法將neo4j數據庫保存在內存中,序列化它以便將數據存儲在關係數據庫中,並在服務器需要使用圖形數據庫時將其反序列化?

+1

您試圖通過1)引入關係數據庫來避免多圖數據庫的開銷; 2)在不使用時將整個neo4j數據庫轉儲到關係數據庫;和3)每次需要時恢復用戶特定的數據庫?這沒有意義。我相信你*可以*做任何你想要的序列化(意味着答案是'是'),但我只是不知道在真實世界中可能會如何擴展...... –

回答

0

應該沒有什麼能夠阻止您擁有一個Neo4j實例,您可以在其中存儲所有用戶的圖形。如果你認爲你可以通過多個圖解決你的問題,那麼這意味着用戶的圖表已經斷開。在這種情況下,如果你在一個圖中開始遍歷,它將不會到達其他圖,從而暴露其他用戶的數據。您只需要在MySQL數據庫中的用戶與Neo4j中的用戶節點之間建立鏈接,例如,您可以通過Neo中的:User節點上名爲mysqlId的屬性來實現該鏈接。

相關問題