2013-06-26 59 views
0

我从一堆30k xml文件创建了一个图形数据库。我想重用这个图形数据库来查询它。目前,我每次需要从中查询图形时都会创建图形数据库。由于数据集非常庞大,因此创建数据库需要大约两年。 40分钟。我不知道重复使用现有数据库的方式,而不是每次都创建它。如果你能告诉我如何做到这一点,我将不胜感激。 (Java语言,IDE-> IntelliJ,Redhat Linux)。使用现有的neo4j图形数据库进行查询,而不是每次创建新数据库(相同)

+0

这是怎么回事!我不明白究竟是什么让你每次运行查询时都创建图表! –

+0

我不确定我是否理解。 Neo4j是一个数据库(暂时忘记它是* graph *数据库)。像其他任何数据库一样,它的设计目的是保持一段时间,而不是为一次性使用而创建,然后销毁。每次你想运行一个查询时,什么样的用例引导你创建数据库,而只是连接到你的数据库服务器并按你喜欢的频率来查询它? –

回答

0

我是新来的,但我看到有几个代码中的删除数据库方法。也许这是你的情况。尝试注释删除数据库方法o删除ir,并仅使用启动和关闭。

我想知道如何使用数据库,而无需每次启动和关闭Java代码运行,也许与api REST。我还没有答案,但我仍在寻找。

0

首先,您应该确保您的导入逻辑和您的查询逻辑不在相同的代码中,并且您可以在没有其他代码的情况下进行调用。

您创建的数据库存储在一个目录中。

  • 如果你在服务器模式下,它在配置文件中指定:neo4j-server.properties(查找org.neo4j.server.database.location)。
  • 如果你在嵌入模式,声明数据库到图形工厂的路径:

    graphDb =新GraphDatabaseFactory()newEmbeddedDatabase(PATH/TO/NEO.DB);

0

重复使用是什么意思?如果要同时使用来自多个客户端的数据库,请使用Neo4j Server和REST,请参阅http://docs.neo4j.org/chunked/snapshot/rest-api.html,并将服务器指向conf/neo4j-server.properties中的数据库目录。

此外,你可以点的Neo4j的新实例到同一数据库目录和方式打开您创建的数据库(独占),看到https://github.com/neo4j/neo4j/blob/master/community/embedded-examples/src/main/java/org/neo4j/examples/EmbeddedNeo4j.java#L35

那是捂住用例?

/彼得

0

我有同样的问题,这导致从Neo4j documentationcode snippets马虎复制粘贴。每次运行代码时,所有以前创建的节点都被删除。

除了删除removeData - 方法(由何塞提到的),你也应该删除以下行的createDb() - 方法来防止这种情况:

FileUtils.deleteRecursively(new File(DB_PATH)); 

也许这还可以帮助任何人,即使话题老了。

相关问题