我的用例要求我尽快清除图形,以便摄取新图形。我在通过 Rexster 实现的 Neo4j 图中有数百万个顶点和边。g.E.remove()
我尝试使用Rexster 界面删除具有 280 万条边的图形-
localhost:8182/graphs/neo4jsample/tp/gremlin?script=g.E.remove();
执行此操作需要将近 200 秒(仅删除边缘)。当我的解决方案上线时,我必须在最多 10 秒内清空图表。
我试图删除保存neo4j图形(.db)文件的文件夹(默认为/tmp/neo4j-graph)。即使在这样做之后,Rexster 也会将结果返回给 gremlin 查询(就像在 neo4j-graph 被删除之前一样)。我猜这是因为当 Rexster 服务器启动时,该图正在被缓存。从上述步骤开始,我首先关闭图表
localhost:8182/graphs/neo4jsample/tp/gremlin?script=g.shutdown();
..然后删除'neo4j-graph'文件夹。然后我尝试用
localhost:8182/graphs/neo4jsample/tp/gremlin?script=g = new Neo4jGraph('/tmp/neo4j-graph')
坚持这个位置,因为这是在“rexster.xml”中配置的。现在创建了一个新的 'neo4j-graph' 文件夹,其中创建了所有 Neo4j '.db' 文件。任何使用 g (gVmap(), g.addVertex([name:"John Doe",age:50])) 的 gremlin 查询现在都会引发错误,我发现其中一个可以理解的是 -
org.neo4j.graphdb.TransactionFailureException: Database is currently not available. No blocking components
在这种情况下,有没有办法让“g”再次正常工作(无需重新启动 Rexster)?
有没有比我提到的更快的方法来删除整个图表?