問題タブ [batch-insert]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - MongoDB バッチ挿入が Java ドライバー 2.11.2 で機能しない
MongoDb 2.4.7
mongo-java-driver-2.11.2.jar
ウィンドウズ7
そのため、挿入のバッチを挿入してテストmongodbをロードして、処理できるスループットを判断しようとしています。一度に1つずつ挿入すると機能します:
...
これをバッチに変更すると、機能しません(重複キー例外が発生します):
...
perl - perlを使用して大きなファイルを解析し、データをdbにダンプする前または後にmongo、indexにデータを挿入しますか?
現在、mongodb を使用して、40,000,000 アイテム近くの非常に大きなサイズのファイル (90G) を保持しています。
このファイルを読み取って解析し、すべての項目を mongodb に挿入します (私のプログラミング言語は perl で、insert ではなく batch_insert で、1 つの項目を 1 つの mongodb ドキュメントにマップします)。
挿入する前に、すでにインデックスを事前に作成しています(約10個のインデックスキー)。
挿入速度が私のニーズ (1 秒あたり 200 から 400 アイテム) を満たしていないことがわかりました。
インデックス キーが多すぎると、特にコレクションのサイズが非常に大きくなると、挿入が確実に遅くなります。
ですから、すべてのデータを db にダンプした後、インデックスを作成できるのではないかと思います。この方法が利用可能かどうか、またはこの方法で間違いなく時間を節約できるかどうか、誰でも教えてくれますか?
neo4j - Neo4j BatchInserter と TimelineIndex [v1.9.4]
BatchInserterIndex を使用して大量のデータを Neo4j DB に取り込みます。バッチ中に TimelineIndex (Lucene) にノードを追加するつもりです。さて、通常の方法では、TimelineIndex はインデックスに追加するのに (node, long) かかります。内部でキー「timestamp」を使用している可能性があります。(githubのLuceneTimeline.javaで確認)
私の問題は、ノードを TL インデックスに挿入できるが、通常の Java API を使用してそれらを取得できないことです。常に、timelineIndex.getFirst() を null として返します。以下のようにインデックスを初期化しました。
通常のアクセス方法
バッチ取り込み
現在、timelineIndex.getFirst() を使用してバッチ インサーターによって追加されたデータを取得しようとすると、常に null が返されます。しかし、SAME DB に通常の方法で追加されたノードは、適切な値を返します。
どこが間違っていますか?
mysql - SQLクエリを介して行をコピーする
SQLクエリを介して複数の行を挿入しようとしていますシナリオは次のとおりです。1に対して複数の属性がありtestID
、あるテストの属性を別のテストにコピーしたいですTestID
。
testID=877
ここで の属性をにコピーしtestID=635
ています。ID 877 のテストには 10 個の属性があり、testID 635 のテストには 1 個しかありません。AttributeID という名前の Autoincrement Primery Key があり、エラーは次のとおりです。
java - Neo4j BatchInserterIndex OutOfMemoryError 例外
BatchInserterを使用して、neo4j データベースから特定のプロパティと関係を取得し、 BatchInserterIndex を使用して新しいインデックス (数値インデックスを使用) を書き込みます。
約 10 分後、インデックス フォルダーのサイズは 4.7G になり、メモリが完全に使用され、ガベージ コレクションによって処理が非常に遅くなり、しばらくすると VM がガベージ コレクター例外で終了します。
コードはおおよそ次のようになります。
次の Java VM オプションを使用します。
16GB RAM と Java 1.7_60 を搭載したマシン上
a) 私は何か間違ったことをしていますか?
b) そのすべてのメモリを使用しているのは何ですか? lucene か neo4j ですか?
c) Michael Hunger は、彼のバッチ インポーターでどのような違いを行っていますか? 私はコードを少し見ましたが、彼がどのようにそれを行っているかについては本当に手がかりがありません..
python - バッチ挿入 neo4j - 最適なオプション?
比較的大きなデータセットをneo4jにインポートしようとしています...関係を持つ約5000万のノード。
私は最初に py2neo を介して Cypher を試しました -> これは機能しますが、CREATE UNIQUE または MERGE を使用する必要がある場合は非常に遅くなります。
現在、他のバッチ インポート方法を検討していますが、一般的なワークフローと速度に最適な方法について推奨事項があるかどうか疑問に思っています。
- Neo4j ドキュメントでは、 Java のように見え、Neo4j ディストリビューションの一部であるバッチ挿入機能について言及しています。
- また、Michael Hunger によるバッチインサーターが github にあります。これがディストリビューションに含まれているものとどの程度似ているか、または異なるかはわかりません。
- 次に、現在テスト中のload2neoもあります。
- そして、 Neo v2 の CYPHER の一部としてCSV機能からの負荷がありますが、それが主に便利な要因であるかどうか、およびそのパフォーマンスが、Cypher を介して 40,000 のバッチで Cypher クエリを実行するのと似ているかどうかはわかりません。取引。
これらのオプションの機能、ワークフロー、速度の違いについてコメントをいただければ幸いです。
java - SQL の関連テーブルでバッチ挿入を使用する
2 つの MySQL テーブルPersons
とAddresses
. Persons
テーブルには、同名id_address
の列の外部キーとなる列があります。Addresses
の列id_address
にAddresses
はAUTO_INCREMENT
ed 値があります。したがって、新しい人を挿入したいときはLAST_INSERT_ID()
、新しい値に設定するアドレスを挿入し、次にこの最後の id を使用しPersons.id_address
ます。
私の質問は、これら 2 つのテーブルにバッチ挿入を設定し、1 つのステップでさらに行を挿入するオプションはありますか?
私はMySQLドライバーでJavaを使用しています.ORMフレームワークなしでこれが必要です。
編集:私はそれが不可能であることを発見しました, 関連する答えはここにあります: 1つのバッチで2つの異なる準備されたステートメント