非常に大きな csv データをロードするための簡単な ruby ルーチンを作成しました。load_csv を使用しようとすると、さまざまなメモリ不足の問題が発生したため、ruby に戻しました。私はneo4jに比較的慣れていないので、作成した暗号クエリを文字列として呼び出すようにNeographyを試みています。
サイファー コードはマージを使用して、2 つの既存のノード間の関係を追加します。
cmdstr=match (a:Provider {npi: xxx}),(b:Provider {npi:yyy}) merge (a)-[:REFERS_TO {qty: 1}]->(b);
@neo.execute_query(cmdstr)
これらを実行しているファイルの行をループしています。ソケットエラー「要求されたアドレスを割り当てることができません」で約30000行後に失敗します。GCが何らかの問題を引き起こしていると思います。ただし、ログは何も教えてくれません。GC を別の方法でチューニングし、別の量のヒープを試してみました。毎回同じ場所で失敗します。どんな助けでも感謝します。
[編集] 詳細情報 - netstat --inet を実行すると、localhost:7474 への数千の接続が表示されます。execute_query は設計により接続を再利用しませんか、それともこれは問題ですか?
パラメータを試してみましたが、動作は同じです。バッチを使用してこの種のクエリをどのようにコーディングし、npi でインデックスを使用するようにしますか?