【すとりーむしょり】

ストリーム処理 とは?

💡 流れるデータを「リアルタイム」に処理し続ける
📌 このページのポイント
ストリーム処理 vs バッチ処理 ストリーム処理 リアルタイム連続処理 データが届くたびに即座に処理 低レイテンシ(ミリ秒〜秒) 終わりのないデータを処理 例: 不正検知、株価監視 Kafka / Flink / Kinesis vs バッチ処理 まとめて定期処理 AM PM 夜間 翌朝 一定期間のデータをまとめて処理 高レイテンシ(分〜時間) 有限のデータセットを処理 例: 月次集計、ETL Spark / Hadoop / Airflow
ストリーム処理 と バッチ処理 の比較イメージ
ひよこ ひよこ

バッチ処理と何が違うの?

ペンギン先生 ペンギン先生

バッチは「データを溜めてからまとめて処理」、ストリームは「データが来るたびにすぐ処理」。ECサイトの例だと、バッチは「昨日の全注文を夜間に集計」、ストリームは「注文が入るたびにリアルタイムでダッシュボードを更新」。遅延がミリ秒〜秒単位なのがストリーム処理だよ

ひよこ ひよこ

ウィンドウ処理って何?

ペンギン先生 ペンギン先生

流れるデータを一定の区間で区切って集計する概念。①タンブリングウィンドウ(5分ごとに区切る、重複なし)、②スライディングウィンドウ(過去5分を1分ごとにずらして集計)、③セッションウィンドウ(ユーザーの操作が途切れるまでを1セッションとして集計)。リアルタイムの「直近5分間のアクセス数」はスライディングウィンドウだよ

ひよこ ひよこ

どんなツールがある?

ペンギン先生 ペンギン先生

Apache Flink(最も高機能、大規模ストリーム処理のデファクト)、②Kafka Streams(Kafkaに統合、軽量でJavaライブラリとして使える)、③Apache Spark Structured Streaming(バッチとストリームの統一API)、④AWS Kinesis(マネージド)、⑤Materialize(SQLでストリーム処理)。要件に応じて選択しよう

ひよこ ひよこ

導入の注意点は?

ペンギン先生 ペンギン先生

①Exactly-once(正確に1回の処理保証)の実現が難しい。②遅延データの扱い(ネットワーク遅延で順番が入れ替わるデータ)。③状態管理(集計中の中間値をどこに保持するか)。④障害復旧(チェックポイントからの再開)。バッチより運用が複雑だから、本当にリアルタイム性が必要か見極めてから導入しようね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ストリーム処理」って出てきたら「流れるデータをリアルタイムに処理する方式」と思えればだいたいOK!
📖 おまけ:英語の意味
「Stream Processing」 = ストリーム(流れ)処理
💬 Stream(流れ)のようにデータが途切れなく流れてくるのをリアルタイムに処理するよ
← 用語集にもどる