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