【问题标题】:Neo4J Subgraphs or Multiple DatabasesNeo4J 子图或多个数据库
【发布时间】:2013-02-22 10:01:29
【问题描述】:

我的 Neo4J(嵌入式)数据库设置如下:

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

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

我想做的是:

  • 删除项目节点下的所有节点。
  • 当项目节点下方没有任何内容时,删除用户下方的所有项目节点
  • 将特定用户节点下的所有节点导出到 .graphML(可能使用 Gremlin Java API?)
  • 将 .graphML 文件导入回特定用户节点下的数据库,而不删除位于不同用户节点下的信息。

我已经使用 Gremlin GraphML 阅读器来导入和导出整个 Neo4J 数据库,但我无法找到有关导入/导出子图的信息。

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

另一种可能性是每个用户都有一个 Neo4J 数据库,但这实际上是不太可取的选项,我不确定它是否真的可行,无论是嵌入式版本还是服务器版本。我读过一些关于在不同端口上拥有多个服务器版本的信息,但我们的用户数量是每个定义的无限...

任何帮助将不胜感激。

编辑 1: 我还遇到了一个叫做 Geoff (org.neo4j.geoff) 的东西,它处理子图。我完全不知道它是如何工作的,但我现在正在研究它。

【问题讨论】:

    标签: neo4j subgraph


    【解决方案1】:

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

    使用密码查询,您可以删除子图并将它们再次导出到密码。 Neo4j Console repository中有查询结果的导出代码。

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

    【讨论】:

      【解决方案2】:

      一种选择可能是在遍历时使用Tinkerpopblueprints 之类的东西来创建通用Graph,然后执行GraphML 导出。

      https://github.com/tinkerpop/blueprints/wiki/GraphML-Reader-and-Writer-Library 会有更多信息,但如果您要导出子图,这可能是您的最佳选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多