EAI/ETL技術者のブログ

EAI/ETL技術者のブログ>バッチ処理の基礎-リアルタイム処理との違いにも迫る!

  • ETLを学ぶ
2019.06.14

バッチ処理の基礎-リアルタイム処理との違いにも迫る!

バッチ処理の基礎-リアルタイム処理との違いにも迫る!

【目次】
 ▶バッチ処理とは?
 ▶バッチ処理とリアルタイム処理の違い
 ▶バッチ処理の基礎 まとめ


こんにちは!技術担当の小林です。

今回のテーマは「バッチ処理」です。


バッチ処理。

とても身近な言葉ですよね。

「ちょっと後回しにしたい経費精算などは月末にまとめてバッチ処理しよう」
という具合に、何かを一括で処理する必要がある時に、私自身もよく使います。

身近でよく使う言葉なだけに、実は個人個人の解釈が少しずつ違っている可能性も…?

ということで、
今回はバッチ処理の理解を深めるための基礎知識について触れてみたいと思います!


バッチ処理とは


「バッチ処理」という用語について、Wikipediaでは次のように定義されています。

  • コンピュータでプログラム群を処理目的ごとに区切り、この区切り毎に順次実行してゆく処理のこと。
  • ひとつの設備である程度まとまった時間、または単位操作ごとに処理を区切り、原材料をこの区切りごとにまとめて投入する処理のこと。
  • 反対語は対話処理・インタラクティブ処理またはリアルタイム処理

(出典:Wikipedia)

うーん、なんとなくはわかる気がしますが、少し理解に時間がかかる気がします…

そこで、
バッチの達人コバヤシ(笑)がわかりやすく一言でまとめますと、ずばり!

「データを、ほしい結果に『まとめて処理』すること」

これに尽きます!(キリっ!)


ここで言う「処理」とは、

  • 複数のデータをキーで結合したり

複数のデータをキーで結合


  • 明細データの合計値を計算したり

明細データの合計値を計算


  • 単純に「A」という文字を「B」という文字に変換したり
  • 「1」という値があったら「A」というデータに変換したり
  • 入力の項目と出力の項目を関連づけたり

単純に「A」という文字を「B」という文字に変換

など、「データ操作を行う」ことを意味しています。


このように

データを一括で加工して、ほしい結果にする行為

これが「バッチ処理」です。


「??」

ここで疑問がでてきたあなた!とてもするどいです!

Wikipediaの定義をよくみると、バッチ処理の反対語に「リアルタイム処理」とあります。


「データを一括で加工して、ほしい結果にする行為」

これがバッチ処理の定義だとすると、
システム間でデータを加工しながら受け渡しをする処理はリアルタイムでもできてしまいます。

となると...リアルタイム処理もバッチ処理に入ってしまうのか..!?

こんなことを書いていると、

「バッチ処理は大量のデータを扱うからリアルタイムではない?」

とか

「リアルタイム処理は即時実行だからバッチではないでしょ?」

とか

こんな声が聞こえてきそうです。

真相をお伝えしますと

リアルタイムで実行されるプログラムも、実はバッチ処理です!

すでに書いたように
「データを欲しい結果にまとめて出す行為」
このことをバッチ処理と定義するならば
リアルタイム処理で受け渡すプログラムもバッチ処理です。


もう、頭の中がぐるぐるしている..
混乱してきた..

という方も、もう少しお付き合いください。

ここから、
「バッチ処理」と「リアルタイム処理」の切り分け
をしていきたいと思います。


バッチ処理とリアルタイム処理の特徴と違い


「バッチ処理」と「リアルタイム処理」との大きな違いのポイントは2つあります。

1. プログラムが実行される起点
2. プログラムの実行間隔の違い

この2つのポイントについてそれぞれ説明していきます。

1.プログラムの実行される起点による違い、切り分け


■リアルタイム処理
 「処理対象のデータに対して何かしらのイベントが発生したら」
  など、イベントを起点としてバッチ処理を動かす行為

■バッチ処理
 「ある決められたタイミングで定期的に」
  など、バッチ処理が起動される行為


2.プログラムの実行間隔の違いによる切り分け


■リアルタイム処理
 「数秒~数分」レベルの短いタイミングで定期的にプログラムを実行する場合

■バッチ処理
 「1日に1回」「1か月に1回」「1年に1回」というように実行間隔が長く開き
  定期的にプログラムを実行する場合

上記のように解説しましたが、ただ、実際は杓子定規で考えることはできません。

今回の切り分けの中で、バッチ処理は
「ある決められたタイミングなど定期的」に実行されるもの
と記載しましたが、
数秒に1回、数分に1回実行される場合、
時間軸で考えるとリアルタイムにデータを操作しているので、
この処理を「リアルタイム処理」とすることもあります。

バッチ処理とリアルタイム処理の特徴と切り分けイメージ

   バッチ処理とリアルタイム処理の切り分けイメージ

私もお客様と会話する中で
「バッチ処理とリアルタイム処理の軸は本当にさまざまだ!」
と日々感じている身です。

もし新しい切り分け方法がありましたら、コバヤシにも教えてくださいませ。


バッチ処理の基礎 まとめ


ポイントは3つです。

バッチ処理の基礎、ポイント1バッチとは「データを欲しい結果データにまとめて一括で処理すること」 ポイント2 リアルタイム処理とバッチ処理の特徴と違いは バッチプログラムの実行される起点が異なる  ポイント3リアルタイム処理とバッチ処理の違いで、バッチプログラムの実行タイミングの 長短でリアルタイム処理やバッチ処理と区分けされる場合もある

簡単ではありますが、バッチ処理の考え方と処理イメージについて解説してみました。

わかっているようで実は奥が深いバッチ処理…

少しでも「バッチ処理」の世界について理解を深めていただき、
データ活用の一助になれば幸いです。


さて次回は、バッチ処理開発によくある問題・課題とその解決策について迫ってみたいと思います!


データ連携/バッチ処理の要件で、開発方式を検討する際に役立つ資料も公開予定です。
資料では、設計・開発・テストのフェーズに分け、スクラッチ(javaなど)とETLツールでの
開発生産性を比較します。

お楽しみに!!



執筆者情報

小林 良平(Ryohei Kobayashi)
東日本技術本部 情報基盤技術統括部

1999年アシストに新卒入社以来、販売管理システムの開発/保守業務、ワークフロー製品のプリセールス/フィールドサポートなどを担当。DataSpiderの立ち上げから携わり、現在はデータインテグレーション系製品全般の主管に従事。

執筆者

関連している記事

  • EAIを学ぶ
  • ETLを学ぶ
  • DataSpider Servista
  • Syncsort DMExpress
2019.06.28

DX「2025年の崖」克服にETL/EAIツールが役立てること

DX「2025年の崖」克服にETL/EAIツールが役立てることについてまとめてみました!

  • ETLを学ぶ
  • EAIを学ぶ
2019.05.10

ETL/EAIツールでデータ連携処理を構築するベストプラクティスとは?(第3回)

データ連携処理の開発にまつわるベストプラクティスを探る連載。第3回目は本題の「ベストプラクティス」について細かく考察していきます。

  • ETLを学ぶ
  • EAIを学ぶ
  • 業務システム連携
2019.04.18

働き方改革関連法-労務管理をラクにするETL/EAIツールというアプローチ

2019年4月に施行される改定労働基準法。「ETL/EAIツール」がどのように働き方改革に貢献することができるのか?具体的にご紹介します。

DataSpider DMExpress(DMX)

ページの先頭へ戻る