2

複数のテーブルに200万のレコードを挿入する必要があります。現在、CSVファイルに書き込み、db2インポートを使用してデータベースにロードしています。

このロジックをある種のJDBCに変更したかったのです。複数のオプションを検討していると、SpringJDBCテンプレートとプレーンJDBCと混同されます。

100万個のレコードを10個のテーブルに挿入したいとしましょう。各テーブルには10万個あり、これらはすべて単純なJDBCステートメントです(実行時にどのテーブルを処理しているかわからないため、プリペアドステートメントではありません)。

どのシステムを選択しても、ピークリクエストに対して最大1500万レコードの挿入を処理する必要があります。

どのフレームワークが優れていますか?

4

4 に答える 4

6

大量のデータを移動する場合は、バルクコピーツール(db2importなど)を使用する場合と比較して、JDBC(またはJDBC上に構築されたライブラリ)を使用するのは適切ではない場合があります。JDBCは桁違いに遅くなります。なぜなら、

  • JDBCは非常におしゃべりなプロトコルであり、

  • 通常、一括コピーツールは、コピープロセス中の制約を緩和します。

時間の違いは非常に大きくなる可能性があります。バルクコピーツールに10分かかるものは、JDBCを使用すると数時間かかる場合があります。プロトタイプを作成していくつかのタイミングを実行し、このようなことを行う前に、どのようなパフォーマンスが得られるかを確認する必要があります。

于 2010-12-14T17:11:58.623 に答える
2

すでにSpringを使用している場合は、を使用することもできますJdbcTemplate。これにより、作業が少し簡単になります。単純な場合には、JDBCAPIを直接使用する必要がないことを意味します。基本的に、JdbcTemplateこれはJDBCの非常に薄いラッパーであり、煩わしいボイラープレートコードの一部を削除します。

于 2010-12-14T15:43:14.327 に答える
2

skaffmanが言ったように、あなたがすでにSpringを使用しているなら、あなたの選択はおそらくJdbcTemplateです。具体的には、batchUpdate()メソッドを確認することをお勧めします。これがどのように機能するかのかなり良い例です。私はこれを使用して、数十万行をすばやく挿入し、大きな成功を収めました。

于 2010-12-14T17:09:48.640 に答える
0

jcabi-jdbc の JdbcSession検討してください。たとえば、JDBC と同じくらい単純です (100 万のレコードを挿入します)。

JdbcSession session = new JdbcSession(source);
for (int i = 0; i < 1000000; ++i) {
  session.sql("INSERT INTO foo (number) VALUES (?)")
    .set(i)
    .insert(new VoidHandler());
}

それでおしまい。

于 2012-05-17T11:49:12.620 に答える