定義
バッチ処理(Batch Processing)とは、データが入ってくるたびにすぐ処理するのではなく、一定の量や決まった時間のあいだ少しずつためておき、コンピューターがまとめて一括で処理するデータ管理の方式です。
なぜデータをためてから処理するのでしょう?
靴下が1足汚れたからといって、そのたびに洗濯機を回していたら、電気代も水道代もひどくもったいないですよね。洗濯物をかごにいっぱいためておいて、週末に一度にまとめて回すほうがずっと賢いはずです。
コンピューターの作業もまったく同じです。データが1件入るたびに、重いデータベースを開いて計算プログラムを動かすと、毎回同じ準備作業が繰り返されて、コンピューターの資源が大きくむだになります。そのかわり、データを箱にためておいて、決まった時間にまとめて一度に計算する方式、それがバッチ処理です。
英語の「バッチ(Batch)」は「ひと束」「ひとまとまり」という意味です。こうして束ごとに仕事を任せると、利用者のいない深夜の時間帯に、人の手を借りることなく、コンピューターが自分で膨大な作業を効率よく終わらせてくれます。
身近な暮らしの中の代表例
毎月受け取る給与明細やクレジットカードの利用代金の請求書が、バッチ処理のもっとも代表的な例です。従業員が何万人もいる大企業でも、社員が1人退勤するたびにリアルタイムで税金を計算して口座にお金を振り込むわけではありません。
1か月のあいだにたまった何万人分もの出退勤の記録や各種手当のデータをしっかりためておき、給料日の前夜にコンピューターが一晩かけて一括で精算します。銀行が営業を終えた夜中の0時に、1日分のすべての口座取引を突き合わせる締め作業や、大型ショッピングサイトが毎朝早く、前日の販売統計を出す作業も、すべてバッチ処理です。
利用者に1秒で結果を見せる必要はないけれど、処理すべきデータの量が巨大なとき、バッチ処理はもっとも強力な威力を発揮します。
もう少し正確にいうと: リアルタイム処理との違い
バッチ処理の対極には、データが発生した瞬間にすぐ処理する「リアルタイムのストリーム処理(Stream Processing)」があります。カーナビのリアルタイム経路案内や、クレジットカードの盗難検知システムのように、1秒の遅れも許されない緊急の作業には、リアルタイム方式が欠かせません。
ただ、すべてのデータ処理をリアルタイム方式にすると、高性能なサーバーを一日中ずっとフル稼働させなければならず、費用が大きく膨らむことがあります。そこで現代のITサービスは、すぐ反応すべき部分と、ためて処理する仕事とを賢く分けて、あわせて使っています。
何億枚もの写真データで人工知能(AI)を学習させるときや、何年分もたまったビッグデータを分析するときも、いまなおバッチ処理が中核的なインフラとして頼もしく活躍しています。
よくある誤解
バッチ処理は速度の遅い古い技術なので、そのうちなくなる。
遅いから使うのではなく、「コンピューターの資源をいちばん節約しながら大量のデータを処理するため」に戦略的に使う方式です。人工知能モデルの学習やビッグデータのパイプラインなど、現代の最新技術でも、もっとも中心的な柱を担っています。
日常で出会う場面
毎月25日の早朝に、全社員の1か月分の出退勤記録と税金を一括で計算して、給与を振り込みます。
銀行が閉まった夜中の0時に、1日のあいだに発生したすべての送金と入出金のデータを集めて、口座残高を最終的に精算します。
つまり ひとことで
データをすぐには処理せず、ひとまとめにためておき、コンピューターが空いている時間に一度に処理する、効率のよい作業方式です。