今回は、バッチ処理とストリーム処理についてご紹介いたします。
コンピューターには毎日、何百件、何千件というデータから必要な情報を得るためにデータが処理されています。
すべてのデータが同じ方法で処理されている訳ではありません。
金融株価表示などのデータはストリーム処理。銀行などのデータはバッチ処理を行います。
□バッチ処理とは
新しく受信したデータ要素は一旦、グループにまとめられ、一度にまとめたデータを処理すること。
※英語の[Batch]から来ている。意味は一束、一群といった意味。
データを処理されるタイミングは、時間間隔(1時間ごと、2時間ごとなど)や、特定の量のデータが受信された場合などをトリガーにしてデータを処理することができます。
バッチ処理のメリットとデメリットを紹介いたします。
メリット
・場所やデータに囚われずにデータ処理が可能になります。
バッチ処理は一定量集計したデータをまとめて処理できるので、オペレーターがその場にいる必要がなくなります。タスクスケジューリングを行うことで、好きな日時にデータ処理を行わせることもできるので、夜間や祝日など業務時間外にデータ処理を設定することも可能になります。
・人為的ミスがなくなる
大規模なデータはプログラムされたように処理されるため、入力ミスといったエラーを排除することができます。
データ処理において小さな入力ミスが後々大きな業務負担を生むことになるので、大規模かつ複雑なデータ群を処理する時に有効になる。
デメリット
・データの取り込みから結果の取得までの待機時間が長くなってしまう
受信したデータは一度グループにまとめてから一度に処理を行うため、リアルタイムでデータの集計状況などを確認することはできません。
・データを慎重に確認する必要がある
バッチ ジョブ中に発生するデータ、エラー、プログラム クラッシュの問題により、プロセス全体が停止してしまいます。 日付の誤植などの軽微なデータ エラーでさえ、バッチ ジョブの実行が妨げられる可能性があるため、ジョブを再実行する前に、入力データを慎重に確認する必要があります。
次にストリーム処理について紹介いたします。
□ストリーム処理
ストリーミングデータ(時間の経過とともに発生するデータ)をリアルタイムで継続処理を行うこと。
バッチ処理とは異なり、次のバッチ処理間隔まで待機する必要がない。データは一度にバッチで処理されるのではなく、個々の要素として処理されるので、新しい動的データが継続的に生成されるほとんどのシナリオで役立ちます。
メリット
・即時性の高いデータ処理に優位
すぐに反映したいデータなどの処理を行うためには即時性が必要になります。ストリーム処理ではデータが受信するたびにデータ処理を行うため、このようなデータを処理する時に使われます。
デメリット
・一度に大量のデータを処理できない
リアルタイム処理でもある程度多くのデータを処理できるようにはなってはいるが、バッチ処理に比べると大量のデータ処理には向きません。
バッチ処理とストリーム処理の活用例をご紹介いたします。
バッチ処理の活用例
・銀行
ATMの利用などに支障をきたさないように、給与の振り込みや、企業間取引などの膨大なデータは、夜間バッチで行われます。
銀行では、日中にバッチ作業を行うと、それだけでコンピューターのメモリの大部分を使用してしまい、本来の業務に支障をきたすことがありるためです。
ストリーム処理の活用例
・建物の煙と熱を監視するシステム
火災が発生した場合に住民がすぐに脱出できるように、アラームをトリガーしてドアのロックを解除する必要があります。そこで即時性を実現できるストリーム処理を行います。
他にも、金融機関での株価のアップデートなど、即時に結果を表示する必要があるデータ処理に向いています。
【参照】バッチ データとストリーミング データの違いの説明 - Learn | Microsoft Docs
バッチ処理とは? 知ってそうで知らないIT用語をわかりやすく解説| 株式会社 インテリジェント・モデル (imkk.jp)
【入門】ストリーム処理とは? OSS のエンジンを紹介 | ほげほげテクノロジー (hogetech.info)