2

データを含む非常に大きなファイルがあるとしましょう。パーサーはそれを解析し、データを次のクラスに保持します。

Class Data{
  DataHeader header;
  List<DataLine> lines;
  ... 
}

このデータを DB に永続化する前に、いくつかの検証と処理を行います。そして、エラーがない場合にのみ永続化します。

データ ファイルは次のようになります。

DATAHEADER|.......
DATALINE|1|....
DATALINE|2|....
... and so on

限られた JVM メモリでこのファイルを処理するには、バッチで処理し、エラーがない場合にのみ永続化する必要があります。ソリューションの設計にご協力いただきありがとうございます。

4

1 に答える 1

1

大きなファイルでは、常にすべてをメモリにロードできるとは限りません。情報を格納するために一時テーブルを作成する必要がある場合があります。

  • 数行を読み取ってリストに保存する
  • 行をチェックし、データが正しいことを確認します
  • よろしければ、データベースの一時テーブルに行を保存します
  • ダメなら一時テーブルのデータを削除してエラーで処理を止める

ファイルが一時テーブルにロードされたとき

  • グローバル チェックを行いますか (データベースで実行してみてください。すべてをアプリケーションにフェッチしないでください)。
  • 問題がなければ、一時テーブルからライブ テーブルにデータをコピーします。一時テーブルを削除する
  • ダメなら一時テーブルのデータを削除してエラーで処理を止める
于 2013-08-09T19:31:46.520 に答える