我的用例要求我尽快清除图表,以便摄取新图表。我通过Rexster实现了Neo4j图中的数百万个顶点和边。我尝试使用Rexster界面中的g.E.remove()
删除带有2.8百万条边的图 -
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([名称:" John Doe",年龄:50])的任何gremlin查询现在抛出错误,其中我发现可以理解的错误是 -
org.neo4j.graphdb.TransactionFailureException: Database is currently not available. No blocking components
有没有办法获得' g'在这种情况下再次运行良好(不重新启动Rexster)?
是否有比我提到的更快的方式删除整个图形?
答案 0 :(得分:1)
您正在以正确的方式执行此操作,并删除shutdown()
和数据目录。请注意,即使Neo4j服务器也以这种方式工作(requiring shutdown)。不幸的是,需要重新启动Rexster才能将Neo4j图重新生成为新鲜图。