清除Neo4j嵌入式数据库

时间:2015-07-23 20:51:38

标签: neo4j spring-data-neo4j-4

使用新版本的Spring Data Neo4j我无法使用Neo4jHelper.cleanDb(db);

那么,在我的应用程序中完全清除Embedded Neo4j数据库的最有效方法是什么?

我为此目的实现了自己的util方法,但这种方法很慢:

public static void cleanDb(Neo4jTemplate template) {
    template.query("MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r", null);
}

如何正确清除/删除数据库?

已更新

这是类似的问题How to reset / clear / delete neo4j database?,但我不知道如何以编程方式关闭Embedded Neo4j以及如何在删除后启动它。

我使用Spring Data Neo4j并根据用户请求清除/删除现有数据库并使用新数据重新创建它。建议调用shutdown方法后如何启动新的嵌入式数据库?

使用案例

在我正在配置嵌入式数据库的工作应用程序中:

GraphDatabaseService graphDb = new GraphDatabaseFactory()
                .newEmbeddedDatabaseBuilder(environment.getProperty(NEO4J_EMBEDDED_DATABASE_PATH_PROPERTY))
                .setConfig(GraphDatabaseSettings.node_keys_indexable, "name,description")
                .setConfig(GraphDatabaseSettings.node_auto_indexing, "true")
                .newGraphDatabase();

此外,我预先使用1000000个节点填充此数据库。在用户请求中,我需要清除此数据库并使用新数据填充它。如何正确快速地清除现有数据库?

我可以在database.shutdown()之后调用Neo4j数据库API来创建新节点,还是需要在它之前初始化新数据库?

1 个答案:

答案 0 :(得分:2)

请参阅相关问题的其他答案。在java内部,您可以使用GraphDatabaseService#shutdown()方法关闭嵌入式数据库。

从那里,您可以通过多种方式删除基础目录see this other answer

所以一般的答案仍然可以是相同的:

  1. 使用neo4j java API关闭数据库
  2. 删除磁盘上的数据库内容
相关问题