2014-07-24 162 views
2

我想知道neo4j服務器和嵌入模式的含義。即使我經歷了Neo4j Server vs. Embedded。但我很清楚這些概念。我在neo4j服務器的windows 64bit機器上安裝了neo4j 2.1.1。所以當neo4j嵌入式模式會出現時?Neo4j服務器與嵌入模式

另外,我們如何才能在嵌入式模式與服務器模式之間切換,反之亦然?

當我與MySQL的合作,Neo4j的遷移(使用批量導入),導入節點,關係到的Neo4j在messages.log文件,如下得到一個消息後:如何嵌入

Clean shutdown on BatchInserter(EmbeddedBatchInserter[C:\Users\Neo4j\t2.db]) 

在這裏出現如果我已經安裝了neo4j服務器?所以請澄清這些查詢。

感謝您的應用程序內運行

+0

該文檔是有點含糊不清這件事,但嵌入式僅僅意味着什麼顧名思義:嵌入式服務器爲您的應用程序,而不是單獨的東西,你的應用程序連接到的一部分。 –

+0

Ya甚至開始知道neo4j嵌入式數據庫是由我們的應用程序在指定的路徑中使用neo4j庫創建的。但要在neo4j服務器中查看嵌入式數據庫,我怎麼能看到它?我如何在嵌入式到服務器模式之間切換? – shree11

+0

我自己對Neo4j相當陌生,但我認爲您可以從嵌入式實例中複製文件並使用副本運行服務器。 Neo4j中內置了集羣,因此您可以運行帶有嵌入式和服務器節點的集羣。 –

回答

5

嵌入式數據庫,這意味着他們在同一個JVM您的應用程序。一般來說,在嵌入式數據庫中,您可以直接進行數據庫訪問或密碼查詢。這裏有很多優點和缺點 - 其中一個缺點是您的JVM進程鎖定了數據庫;您不能在同一時間訪問相同嵌入式數據庫的不同JVM中使用大量不同的應用程序。親是直接訪問。

當您運行服務器時,通常意味着您使用的是也提供一組RESTful服務的Web管理組件。這是因爲它在不同的JVM中。這意味着您可以通過其他編程語言,網絡等更輕鬆地訪問它。您可以在許多JVM中有很多應用程序都通過RESTful服務與服務器實例通信。通常訪問速度並不快,但它更加靈活。當你以這種方式運行它時,直接訪問Java應用程序內部的圖形(使用Neo4J API)是不受限制的。

如果您想要在嵌入式數據庫中運行網絡管理員/圖形用戶界面和RESTful服務,可以這樣做。 See these instructions for how.

這是一段代碼片段:你需要的是WrappingNeoServerBootstrapper

AbstractGraphDatabase graphdb = getGraphDb(); 
WrappingNeoServerBootstrapper srv; 
srv = new WrappingNeoServerBootstrapper(graphdb); 
srv.start(); 
// The server is now running 
// until we stop it: 
srv.stop(); 
+0

@ Frobber感謝您提供有用的信息。上面你已經給出了代碼片段來從嵌入式數據庫中運行web amin/gui,但是我並沒有使用任何java代碼。所以我應該在哪裏需要適合上面的代碼片段。我使用批量導入器將數據從mysql導入到neo4j。導入後,我無法使用batch-import命令爲新創建的數據庫啓動ne04j服務器。那麼我需要做什麼? – shree11

+0

我收到如下錯誤:'o.neo4j.kernel.EmbeddedGraphDatabase - 啓動失敗:組件[email protected]'已成功初始化,但未能啓動。請參閱附加的原因例外:組件'org.neo4j.kernel.impl.nioneo.xa。NeoStoreXaDataSource @ 49643715'已成功初始化,但未能啓動。請參閱附加的原因例外:'neostore.nodestore.db'有一個我們無法升級的商店版本號。預期'NodeStore v0.A.1',但文件版本'NodeStore v0.A.0'.'。我使用批量導入生成數據庫。 – shree11

+0

@FrobberOfBits這裏嵌入=內存中? –