0

Web アプリケーションで Neo4j 2.2.8 と Spring Data を使用しています。次のように、xml を使用してデータベースを構成しています。

<neo4j:config storeDirectory="S:\Neo4j\mybase" />

しかし、バッチ インサータを使用して、.txt ファイルをソースとする 100 万を超えるノードを追加しようとしています。ファイルを読み取ってオブジェクトのリストを設定した後、バッチ処理するコードは次のようになります。

public void batchInserter(List<Objects> objects) {

    BatchInserter inserter = null;
    try {
        inserter = BatchInserters.inserter("S:\\Neo4j\\mybase");            

        Label movimentosLabel = DynamicLabel.label("Movimentos");
        inserter.createDeferredSchemaIndex(movimentosLabel).on("documento").create();

        for (Objects objs : objects{                
            Map<String, Object> properties = new HashMap<>();
            properties.put("documento", objs.getDocumento());
            long movimento = inserter.createNode(properties, movimentosLabel);                

            DynamicRelationshipType relacionamento = DynamicRelationshipType.withName("CONTA_MOVIMENTO");
            inserter.createRelationship(movimento, objs.getConta().getId(), relacionamento, null);
        }
    } finally {
        if (inserter != null) {
            inserter.shutdown();
        }
    }
}

「インサーター」のxmlで構成されたデータベースのパスを取得することは可能ですか? 上記の構成では、Neo4j が複数の接続に関するエラーを表示するためです。複数接続のこのエラーを解決するプロパティを設定できますか? 誰かがこの問題を抱えていて、それを解決する方法を知っていますか? アイデアは大歓迎です。

みんなありがとう!

4

1 に答える 1

0

あなたの質問にはいくつかの部分があります:

複数接続に関するエラー

特定のディレクトリまたはファイルに関連付けられたローカル データベースで spring-data を使用している場合、2 つの neo4j プロセスが同じ DB を同時に開くことはできないことに注意してください。これはBatchInserter、同じファイル/ディレクトリに対して使用することを決定した場合、spring-data DB を使用している JVM が実行されている間はまったく発生しないことを意味します。その問題を回避する方法を私が知っているわけではありません。1 つのオプションは、ファイルに対してバッチ インサータを使用せず、REST API を使用して挿入を行うことです。

xml で構成されたデータベースのパスを取得する

確かに、それを行う方法はあります。関連するドキュメントを参照する必要があります。あなたが話している構成ファイルとその構造に依存するため、そのコードを提供することはできませんが、本質的には、ここでコードに正しいものを挿入し、プロパティを読み取る方法があるはずですその注入されたオブジェクトからの XML ファイル。

ただし、上記の「複数の接続」の問題を考えると、それは役に立ちません。

大まかに、あなたの解決策は次のいずれかだと思います:

  1. Spring アプリとバッチ インサーターを同時に実行しないでください。
  2. Spring アプリを実行しますが、REST API またはその他の方法を介して挿入を行うため、そもそも複数接続の問題はありません。
于 2016-01-27T20:54:47.517 に答える