Fintan

Nablarchシステム開発ガイド

CONTENTS

Nablarchバッチ処理パターン

起動方法による分類

Nablarchバッチは、起動方法により以下の2種類に分かれます。

  • 都度起動バッチ
  • 常駐バッチ

入出力による分類

この切り口とは別に、主となる入力、出力の組み合わせにより、 以下の3パターンに分けることができます。

  • FILE to DB
  • DB to DB
  • DB to FILE

組み合わせは以下の通りとなります。

FILE to DB DB to DB DB to FILE
都度起動
常駐
  • ○:使用する
  • △:仕組み上は可能だが普通は使わない
  • ✕:使わない

(常駐バッチは、通常データベースを監視するため、FILE to DBとの組み合わせはありません)

FILE to DB

  • 外部から受け取ったファイルをシステムに取り込む際に使用します。
  • ファイル取り込み用のバッチプログラムを作成します。
  • 取り込み先は、業務用のテーブルではなく、一時保存用のテーブル(テンポラリテーブル)になります
  • テンポラリテーブルはファイルのレイアウトと1対1のカラムを持ちます

FILE to DBバッチでは、できるだけ業務処理を加えず、ファイルをテンポラリテーブルにINSERTしていくようにします。 これにより、以下のようなメリットが得られます。

  • 一度DBに取り込むことによって、RDBの強力な機能が使用できる。
    • トランザクション
    • SQL
      • 従来のマッチング処理は、SQLのJOINで代替できます
      • 従来のコントロールブレイク処理は、GROUP BYで代替できるケースがあります
  • Nablarchのファイル取り込み機能が使用できる(任意)
    • ファイル取り込み時に障害が発生した場合、途中から取り込みを再開できる

■DB to DB

  • 入力はSELECT文の結果セットの各レコードになります。
  • 1レコード分のデータを受け取って、DBの更新を行います。
  • すべての更新が、同一トランザクション下で実行されるため、障害発生時でも不整合が発生しません

DB to FILE

  • 入力はSELECT文の結果セットの各レコードになります。
  • 1レコード分のデータを受け取って、ファイルの書き出し(普通は1行分)を行います

DBはトランザクション管理されますが、ファイル書き出しは管理外なので、 障害発生時に、不整合がありえます。

上記以外の組み合わせ(FILE to FILE)

例えば、よくあるバッチ処理として「2つのファイルをマッチングしながら、1つのファイルを出力する」というものがあります。 この場合は、FILE to FILEということになりますが、Nablarchバッチではこの形態は使用しません。 それぞれのファイルをDBに取り込んだ後、SQLでJOINすることで同等の処理ができます。

マッチングやコントロールブレイクといったメインフレームのバッチでよくあるようなファイル処理をNablarchバッチで実現することは可能ですが、バッチプログラムが複雑になる、どこまでをファイルでどこまでをDBで扱うかという切り分けが難しい、というような問題があります。 それよりも、前述のパターンの組み合わせで実現したほうが、各バッチがシンプルになり設計もしやすく、バグも埋め込みにくくなります。

注意点

ファイルの移動、コピー

FILE to DBないしDB to FILEを行う場合、そのバッチ処理にはファイルの移動やコピーは含めないようにします。

仮に以下のようなバッチ処理を実装したとします。

  1. ファイルを所定のディレクトリに移動(初期化処理)
  2. 1で移動したファイルを読み込んでDBに登録(本処理)

2で処理が失敗した場合、再実行する前に入力ファイルを元のディレクトリに戻すというオペレーションが必要となってしまいます。

ファイルの移動、コピーを別出ししておくことで、以下のようなメリットがあります。

  • 再実行がやりやすくなる
  • ファイル取り込みバッチの単体テストがやりやすくなる
  • ファイルの移動、コピーを自分で実装しないので、移動、コピーに対する単体テストが不要になる

このエントリーをはてなブックマークに追加


TIS株式会社
個人情報保護方針 個人情報の取り扱いについて 情報セキュリティ方針

Copyright 2020 TIS Inc.keyboard_arrow_up