バッチ処理とリアルタイム処理の違い ― 向く業務
給与計算のように
バッチ処理とリアルタイム処理の違いは、処理する時刻
月末の給与計算は、締めたあとにまとめて計算しても支給日に間に合います。ATMでの引き出しは、その場で処理が終わらないと利用者が困ります。前者のように、データを一定の期間や量だけためて一括で処理する方式がバッチ処理です。後者のように、データや要求が発生したときにすぐ処理し、結果を返す方式がリアルタイム処理です。
どちらを使うかは、業務が結果をいつ必要とするかで決まります。次の図は、同じ時刻に来た要求を、2つの方式がいつ処理するかを並べたものです。
図のバッチ処理では、10時に来たデータの結果が出るのは翌日の2時ごろです。その代わり、夜間にまとめて流すので、昼間の業務の処理とコンピュータを取り合いません。
バッチ処理とは、ためたデータをまとめて処理する方式
給与計算では、1か月分の勤怠の記録を締め日まで集めます。締めたあと、全社員の分を同じ手順で一度に計算します。このように、一定の期間や量のデータを集め、一括して処理するのがバッチ処理です。
バッチは英語のbatchで、ひとまとまりという意味です。コンピュータに頼む1回分のまとまった仕事を、ジョブと呼びます。バッチ処理では、ジョブを決まった時刻や順番に従って自動で流します。
ジョブを順に実行していく管理は、OSの機能の1つです。この管理を受け持つ仕組みの1つが、ジョブスケジューラーです。夜間に複数のジョブを決まった順に流す運用も、こうした仕組みで動かします。
バッチ処理が向く業務と注意点
向くのは、結果が後でそろえばよく、全件を同じ手順で処理する業務です。給与計算、月次の売上集計、請求書の発行が代表です。夜間や休日に流せば、昼間の業務の処理と重なりません。
注意点は、ジョブが終わるまで結果が出ないことです。途中で入ったデータは、次にジョブを流すまで結果に反映されません。ジョブが予定の時刻までに終わらないと、翌朝の業務を始められないこともあります。ジョブを頼んでから結果がそろうまでの時間は、ターンアラウンドタイムで測ります。
リアルタイム処理とは、発生したときにすぐ処理する方式
ATMでお金を引き出すと、口座の残高はその場で減ります。このように、データや要求が発生したときにすぐ処理し、結果を返すのがリアルタイム処理です。列車の座席予約や、工場のセンサーの値を見張る仕組みも、その例です。
銀行の口座や座席予約のシステムでは、端末とサーバを回線でつなぎ、要求をその場で処理します。この形を、オンライン処理と呼びます。回線越しに1件ずつの取引を処理する形には、オンライントランザクション処理という呼び方もあります。
取引の1件分のひとまとまりを、トランザクションと呼びます。引き出しの途中で失敗したら、残高を減らす処理も取り消さなければなりません。そのための仕組みが、ACID特性です。
リアルタイム処理の分け方は、資料によって違います。機械をすぐに動かしたり止めたりするものを、リアルタイム制御と呼んで分ける資料もあります。
リアルタイム処理の注意点
リアルタイム処理では、要求が来るたびに処理し、決められた時間内に結果を返さなければなりません。そのため、要求が重なる時間帯に備えた処理能力が要ります。止まると業務がその場で止まるため、止まりにくい構成も求められます。止まりにくくする考え方は、フォールトトレラントの記事で説明しています。
対話型処理とは、画面でやりとりしながら進める処理
座席予約の画面では、空席を見て席を選び、確認の画面を見てから予約を確定します。利用者が入力するたびにコンピュータが応え、利用者はその応答を見て次の操作をします。このように、利用者とコンピュータが対話するように進める処理を、対話型処理と呼びます。
バッチ処理では、処理の途中で利用者が入力することはありません。一方、対話型処理とリアルタイム処理は重なる部分の大きい呼び方で、座席予約はどちらの例にもなります。この3つのように、処理をいつ、どうやりとりして行うかで分ける見方を、利用形態と呼びます。
バッチ処理とリアルタイム処理の違いを表で比べる
前の節までの違いを、4つの点でまとめます。どちらが優れているかではなく、業務が結果をいつ必要とするかで選びます。
| 比べる | バッチ処理 | リアルタイム処理 |
|---|---|---|
| 処理する | ためておき、 | 発生した |
| 結果が | ジョブが | すぐ |
| 向く | 給与計算、 | ATM、 |
| 求められる | 決まった | 要求が |
業務ごとに、バッチ処理とリアルタイム処理のどちらが向くかを選ぶ
選ぶときの手がかりは、結果がいつ要るかと、データを1件ずつ扱うかまとめて扱うかの2つです。次の図で業務を選ぶと、向く形とその理由が表示されます。
- 結果が
要る 時刻 - 給与を
支払う 日に 間に合えば よい - データの
扱い - 締め日までの
1か月分の 勤怠を、 全員分まとめて 計算する
- 結果が
要る 時刻 - 翌月の
初めに そろえば よい - データの
扱い - 1か月分の
売上の 記録を、 すべて 読んで 集計する
- 結果が
要る 時刻 - 利用者が
ATMの 前に いる 間 - データの
扱い - 1件の
引き出しごとに、 口座の 残高を 確かめて 減らす
- 結果が
要る 時刻 - 利用者が
画面の 前で 待っている 間 - データの
扱い - 1件の
予約ごとに、 空席を 確かめて 押さえる
- 結果が
要る 時刻 - 異常が
起きて すぐ - データの
扱い - センサーから
絶えず 届く 値を、 届いた ときに 調べる
- 結果が
要る 時刻 - 注文の
受付は その 場で、 売上の 集計は 翌日で よい - データの
扱い - 注文は
1件ずつ 受け付け、 売上の 集計は 1日分を まとめて 行う
ネットショップの例のように、1つのシステムの中で両方を組み合わせることもあります。受け付けた仕事をキューにためておき、処理する側が後から取り出す作りは、SQSとSNSの記事にあります。
集中処理と分散処理の違い:処理をどこで行うかの軸
バッチ処理とリアルタイム処理は、処理をいつ行うかによる分け方です。これとは別に、処理をどのコンピュータで行うかによる分け方があります。前者を利用形態、後者を処理形態と呼んで分けます。
| 分け方 | 何で | 主な |
|---|---|---|
| 処理形態 | 処理を | 集中処理、 |
| 利用形態 | 処理を | バッチ処理、 |
集中処理は、1台の中心となるコンピュータにすべての処理を集める方式です。管理する場所が1か所なので、データの整合性と安全を保ちやすくなります。その代わり、そのコンピュータが止まると全体が止まります。
分散処理は、ネットワークでつないだ複数のコンピュータで処理を分け合う方式です。構成によっては、1台が止まってもほかのコンピュータで処理を続けられます。台数を足して処理能力を増やしやすい一方、障害が起きた場所を突き止めるのは難しくなります。
クライアントサーバシステムは、分散処理の1つです。並列処理は、1つの仕事を分けて複数の処理装置で同時に進め、全体を早く終える方式です。複数の場所に同じデータの写しを置くレプリケーションも、処理形態の1つです。
2つの軸は組み合わせて使います。1台の大型のコンピュータで夜間に給与計算を流すのは、集中処理でのバッチ処理です。複数のサーバで分担して座席予約を受け付けるのは、分散処理でのリアルタイム処理です。
練習問題(全4問)
正解:一定の
バッチ処理は、
正解:月末の
請求書は、
正解:残高を
引き出しの
正解:中心の
集中処理は、
選んでから「採点する」を押すと、解説つきで答え合わせができます。