Apache Tinkerpop的Neo4jGraph.open()可以从文件系统打开数据库吗?



我正在使用Apache Tinkerpop的Gremlin语言与Neo4J数据库进行交互。我能够使用Neo4jGraph.open("/path/to/folder")方法(来自org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph)来创建一个新的本地数据库。

Neo4J文件填充文件夹,因此我知道正在创建一个数据库。当我从单元测试中再次以相同的路径调用.open时,似乎数据库文件正在被新的数据库实例覆盖。之前添加的任何顶点都不再存在于数据库中。是否可以使用此方法重新打开以前创建的数据库,或者总是生成一个新实例?

我希望Neo4jGraph.open(path)打开一个现有的图,如果在该路径上存在,或者创建一个新的,如果没有找到一个。我不希望它覆盖。我假设您在关闭图形之前没有在单元测试中提交事务:

gremlin> graph = Neo4jGraph.open('/tmp/neo4j')
==>neo4jgraph[community single [/tmp/neo4j]]
gremlin> g = graph.traversal()
==>graphtraversalsource[neo4jgraph[community single [/tmp/neo4j]], standard]
gremlin> g.addV('person').property('name','marko')
==>v[0]
gremlin> graph.close()
==>null
gremlin> graph = Neo4jGraph.open('/tmp/neo4j')
==>neo4jgraph[community single [/tmp/neo4j]]
gremlin> g = graph.traversal()
==>graphtraversalsource[neo4jgraph[community single [/tmp/neo4j]], standard]
gremlin> g.V()
gremlin> g.addV('person').property('name','marko')
==>v[0]
gremlin> g.tx().commit()
==>null
gremlin> graph.close()
==>null
gremlin> graph = Neo4jGraph.open('/tmp/neo4j')
==>neo4jgraph[community single [/tmp/neo4j]]
gremlin> g = graph.traversal()
==>graphtraversalsource[neo4jgraph[community single [/tmp/neo4j]], standard]
gremlin> g.V()
==>v[0]

你可以看到,如果我close()没有g.tx().commit(),然后重新打开图形,我添加的顶点不存在。然而,通过调用commit(),我可以重新打开并获得我的顶点。

相关内容

  • 没有找到相关文章

最新更新