【问题标题】:Neo4j Server vs Embedded modeNeo4j 服务器与嵌入式模式
【发布时间】:2014-07-24 20:21:23
【问题描述】:

我想知道neo4j服务器和嵌入式模式到底是什么意思。即使我浏览了Neo4j Server vs. Embedded 的帖子。但我很清楚这些概念。我已经在作为 neo4j 服务器的 windows 64 位机器上安装了 neo4j 2.1.1。那么,neo4j 嵌入式模式什么时候会出现呢?

另外,我们如何在嵌入式模式和服务器模式之间切换,反之亦然?

当我使用 mysql 到 neo4j 迁移(使用批量导入)时,将节点和关系导入 neo4j 后,在messages.log 文件中收到如下消息:

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

如果我安装了 neo4j 服务器,这里的嵌入程度如何?所以请澄清这些问题。

谢谢

【问题讨论】:

  • 文档对此有点含糊,但嵌入式只是顾名思义:嵌入式服务器是您的应用程序的一部分,而不是您的应用程序连接到的单独的东西。
  • 您甚至了解到 Neo4j 嵌入式数据库是从我们的应用程序中使用指定路径中的 neo4j 库创建的。但是要查看 neo4j 服务器中的嵌入式数据库,我该如何查看呢?如何在嵌入式模式和服务器模式之间切换??
  • 我本人对 Neo4j 还很陌生,但我认为您可以从嵌入式实例复制文件并使用该副本运行服务器。 Neo4j 中内置了集群,因此您可以运行具有嵌入式和服务器节点的集群。
  • 是的,我做了同样的事情,将嵌入式数据库复制到 neo4j 服务器并启动了服务器,我收到嵌入式批处理导入器的错误。

标签: neo4j


【解决方案1】:

嵌入式数据库在您的应用程序内部运行,这意味着它们与您的应用程序在同一个 JVM 中。通常,使用嵌入式数据库,您将执行直接数据库访问或密码查询。这里有很多优点和缺点 - 缺点之一是您的 JVM 进程锁定了数据库;您不能在不同的 JVM 中拥有一堆不同的应用程序同时访问同一个嵌入式数据库。专业版是直接访问。

当您运行服务器时,通常这意味着您正在使用还提供一组 RESTful 服务的 Web 管理组件。这样做的好处是它位于不同的 JVM 中。这意味着您可以通过其他编程语言、网络等更轻松地访问它。您可以在许多 JVM 中拥有许多应用程序,它们都通过 RESTful 服务与服务器实例通信。通常访问不是那么快,但它更灵活。但是,当您以这种方式运行它时,直接访问 Java 应用程序内部的图形(使用 Neo4J API)是不受限制的。

如果您想从嵌入式数据库中运行 Web 管理/GUI 内容和 RESTful 服务,您可以这样做。 See these instructions for how.

这是一个代码 sn-p:您需要的是 WrappingNeoServerBootstrapper

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

【讨论】:

  • @Frobber 感谢您提供有用的信息。上面你已经给出了代码 sn-p 从嵌入式数据库中运行 web amin/gui,但我没有编写任何 java 代码。那么我应该在哪里适合上面的代码sn-p。我使用批量导入器将数据从mysql导入neo4j。导入后,我无法使用批处理导入命令为新创建的数据库启动 ne04j 服务器。那我需要做什么?
  • 我收到如下错误:o.neo4j.kernel.EmbeddedGraphDatabase - Startup failed: Component org.neo4j.kernel.impl.transaction.XaDataSourceManager@525c6957' was successfully initialized, but failed to start. Please see attached cause exception.: Component 'org.neo4j.kernel.impl.nioneo.xa.NeoStoreXaDataSource@49643715' was successfully initialized, but failed to start. Please see attached cause exception.: 'neostore.nodestore.db' has a store version number that we cannot upgrade from. Expected 'NodeStore v0.A.1' but file is version 'NodeStore v0.A.0'.。我正在使用批量导入生成数据库。
  • @FrobberOfBits 在这里嵌入 = in-memory 吗?
  • @VolodymyrBakhmatiuk 是的
  • @FrobberOfBits 无论 neo4j 在嵌入式模式或休息模式下运行,数据都不会保留在磁盘上吗?你怎么能说它是在内存中的呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多