バッチ処理
バッチ処理(バッチしょり)とは、
- コンピュータでプログラム群を処理目的ごとに区切り、この区切り毎に順次実行してゆく処理のこと。本項で詳述する。
- ひとつの設備である程度まとまった時間、または単位操作ごとに処理を区切り、原材料をこの区切りごとにまとめて投入する処理のこと。回分処理(かいぶんしょり)も同義。発酵工程やバッチ殺菌などは典型的なバッチ処理である。反対語は逐次処理または連続処理。
バッチ処理(コンピュータ)
バッチ処理(バッチしょり)とは、コンピュータで1つの流れのプログラム群(ジョブ)を順次に実行すること。あらかじめ定めた処理を一度に行うことを示すコンピュータ用語。反対語は対話処理またはリアルタイム処理。
「バッチ (batch)」という言葉は、プログラマがプログラミングをする際、紙にコードを書き、紙テープか80カラム仕様のパンチカードにパンチしていった時代の言葉。カードまたは紙テープはシステムオペレーターに渡され、オペレーターはタスクのスケジューリングをし、コンピュータにカードまたは紙テープを投入していった。スケジューリングされたタスクは直ちにシステムに入れられたのではなく、一緒にまとめて投入されたので(バッチとは、複数の似ているものを1つのグループとして生産、処理すること、または一緒に集めて1つのユニットとして扱うこと。en:Batch processingより)、これらのタスクの集まりを「バッチジョブ」と呼ぶようになった。
バッチジョブは一度設定されると人間の手を煩わせることなく動作する。そのため入力データもスクリプトやコマンド行パラメータを通して予め用意される。この点でユーザーの入力を必要とする対話型プログラムとは対極にある。
バッチジョブは相互対話式の思想に基づく処理の仕組みではないが、IBM の CICS のようなトランザクション処理システムもテクニカルな視点から見ればバッチジョブとして動いている。もっとも、その部分はユーザーから隠れて見えない部分である。
バッチ処理は歴史的にはメインフレームと同義だった。このクラスのコンピュータは非常に高価であるため、上述したような理由でバッチ処理が行われた。また、初期のコンピュータでは端末からの対話的利用はほとんど行われなかった。
NECの情報管理ソフトの中にDataBooster(データブースター)という製品がある。これは通常夜間行われる日次月次のバッチ処理を高速化しようというもので、数十GB単位の大量のメモリーと専用の処理アルゴリズムによって、時間のかかる中間ファイルの生成を行わないところに特徴がある。
夜間に実行されるバッチ処理は「夜間バッチ」と呼ばれ、決められた時間までに終了しなかった場合は「突き抜け」と呼ばれる。[1]
利点
バッチ処理には以下のような利点がある。
- 多くのユーザーがコンピュータのリソースを共有できる。
- 処理をコンピュータのリソースがあまり忙しくない時間帯(多くは夜間、休日)にシフトできる。
- 人間がついていなくてもコンピュータのリソースが暇にならないように最大限有効活用できる。
- 高価なコンピュータをフルに活用することで費用対効果の効率向上に寄与する。
バッチ管理システム
- Spring Batch
- Java Batch System - 現在β版
- blancoBatchProcess - Excelから生成
- SUNBATCH - サントリーシステムテクノロジー
- ParallelFrame - メディア情報開発
- オブジェクトワークス/BT JobManager - NRI
- TERASOLUNA Batch Framework for Java - NTTデータ
- Web Solid Framework - ワイ・エス・ピー
- WebSphere Extended Deployment - IBM
- Batch Execution and Control Environment for Java (JBeX) - 日本IBM
- Quartz Enterprise Job Scheduler
- Real timeFramework Architecture - フューチャーアーキテクト