ストリーミングシステム
概要
ストリーミングシステムは、終わりのない 無限のデータ(ストリーム) を、到着しながらリアルタイムに処理するシステムです。書籍『ストリーミング・システム』(Tyler Akidau ほか、“Streaming Systems”)は、バッチとストリーミングを統一的に捉える理論的枠組み(Beam モデルの源流)を提示しています。
バッチ処理との違い
| 観点 | バッチ | ストリーミング |
|---|---|---|
| データ | 有限・境界あり | 無限・境界なし |
| 処理 | まとめて一括 | 到着しながら逐次 |
| レイテンシ | 高い | 低い(リアルタイム) |
中心となる概念
- イベント時刻 vs 処理時刻(Event Time / Processing Time)
- イベントが実際に発生した時刻と、システムが処理した時刻のずれを扱うことが本質
- ウィンドウ(Windowing)
- 固定(Tumbling)・スライディング(Sliding)・セッション(Session)ウィンドウ
- ウォーターマーク(Watermark)
- 「この時刻までのデータは出揃った」と判断する基準。遅延データの扱いを決める
- トリガー(Triggers) — いつ結果を出力するか
- 正確性の保証 — at-least-once / exactly-once
関連トピックとの接続
- イベント駆動アーキテクチャ → ソフトウェアアーキテクチャ、ドメイン駆動設計 のドメインイベント
- ストリームをDBとして扱う → ストリーミングデータベース
- 設計原則 → クラウドアプリケーション設計原則(スケールアウト・調整の最小化)
関連ページ
参考資料
- ストリーミング・システム(Tyler Akidau ほか)