ストリーム処理
データを受信しながらリアルタイムで処理する手法で、バッチ処理と対比される
ストリーム処理とは
ストリーム処理 (Stream Processing) は、データを受信しながらリアルタイムで処理する手法である。バッチ処理が「溜めてから処理」するのに対し、ストリーム処理は「流れてきたら即座に処理」する。
バッチ処理との比較
バッチ処理との主な違いを以下に比較する。
| 観点 | バッチ処理 | ストリーム処理 |
|---|---|---|
| レイテンシ | 高い (分〜時間) | 低い (ミリ秒〜秒) |
| データ量 | 大量を一括処理 | 1 件ずつ or 小バッチ |
| 処理タイミング | スケジュール実行 | イベント駆動 |
| 用途 | 日次集計、ETL | リアルタイム分析、アラート |
| AWS サービス | Glue, EMR, Athena | Kinesis, Lambda, MSK |
AWS でのストリーム処理
AWS でのストリーム処理を図で示す。
[データソース] → [Kinesis Data Streams] → [Lambda] → [DynamoDB / S3]
→ [Kinesis Data Firehose] → [S3 / Redshift]
AWS では Kinesis Data Streams (リアルタイムデータストリーム)、Kinesis Data Firehose (S3/Redshift への配信)、DynamoDB Streams (テーブル変更のキャプチャ)、MSK (大規模ストリーム処理)、Lambda (ストリームのコンシューマー) を組み合わせる。
ウィンドウ処理
ストリームデータを時間やカウントで区切って集計する。
| ウィンドウ | 説明 | 例 |
|---|---|---|
| タンブリング | 固定長、重複なし | 5 分ごとの売上集計 |
| スライディング | 固定長、重複あり | 直近 5 分の移動平均 |
| セッション | アクティビティベース | ユーザーセッションの分析 |
ストリーム処理の課題
順序保証は Kinesis のパーティションキーで対応する。重複処理は冪等性を確保 (DynamoDB の条件付き書き込み) して防ぐ。遅延データはウォーターマークで許容する。バックプレッシャーは Lambda の同時実行数を制限して制御する。
詳しくは関連書籍を参照。
この記事は役に立ちましたか?
関連用語
Kinesis
AWS のリアルタイムデータストリーミングサービスで、大量のデータを収集・処理・分析する
Change Data Capture
データベースの変更をリアルタイムに検出し、下流システムに伝播させるデータ統合パターン
MapReduce
大規模データを Map (分割・変換) と Reduce (集約) の 2 段階で並列処理する分散処理モデル
OLAP vs OLTP
オンライン分析処理 (OLAP) とオンライントランザクション処理 (OLTP) の違いと使い分け
DynamoDB Streams
DynamoDB テーブルの変更をリアルタイムでキャプチャし、Lambda で処理するイベントソース
リアクティブプログラミング
データの変化を自動的に伝播させ、非同期データストリームを宣言的に処理するパラダイム
関連する記事
チーム開発・マネジメント本ガイド - 技術リーダーが読むべき本
チーム開発、1on1、技術マネジメントを学べる技術書の選び方を紹介。メンバー時代からマネージャーまで、段階別の読書ロードマップを解説します。
技術書の帯コピーの世界 - 煽り文句に隠されたマーケティング
「10 万部突破」「現場で使える」「これ 1 冊で完璧」。技術書の帯に書かれた煽り文句の法則と、帯が売上に与える影響を解説します。
技術書のタイトルに隠された法則 - 「入門」「実践」「詳解」の意味を読み解く
技術書のタイトルに使われる「入門」「実践」「詳解」などのキーワードには暗黙のルールがあります。タイトルだけで本のレベルと内容を見抜くコツを紹介します。