ストリーム処理

データを受信しながらリアルタイムで処理する手法で、バッチ処理と対比される

データベースリアルタイム

ストリーム処理とは

ストリーム処理 (Stream Processing) は、データを受信しながらリアルタイムで処理する手法である。バッチ処理が「溜めてから処理」するのに対し、ストリーム処理は「流れてきたら即座に処理」する。

バッチ処理との比較

バッチ処理との主な違いを以下に比較する。

観点バッチ処理ストリーム処理
レイテンシ高い (分〜時間)低い (ミリ秒〜秒)
データ量大量を一括処理1 件ずつ or 小バッチ
処理タイミングスケジュール実行イベント駆動
用途日次集計、ETLリアルタイム分析、アラート
AWS サービスGlue, EMR, AthenaKinesis, 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 の同時実行数を制限して制御する。

詳しくは関連書籍を参照。

この記事は役に立ちましたか?

関連用語

関連する記事