ストリーム処理
データを受信しながらリアルタイムで処理する手法で、バッチ処理と対比される
ストリーム処理とは
ストリーム処理 (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
データベースの変更をリアルタイムに検出し、下流システムに伝播させるデータ統合パターン
OLAP vs OLTP
オンライン分析処理 (OLAP) とオンライントランザクション処理 (OLTP) の違いと使い分け
MapReduce
大規模データを Map (分割・変換) と Reduce (集約) の 2 段階で並列処理する分散処理モデル
DynamoDB Streams
DynamoDB テーブルの変更をリアルタイムでキャプチャし、Lambda で処理するイベントソース
リアクティブプログラミング
データの変化を自動的に伝播させ、非同期データストリームを宣言的に処理するパラダイム
関連する記事
チーム開発・マネジメント本ガイド - 技術リーダーが読むべき本
チーム開発、1on1、技術マネジメントを学べる技術書の選び方を紹介。メンバー時代からマネージャーまで、段階別の読書ロードマップを解説します。
技術書の帯コピーの世界 - 煽り文句に隠されたマーケティング
「10 万部突破」「現場で使える」「これ 1 冊で完璧」。技術書の帯に書かれた煽り文句の法則と、帯が売上に与える影響を解説します。
技術書のタイトルに隠された法則 - 「入門」「実践」「詳解」の意味を読み解く
技術書のタイトルに使われる「入門」「実践」「詳解」などのキーワードには暗黙のルールがあります。タイトルだけで本のレベルと内容を見抜くコツを紹介します。