我想知道neo4j服务器和嵌入模式究竟是什么意思。即使我经历了Neo4j Server vs. Embedded的帖子。但我明白这些概念。我在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 :(得分:7)
嵌入式数据库在您的应用程序内部运行,这意味着它们与您的应用程序位于同一个JVM中。通常,对于嵌入式数据库,您可以直接进行数据库访问或密码查询。这里有很多优点和缺点 - 其中一个缺点是你的JVM进程锁定数据库;您不能在不同的JVM中同时访问同一个嵌入式数据库中的一堆不同的应用程序。专业是直接访问。
当您运行服务器时,通常这意味着您使用的Web管理组件也提供了一组RESTful服务。这是因为它在不同的JVM中。这意味着您可以通过网络等方式更轻松地从其他编程语言访问它。您可以在许多JVM中使用许多应用程序通过RESTful服务与服务器实例进行通信。一般来说,访问速度并不快,但它更灵活。以这种方式运行时,直接访问java应用程序内部的图形(使用Neo4J API)是不受限制的。
如果要在嵌入式数据库中运行Web管理/ GUI内容和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();