問題タブ [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.
neo4j - Neo4j バッチ インサータの不明なエラー
neo4j データベースに Java バッチ インサーターを使用しようとすると、次のエラー メッセージが表示されます。
Nodes6.csv は間違いなく存在するため、これは... 紛らわしいです。
java - マップのリストを使用してSpringでバッチ更新を実行するには?
春に初めてList<Map<String, Object>>
、テーブルに a を挿入しようとしています。今まではSqlParameterSource
for batch update を使用してきましたが、これは Java Bean が提供されたときに問題なく動作します。このようなもの:
ただし、Bean の代わりにマップのリストを使用して同じ手法を試しましたが、失敗しました (当然のことです)。
上記のコードは、次の例外で失敗しました:
リストが Bean のバッチであると見なされるため、失敗すると思います。マップのリストを使用して、Spring でバッチ更新を実行する方法が見つかりませんNamedParameterJDBCTemplate
。ご意見をお聞かせください。
insert - カサンドラで行を複数挿入する方法
カサンドラ列ファミリーに複数の行を挿入する最も効率的な方法は何ですか? 1 回の呼び出しでこれを行うことは可能ですか。
現在、私のアプローチは、複数の列を挿入してから実行することです。1回の呼び出しで、1行を保持しています。バッチ挿入を行うための戦略を探しています。
java - JDBC 準備済みステートメント、バッチ挿入のパフォーマンスの向上
15 seconds
膨大なデータセットがあり、それらを一度にデータベースに挿入したいのですが、バッチ挿入で準備済みステートメントを使用しましたが、時間がかかりますpstmt.executeBatch()
。最良の結果 (約 ) を探しています5 seconds
。どうすれば目標を達成できますか?
自動コミットは無効です。
挿入ステートメントの数: 100000 ステートメント。
neo4j - Neo4j で大きなモデルを分割する
膨大な量のデータがあり、このデータを表すモデルを Neo4j で作成したいと考えています。
約300 万のノードと30 億以上の関係になります。これをBatch Inserterで構築すると、データをインポートしてからノードと関係を作成するのに時間がかかりすぎます。
問題は、巨大なモデルを 2 つの別個のモデルに分割し、2 つのモデルに同時にアクセスするサイファー クエリを実行できるかどうかです。はいの場合、どうすればよいですか?
android - ContentValues の配列を使用した一括挿入
約700個のフロートのバッチ挿入をしようとしています。私が使用している方法は以下にあり、コンテンツ プロバイダーの bulkInsert と同様です。問題は、すべての浮動小数点値を ContentValues に入れても何も起こらないことです。これらの浮動小数点値を ContentValues オブジェクトに挿入するより良い方法は何ですか?
php - CodeIgniter: カスタム ライブラリからの insert_batch - リターンまたはエラーなしで失敗する - デバッグ方法は?
いくつかのデータベース操作を実行する必要があるカスタム CodeIgniter ライブラリがあります。
データベースにアクセスするには、StackOverflow で学んだ次のコマンドを実行します。
このコマンドが機能するため、機能していることはわかっています。
ただし、insert_batchはまったく機能しません。FALSE は返されず、エラーもありません... nothin. それはただ死ぬ。
*編集: $product_id が外部キー制約に失敗し、batch_insert が失敗したことが判明しました。*
2 番目の error_log は、失敗した後に実行されることはありません。スクリプトは死ぬだけです。
では、insert_batch が正しく FALSE、エラー、または完全な失敗以外の何かを返すようにするにはどうすればよいでしょうか?
*UPDATE: これを try/catch ブロックに入れてみましたが、成功しませんでした。外部キー制約に失敗すると、スクリプト全体が中止されます。私の現在の意見では、insert_batch はよく書かれていない関数です*
ありがとう!
java - REST を使用して Neo4j への大量のバッチ挿入を最適化する
REST API のバッチ エンドポイントを介して、Neo4j にノード間の関係を持つ大量のノードを挿入する必要があります (約 5,000 レコード/秒 (まだ増加中))。
これは、24 時間年中無休で連続挿入されます。各レコードでは 1 つのノードのみを作成する必要がある場合がありますが、他のレコードでは 2 つのノードと 1 つの関係を作成する必要がある場合があります。
手順を変更したり、Neo4j の設定を変更したりすることで、挿入のパフォーマンスを向上させることはできますか?
これまでの私の進捗状況:
1.しばらくNeo4jでテストしてきましたが、必要なパフォーマンスが得られませんでした
テスト サーバー ボックス: 24 コア + 32GB RAM
スタンドアロン サービスとしてインストールされた Neo4j 2.0.0-M06。
同じサーバー上で Java アプリケーションを実行します。
REST API エンドポイント: /db/data/batch (ターゲット: /cypher)
スキーマ インデックス、制約、MERGE、CREATE UNIQUE を使用します。
2.私のスキーマ:
3. 私の暗号クエリと JSON リクエスト
3.1. 1 つのレコードで単一ノードの作成が必要な場合、ジョブの説明は次のようになります。
3.2. 1 つのレコードが 1 つの関係を持つ 2 つのノードを作成する必要がある場合、ジョブの説明は次のようになります。
3.3. 私は通常、バッチごとに 100 個のジョブ記述 (3.1 と 3.2 の混合) を送信しますが、これには約 150 ~ 250 ミリ秒かかります。
4. パフォーマンスの問題
4.1. 同時実行:
/db/data/batch (ターゲット: /cypher) はスレッド セーフではないようです。2 つ以上の同時スレッドでテストすると、Neo4j サーバーが数秒から数分以内にダウンしました。
4.2. 制約のある MERGE は常に機能するとは限りません。
2 つのノードと 1 つのリレーションシップを 1 つのクエリで作成する場合 (上記の 3.2 で説明)、魅力的に機能することがあります。しかし、CypherExecutionException で失敗し、ノード xxxx の 1 つがラベル aaaa とプロパティ "bbbbb"=[ccccc] で既に存在すると言って失敗することがあります。私の理解では、MERGE は例外を返すとは想定していませんが、既に存在する場合はノードを返します。
例外の結果、バッチ全体が失敗してロールバックし、挿入率に影響します。
この問題について、GitHub で問題をオープンしました。 https://github.com/neo4j/neo4j/issues/1428
4.3. 制約付きの CREATE UNIQUE は、リレーションシップの作成に常に機能するとは限りません。
これは、同じ github issue でも言及されています。
4.4. パフォーマンス:
実際、サイファーでバッチを使用する前に、get_or_create (/db/data/index/node/Post?uniqueness=get_or_create & /db/data/index/relationship/XXXXX?uniqueness=get_or_create) で従来のインデックス作成を試しました。
これらの従来のインデックス エンドポイントの性質 (実際のデータ ストレージ内のデータの場所ではなく、インデックス内のデータの場所を返す) のため、バッチ内でそれらを使用できませんでした (同じバッチで以前に作成されたノードを参照する機能が必要でした) )
auto_indexing を有効にして、レガシー インデックスの代わりにデータ ストレージを直接処理できることはわかっていますが、2.0.0 以降、レガシー インデックスよりもスキーマ インデックスが推奨されているとのことでした。そのため、バッチ + サイファー + スキーマ インデックス アプローチに切り替えることにしました。
ただし、バッチ + サイファーでは、1 秒あたり約 200 のジョブ記述しか取得できません。制約付きの MERGE が常に機能していれば、600 ~ 800/秒としましょう。それでも 5k よりはるかに低いです。 /秒。制約なしでスキーマ インデックスも試してみましたが、挿入率の点でさらにパフォーマンスが低下しました。