ポイント: リアルタイム、バッチ、およびストリーム処理は、異なるニーズに応える重要なデータ管理技術です。リアルタイム処理は即時の反応を保証し、バッチ処理は大規模なデータセットを効率的に処理し、ストリーム処理は継続的なデータ分析を可能にします。
- リアルタイム処理は、ATMや航空交通管制などのアプリケーションに不可欠です。
- バッチ処理は、給与や日次報告に効果的です。
- ストリーム処理は、迅速な詐欺検出やネットワーク監視を促進します。
イノベーションの絶え間ない進展により、開発者は与えられた期間内にテラバイトやペタバイトのデータを分析することを期待できます。(データは、結局のところ、より多くのデータを引き寄せます。)
これはもちろん、多くの利点をもたらします。しかし、このすべてのデータをどう扱うべきでしょうか?これらの技術を加速し、迅速に反応するための最良の方法を知ることは難しいかもしれません。
デジタルファースト企業にとって、リアルタイム処理、バッチ処理、ストリーム処理を最適に使用する方法がますます重要な質問となっています。この投稿では、これらのデータ処理タイプの基本的な違いを説明します。
バッチ処理
ストリーム処理
リアルタイムデータ処理とオペレーティングシステム
リアルタイムオペレーティングシステムは通常、データへの反応を指します。システムは、リアルタイムとして分類される場合、反応が厳しい現実の締切内に行われることを保証できる場合、通常は数秒またはミリ秒単位で行われます。
リアルタイムシステムの最も良い例の一つは、株式市場で使用されるものです。もし株式の見積もりがネットワークから10ミリ秒以内に置かれた場合、これはリアルタイムプロセスと見なされます。これがストリーム処理を利用したソフトウェアアーキテクチャによって達成されたか、ハードウェアで処理されたかは関係ありません。厳しい締切の保証がリアルタイムの特徴です。
リアルタイムオペレーティングシステムの課題
この種のシステムはゲームチェンジャーのように聞こえますが、実際にはリアルタイムシステムは一般的なソフトウェアシステムを通じて実装するのが非常に難しいです。これらのシステムはプログラムの実行を制御するため、まったく新しい抽象のレベルをもたらします。
これは、プログラムの制御フローとソースコードの間の区別が明確ではなくなることを意味します。リアルタイムシステムは、その時点で実行するタスクを選択するためです。これは有益であり、高い抽象を使用して生産性を向上させ、複雑なシステムの設計を容易にすることができますが、全体的な制御が少なくなることを意味し、デバッグや検証が難しくなることがあります。
リアルタイムオペレーティングシステムのもう一つの一般的な課題は、タスクが孤立したエンティティではないことです。システムはどのタスクをスケジュールするかを決定し、高優先度のタスクを低優先度のタスクの前に送信するため、すべての高優先度タスクが完了するまで低優先度タスクの実行が遅れます。
ますます多くのソフトウェアシステムは、締切が絶対的なものではなく、確率であるリアルタイム処理の形態に移行し始めています。ソフトリアルタイムシステムとして知られるこれらは、通常は締切に間に合うことができますが、締切を逃すとパフォーマンスが低下し始めます。
リアルタイム処理のユースケース
データを継続的に入力および処理し、一定のデータ出力ストリームを処理する場合、リアルタイム処理が必要です。リアルタイム処理が必要な現実の状況をいくつか示します。
- 自動現金支払機(ATM):顧客体験を向上させ、バックオフィスの効率と分析能力を高め、不正を減らすために、銀行はリアルタイム処理を採用しています。ATM取引を処理し、取引をアカウントに即座に投稿し、リアルタイムで残高を調整するには、安全で効率的なユーザー認証、アカウント残高チェック、即時の取引承認が必要です。
- 航空交通管制:混雑した空間で航空機を安全に管理および移動させるには、レーダー、衛星画像、センサー ネットワーク、航空機通信などの複数のソースからのデータを使用する必要があります。AIのような高度な技術は、リアルタイムデータを必要とし、瞬時の状況認識、潜在的な衝突の早期警告、航路の最適化と空域の管理を可能にします。理想的には、衝突を回避し、混雑を最小限に抑えるための予測的な意思決定を行うことができることです。
- アンチロックブレーキシステム(ABS):自動化された最適化ブレーキの車両安全の利点にはリアルタイムデータが必要です。タイヤと路面の状態に関する情報は即時でなければなりません。ホイールスリップが検出された瞬間に、システムは動的ブレーキ力を調整します。直線、曲線、角度での速度、路面や湿気、氷、油などの条件に対する感度すべてが、システムが即座に検出、分析、反応し、ホイールのロックを防ぎ、車両の制御を維持し、緊急時のブレーキ距離を短縮する必要があるデータポイントです。
バッチ処理は、大量のデータを一度に処理することです。データは、1日の間に何百万ものレコードを含むことが簡単で、さまざまな方法(ファイル、レコードなど)で保存できます。ジョブは通常、止まることなく連続的に順番に完了します。
バッチデータ処理ジョブの一般的な例は、金融会社が1週間の間に提出するすべての取引です。バッチデータ処理は、一定の期間に集められた大量のデータを効率的に処理する非常に効率的な方法です。また、専門のデータ入力クラークを必要としないため、ビジネスが労働に費やす運用コストを削減するのにも役立ちます。オフラインで使用でき、処理を開始する時期について管理者に完全な制御を提供します。夜間や1週間の終わり、または支払期間の終わりに開始することができます。
バッチ処理を利用する際の課題
何事にも言えることですが、バッチ処理ソフトウェアの利用にはいくつかの欠点があります。企業が直面する最大の問題の一つは、これらのシステムのデバッグが難しいことです。専任のITチームや専門家がいない場合、エラーが発生した際にシステムを修正しようとすると、外部コンサルタントの支援が必要になる可能性があり、致命的な結果を招く可能性があります。
バッチ処理のもう一つの問題は、企業が通常、コストを削減するためにそれを導入しますが、ソフトウェアとトレーニングには初期にかなりの費用がかかることです。管理者は以下のことを理解するようにトレーニングを受ける必要があります:
- バッチをスケジュールする方法
- バッチをトリガーするもの
- 特定の通知が何を意味するか
(現代のバッチ処理についてもっと学ぶ。)
バッチデータ処理のユースケース
時間に敏感でないジョブの場合、バッチ処理は効率的な選択肢となることがあります。処理に何時間、場合によっては何日かかることが問題でない場合、リアルタイムまたはほぼリアルタイムのオプションは必要ありません。
- 日次報告:金融機関は通常、銀行元帳データを含む日次報告を実行します。これには開始残高、預金、引き出し、転送が含まれ、営業日の終わりの残高が最終結果となります。この報告はエラーをフラッグし、システムの整合性を保証することで正確性をサポートします。すべての活動は一日中行われますが、報告と分析の処理は銀行の営業が終了した後の単一の時間に行われます。
- データウェアハウジング:データウェアハウス内のデータは、通常、定期的で定期的な抽出、変換、ロード(ETL)バッチプロセスで管理されます。定期的な更新は、大量のデータを効率的に処理し、データウェアハウスが最新の情報で更新されることを保証します。
- 給与処理:企業の給与は通常、定期的に行われ、通常は隔週または毎月です。バッチ処理を使用することで、タイムキーピングデータの収集、給与、税金、その他の控除の計算、そして給与の発行を迅速化し、効率化します。
ストリーム処理は、デバイスから別のデバイスへストリーミングされるデータをほぼ瞬時に分析できるプロセスです。
この連続計算の方法では、データがシステムを通過する際に強制的な時間制限なしで処理されます。ほぼ瞬時の流れにより、大量のデータを保存する必要はありません。
ストリームデータ処理は、追跡したいイベントが頻繁に発生し、時間的に密接している場合に非常に有益です。イベントを直ちに検出し、迅速に反応する必要がある場合にも最適です。ストリーム処理は、詐欺検出やサイバーセキュリティのタスクに役立ちます。トランザクションデータがストリーム処理される場合、詐欺的なトランザクションは完了する前に特定され、停止される可能性があります。
データストリーミングプロセス
データストリーミングプロセスの仕組みを示す詳細は以下の通りです。
- イベント駆動型:何か関連することが起こると、そのイベントが関数をトリガーします。ウェブサイトのリンクをクリックするか、IoTデバイスの場合はスマート照明システムが日没を感知し、部屋の暗さを感知する場合です。
- データフロー:データが到着次第処理され、ワークフローが中断されることなくサポートされます。例としては、ライドシェアアプリ、株取引プラットフォーム、マルチプレイヤーゲームなどがあります。
- タイムスタンプ:このプロセスは、ログ、トランザクションフロー、タスクフローのような時間系列で発生するデータを扱う際に役立ちます。
- 継続的かつ多様:異なる形式の多様なデータを扱う際に役立ちます。データが連続的であること、つまり時間の範囲内で変化することを意味します。外部温度や風速はその例です。
データストリーミングの特徴
- 低遅延:ゼロではありませんが、処理時間は秒単位で、場合によってはミリ秒単位で測定できます。
- スケーラビリティ:プロセスは、扱うデータ量の予期しない急成長を支援します。
- フォールトトレランス:アプローチは、高い稼働時間を要求し、データ損失のリスクを最小限に抑えます、場合によってはゼロにします。
- 状態管理:セッショントラッキング、ウィンドウ処理、データを追跡、保存、処理する際に時間ウィンドウ内のイベントをカウントします。
- 分散処理:このアプローチは、複数のノードによってワークロードが処理されることを保証し、フォールトトレランスとスケーラビリティを提供します。
- 他のシステムとの統合:他のプラットフォーム、データベース、メッセージキュー、分析ツールとのデータを接続し、交換する機能です。
ストリーム処理の課題
組織がストリーム処理で直面する最大の課題の一つは、システムの長期的なデータ出力率が、長期的なデータ入力率と同じかそれ以上でなければならないことです。そうでなければ、システムはストレージやメモリに問題を抱え始めます。
別の課題は、生成され移動される膨大な量のデータに対処する最良の方法を見つけることです。データがシステムを通過する流れを最高の最適レベルで操作し続けるためには、組織はコピーの数を減らす方法、計算カーネルをターゲットにする方法、キャッシュ階層を最適に活用する方法を計画する必要があります。
ストリーム処理のユースケース
ストリーム処理は、いくつかのコア機能で役立ちます。
- 詐欺検出:トランザクションをリアルタイムで追跡および監視し、疑わしい活動やイベントにフラグを立てます。潜在的な詐欺を迅速に特定することで、取引を検証するか、詐欺者またはその広範なサイバー犯罪を特定する手順を踏むことができます。
- ネットワーク監視:ネットワークトラフィックの異常を検出することは、故障や不正行為の兆候を示すために重要です。常に監視することで、問題を迅速に検出し、対処できます。
- 予測メンテナンス:設備やシステムをリアルタイムで監視することで、故障を待つのではなく、早期に問題をキャッチできます。これにより、メンテナンスがより効率的になり、運用コストが削減されます。
- 侵入検出:サイバーセキュリティの監視では、リアルタイムでの不正アクセスを特定することが可能です。迅速に対応することで、被害を制限し、データが規制に準拠するのを助けます。また、犯罪者が使用する戦術、技術、手順をより深く理解することで、今後の保護策を改善できます。
結論
これらすべてのシステムには利点がありますが、最終的には組織はそれぞれの潜在的な利点を考慮して、どの方法がユースケースに最適かを決定する必要があります。
追加リソース
これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を表すものではありません。