S.B.S. Salesforce技術ブログ

教えて921さん!

バッチ処理とは何か?

こんにちは!141です。
今回は、画面系のプログラミングしか経験がない!って方に是非読んでいただきたい内容になっております。
裏で起動されて処理するプログラム・・・書いたことありますか?
経験が無い方は「バッチ処理」という概念を是非勉強してみてください。

バッチ(Batch)は「ひと束」「一群」「1回分にまとめる」という意味で
バッチ処理はあらかじめ登録した一連の処理を自動的に実行する処理方式を指す。 複数のプログラムやファイル転送コマンドなどの実行順序を定義し、大量のデータを一括処理する。 処理の単位を「バッチ」と呼ぶ。
(出典:大塚商会 IT用語辞典)

う~ん
わかったような、わからないような。
という人に、具体的に説明します。

まずデータの処理には大きく分けて以下の2種類あります。
①リアルタイム処理(オンライン処理)
バッチ処理

バッチ処理の説明の前に、リアルタイム処理(オンライン処理)の 例を説明します。

皆さんは、ECサイトで買い物をしたことがありますか?

買い物をする際は、商品を送ってもらわないといけないので 当然、自分の名前や住所を購入先サイトで入力しますよね。

f:id:sbsSF:20201022101835p:plain
Eショッピング
入力した最後に「送信する」ボタンなどがあったと思います。 その画面を思い浮かべてみましょう。

入力した情報はどこへ登録されるのでしょうか?
アマゾンで買い物したら、アマゾンのどこかのサーバーへデータが送信されますね。 即、データベースに登録されるイメージです。
リアルタイムに処理されているから、商品がすぐに届くのです。ありがたい仕組みです。

いまは、スマホ画面やPC画面から手で入力したデータが
登録ボタンや送信ボタンを押したら、すぐにデータベースに反映される
そういうデータの流れを「リアルタイム処理」と覚えておけば 問題ないです。

それでは、バッチ処理は、どんな場面で使用されるのでしょうか?

バッチ処理の特徴を2つ挙げます。

特徴1.設定されたタイミングで処理してくれる

即時の場合もあるし、夜間の場合もあるし
月1回の場合もあるし、年1回の場合もあるし

日毎に処理するようなバッチは「日次処理バッチ
月毎に処理するようなバッチは「月次処理バッチ
年毎に処理するようなバッチは「年次処理バッチ

入力された文字や数値をもとにしてプログラム郡が
次々にデータの編集を行ってデータベースに書き込む。
バッチを起動するきっかけになるものは、ボタン押すとか
決まった時間とか、いろいろです。
起動のきっかけになるものを「トリガー」などと呼びます。

リアルタイム処理はその名の通り、即時処理されますが
バッチ処理は夜間に時間になると起動したり
画面から誰かがボタンを押して起動したり
システムや運用の都合上、最適なタイミングで動くように設定します。

数百万件のデータを1度にデータベースに登録しようとすると
コンピュータの処理性能、回線状況によって、サーバーがパンクしたりする
可能性もありますので、実行のタイミングを設計することは
件数が多い場合はとても重要な事柄になってきます。

特徴2.まとまったデータを処理してくれる

リアルタイム処理であれば
1件だけ、または数百件であれば、今どきのコンピュータの性能であれば
PCの画面が固まって動かないってこともないですよね。
ですが、これが数百万件であればどうでしょう?
おそらく、画面が固まる(反応しない)と思います。
そもそも1つの画面から数百万件のデータを手で入力する場面は
まず、ないですけどね・・・。

バッチ処理がよく使われているのは、銀行の引き落とし
倉庫の在庫データの管理、システムへまとめてデータを登録するときの
データ一括取り込みなどです。
画面でポチポチ入力して、即時にデータ反映させる以外の処理は
バッチ処理」で覚えてもいいかも。
身近な見えないところで、ひっそりとたくさんのデータを
データベースに取り込んだりしているんですよね。

AI時代なのでデータ入力の方法は他にもあるのでしょうけど。
センサーで取り込んだデータの処理とか。

★有名なバッチプログラムについて★
よく使われるのはPL/SQLです。
米オラクルが開発した、
SQL(Structured Query Language:非手続き型言語)」を
手続き型言語として拡張したプログラミング言語です。

ただし、大量データを想定した場合によく使われているってだけで
実際はプログラミング言語は問わず、
上で挙げた2つの特徴があるプログラムであれば、
バッチ処理と呼びます。

JAVAでもバッチ処理を作れるし、VBAでも作れます。
言語でなく、処理の形式ですので、お間違えなく。

身近なものは「Windowsバッチ」があります。

皆さんはPCでフォルダを作成したり、ファイルをコピーしたり
いつもはマウスやキーボード操作でやってますよね?
実はその操作はWindowsOSに対して、コマンド(命令)をして
データを操作しているわけです。
裏でWindowsのOSがやっているので皆さんには見えませんが Windowsへの操作コマンドをプログラムとして書き連ねたら
それも立派なバッチです。それがWindowsバッチです。
通常は設定ファイルを含む複数のプログラムのファイルを
組み合わせて処理をさせることが多いです。
そして、1つの機能を実行する処理の塊を「ジョブ」と
呼んでいます。

使用例 「このバッチジョブ、設定ファイルのパラメータが間違ってる!
動かしたら私のデータが上書きされたよ(泣)」
 

以上、バッチ処理について、でした!