2013-02-22 100 views
2

我有我的Neo4j(嵌入式)数据库的设置是这样的:Neo4j的子图或多个数据库

  • 我附上几个用户节点到参考节点。
  • 可以为每个用户节点附加一个或多个项目节点。
  • 每个项目节点都附有一个复杂的图形。

复杂图形可以遍历一个遍历模式(其中有一个隐藏的树结构)。

我希望做的是以下几点:

  • 删除项目节点下的所有节点。
  • 删除用户下面的所有项目节点,当没有什么项目节点
  • 出口低于一个特定的用户节点下的所有节点.graphML(可能使用精怪的Java API?)
  • 导入.graphML文件恢复到特定用户节点下面的数据库,而不会删除位于不同用户节点下的信息。

我已经与Gremlin GraphML阅读器一起导入和导出整个Neo4J数据库,但我无法找到有关导入/导出子图的内容。

如果这实际上是可能的话,那么Neo4J如何处理两个用户同时尝试导入内容?例如,用户1在user1节点下导入他的部分,并且用户2同时在用户2节点下导入他的数据。

另一种可能性是每个用户都有一个Neo4J数据库,但这实际上是不太可取的选择,我很不确定它是否实际可行,无论是嵌入式还是服务器版本。我已阅读了有关在不同端口上有多个服务器版本的情况,但我们的用户数量根据定义无限制...

任何帮助将不胜感激。

编辑1:我也遇到过一些叫做Geoff(org.neo4j.geoff)的东西,它处理子图。我完全无能为力,但我现在正在研究它。

回答

3

开始导入时,您可能会锁定用户节点,以便第二次导入必须等待(并且必须检查)。

通过密码查询,您可以删除子图并再次将其导出到密码。在Neo4j Console repository中有查询结果的导出代码。

在那里您还可以找到geoff-export和import以及cypher importers。