SpringBatchのメタテーブルについて

SpringBatchのメタテーブルについて

Spring Batchは、大規模なバッチ処理を行うためのフレームワークで、データベースを使用してジョブの実行状況やステータスを管理します。
そのため、Spring Batchはデフォルトで「メタデータテーブル」と呼ばれる一連のデータベーステーブルを使用して、ジョブやステップの実行履歴や状態を追跡します。

以下に、Spring Batchで使用される主要なメタデータテーブルについて説明します。

1. BATCH_JOB_INSTANCE

このテーブルは、ジョブのインスタンス(つまり、特定のジョブが実行された回数)を管理します。
ジョブインスタンスは、特定のパラメータセットに対するジョブの一意の実行を表します。

  • JOB_INSTANCE_ID:

ジョブインスタンスの一意の識別子。

  • JOB_NAME:

ジョブの名前。

  • JOB_KEY:

ジョブインスタンスの識別子として使用されるパラメータのハッシュ値。

2. BATCH_JOB_EXECUTION

このテーブルは、ジョブの実行に関する情報を管理します。
ジョブの各実行ごとに新しいエントリが作成されます。

  • JOB_EXECUTION_ID:

ジョブ実行の一意の識別子。

  • JOB_INSTANCE_ID:

対応するジョブインスタンスのID。

  • START_TIME:

ジョブ実行の開始時刻。

  • END_TIME:

ジョブ実行の終了時刻。

  • STATUS:

ジョブの実行ステータス(COMPLETED, FAILED, etc.)。

  • EXIT_CODE:

ジョブの終了コード(通常、ビジネスロジックによって設定されます)。

  • EXIT_MESSAGE:

ジョブ実行に関連するメッセージ(例:エラーメッセージなど)。

  • CREATE_TIME:

レコードの作成時刻。

  • LAST_UPDATED:

最後に更新された時刻。

  • VERSION:

楽観的ロックのために使用されるバージョン番号。

3. BATCH_JOB_EXECUTION_PARAMS

このテーブルは、ジョブの実行に使用されたパラメータを管理します。
ジョブが実行されるときに渡されたパラメータが記録されます。

  • JOB_EXECUTION_ID:

対応するジョブ実行のID。

  • TYPE_CD:

パラメータの型(STRING, LONG, DOUBLE, DATEなど)。

  • KEY_NAME:

パラメータのキー名。

  • STRING_VAL:

パラメータの値(文字列型)。

  • DATE_VAL:

パラメータの値(日付型)。

  • LONG_VAL:

パラメータの値(長整数型)。

  • DOUBLE_VAL:

パラメータの値(倍精度浮動小数点型)。

4. BATCH_STEP_EXECUTION

このテーブルは、ジョブの各ステップの実行に関する情報を管理します。
ステップの実行ごとに新しいエントリが作成されます。

  • STEP_EXECUTION_ID:

ステップ実行の一意の識別子。

  • JOB_EXECUTION_ID:

対応するジョブ実行のID。

  • STEP_NAME:

ステップの名前。

  • START_TIME:

ステップ実行の開始時刻。

  • END_TIME:

ステップ実行の終了時刻。

  • STATUS:

ステップの実行ステータス(COMPLETED, FAILED, etc.)。

  • COMMIT_COUNT:

コミットされたトランザクションの数。

  • READ_COUNT:

読み込まれたレコードの数。

  • FILTER_COUNT:

フィルタリングされたレコードの数。

  • WRITE_COUNT:

書き込まれたレコードの数。

  • READ_SKIP_COUNT:

読み込み時にスキップされたレコードの数。

  • WRITE_SKIP_COUNT:

書き込み時にスキップされたレコードの数。

  • PROCESS_SKIP_COUNT:

処理時にスキップされたレコードの数。

  • ROLLBACK_COUNT:

ロールバックされたトランザクションの数。

5. BATCH_STEP_EXECUTION_CONTEXT

このテーブルは、ステップの実行コンテキストを保存します。
ステップ実行時に使用されるキーと値のペアが記録されます。

  • STEP_EXECUTION_ID:

対応するステップ実行のID。

  • SHORT_CONTEXT:

コンテキストデータの短縮版(必要に応じて長いデータは分割されます)。

  • SERIALIZED_CONTEXT:

コンテキストデータ全体(シリアライズされた形式)。

6. BATCH_JOB_EXECUTION_CONTEXT

このテーブルは、ジョブ実行時に使用されるコンテキストを保存します。

  • JOB_EXECUTION_ID:

対応するジョブ実行のID。

  • SHORT_CONTEXT:

コンテキストデータの短縮版。

  • SERIALIZED_CONTEXT:

コンテキストデータ全体(シリアライズされた形式)。

7. BATCH_STEP_EXECUTION_SEQ と BATCH_JOB_EXECUTION_SEQ

これらのテーブルは、Spring Batchが内部的に使用するシーケンス生成用のテーブルです。
これらは、IDの生成に使用されるシーケンス番号を管理します。

  • ID:

シーケンス番号。

まとめ

これらのメタテーブルを利用することで、Spring Batchはジョブやステップの実行状況を詳細に追跡・管理することができます。
これにより、エラーハンドリングや再実行の際に柔軟な対応が可能になります。
開発者は、これらのテーブルに格納されるデータを元に、ジョブの状態を確認したり、問題が発生した場合の原因究明を行うことができます。