Apache Tinkerpop 的 Neo4jGraph.open() 可以从文件系统打开数据库吗?
Can Apache Tinkerpop's Neo4jGraph.open() open a database from the file system?
我正在使用 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()
我可以重新打开并获取我的顶点。
我正在使用 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()
我可以重新打开并获取我的顶点。