我的 Neo4J(嵌入式)数据库设置如下:
- 我将几个用户节点附加到参考节点。
- 每个用户节点可以附加一个或多个项目节点。
- 每个项目节点都附有一个复杂的图表。
复杂图可以用单一遍历模式遍历(其中有一个隐藏的树结构)。
我想做的是以下几点:
- 删除项目节点下的所有节点。
- 当项目节点下方没有任何内容时,删除用户下方的所有项目节点
- 将特定用户节点下的所有节点导出到 .graphML(可能使用 Gremlin Java API?)
- 将 .graphML 文件导入回特定用户节点下的数据库,而不删除位于不同用户节点下的信息。
我已经使用 Gremlin GraphML reader 来导入和导出整个 Neo4J 数据库,但我无法找到有关导入/导出子图的信息。
如果这实际上是可能的,Neo4J 将如何处理试图同时导入某些内容的两个用户?例如用户 1 在 user1 节点下导入他的部分,用户 2 同时在用户 2 节点下导入他的数据。
另一种可能性是每个用户都有一个 Neo4J 数据库,但这实际上是不太可取的选择,我非常不确定它是否真的可行,无论是嵌入式还是服务器版本。我读过一些关于在不同端口上拥有多个服务器版本的信息,但我们的用户数量根据定义是无限的......
任何帮助将不胜感激。
编辑 1:我还遇到了一个叫做 Geoff (org.neo4j.geoff) 的东西,它处理子图。我完全不知道这是如何工作的,但我现在正在研究它。