1

バッチ インポーターを使用して、neo4j グラフ データベースにいくつかのデータをロードしました。さらに多くのデータをロードする必要がある場合、外部から挿入されたものを追跡する必要があるか、次の目的で使用できる neo4j の標準機能があるとします。

1)最後に挿入されたノードのIDを取得して、挿入する必要がある新しいノードのIDを認識し、それに応じてインデックスを作成します。

2)データベースに既に存在するノードのリストを取得して、挿入されるノードの一意性を確認できるようにします。ノードがデータベースに既に存在する場合、同じ ID を使用するだけで、新しいノードは作成されません。

3) トリプレットの一意性を確認します - トリプレット「January Month is_a」がすでに neo4j データベースに存在し、挿入したい新しいデータにも同じトリプレットがあるとします。結果が重複しています。

例: batch-importer を使用して neo4j グラフ データベースに次のデータを追加する場合: https://github.com/jexp/batch-import

$ cat nodes.csv
name age works_on
Michael 37 neo4j
Selina 14
Rana 6
Selma 4

$ cat nodes_index.csv
0 name age works_on
1 Michael 37 neo4j
2 Selina 14
3 Rana 6
4 Selma 4

$ cat rels.csv
start end type since counter:int
1 2 FATHER_OF 1998-07-10 1
1 3 FATHER_OF 2007-09-15 2
1 4 FATHER_OF 2008-05-03 3
3 4 SISTER_OF 2008-05-03 5
2 3 SISTER_OF 2007-09-15 7

同じデータベースにさらにデータを追加する必要がある場合は、次のことを知っておく必要があります。

1) ノードが既に存在する場合、トリプレットの作成中にそれらを使用できるように、それらの ID は何か。そうでない場合は、そのようなノードのリストを作成し (データベースにない)、最後のインポートで使用されていない ID から開始します。新しいnodes_index.csvを作成するための開始IDとして使用します

2) データベースにトリプレットが既に存在する場合は、そのトリプレットを再度作成しないでください。データベースに対して暗号クエリを実行すると結果が重複するためです。

ここでも同じ問題が発生しているようです: https://github.com/jexp/batch-import/issues/27

ありがとう!

4

1 に答える 1

0

1-最後のノードIDを知る必要がある理由..新しいノードを挿入するためにIDを知る必要はありません。グラフの最初の空きIDに自動的に追加されます

2-一意性のために、「ノードとリレーションにも」一意のクエリを作成しない理由

ここで参照を確認できます:http://docs.neo4j.org/chunked/1.8/cypher-query-lang.html

于 2013-03-26T20:22:52.810 に答える