2

次のようにNeo4J(組み込み)データベースをセットアップしています:

  • 参照ノードにいくつかのユーザー ノードを接続します。
  • 各ユーザー ノードには、1 つ以上のプロジェクト ノードを接続できます。
  • 各プロジェクト ノードには、複雑なグラフが添付されています。

複雑なグラフは、単一のトラバース パターンでトラバース可能です (それらには隠されたツリー構造があります)。

私がやりたいことは次のとおりです。

  • プロジェクト ノードの下にあるすべてのノードを削除します。
  • プロジェクト ノードの下に何もない場合、ユーザーの下のすべてのプロジェクト ノードを削除します
  • 特定のユーザー ノードの下にあるすべてのノードを .graphML にエクスポートします (おそらく Gremlin Java API を使用しますか?)
  • 別のユーザー ノードにある情報を削除せずに、特定のユーザー ノードの下にあるデータベースに .graphML ファイルをインポートして戻します。

Neo4J データベース全体をインポートおよびエクスポートするために、Gremlin GraphML リーダーを既に使用しましたが、サブグラフのインポート/エクスポートについて何かを見つけることができませんでした。

これが実際に可能である場合、Neo4J は、同時に何かをインポートしようとする 2 人のユーザーをどのように処理しますか? たとえば、ユーザー 1 は自分のセクションを user1 ノードの下にインポートし、ユーザー 2 は自分のデータをユーザー 2 ノードの下に同時にインポートします。

もう1つの可能性は、ユーザーごとにNeo4Jデータベースを使用することですが、これは実際にはあまり好ましくないオプションであり、組み込みまたはサーバーバージョンで実際に可能かどうかは非常にわかりません. 異なるポートに複数のサーバーバージョンがあることについて読んだことがありますが、ユーザーの数は定義ごとに無制限です...

どんな助けでも大歓迎です。

EDIT 1:サブグラフを扱うGeoff(org.neo4j.geoff)と呼ばれるものにも出くわしました。これがどのように機能するかについてはまったくわかりませんが、現在調査中です。

4

2 に答える 2

3

インポートの開始時にユーザー ノードをロックして、2 番目のインポートを待機する必要がある (チェックする必要がある) 場合があります。

cypher クエリを使用すると、サブグラフを削除して、再度 cypher にエクスポートすることもできます。Neo4j コンソール リポジトリには、クエリ結果のエクスポート コードがあります。

そこでは、geoff-export と import、さらには cypher インポーターも見つけることができます。

于 2013-02-24T20:55:44.313 に答える
2

1 つのオプションは、トラバース時にTinkerpop blueprintsジェネリックを作成してからエクスポートを実行するようなものを使用することです。GraphGraphML

https://github.com/tinkerpop/blueprints/wiki/GraphML-Reader-and-Writer-Libraryに詳しい情報がありますが、サブグラフをエクスポートする場合は、おそらくこれが最適なオプションです。

于 2013-02-22T16:09:22.677 に答える