リレーショナルデータからイベントへの移行
(event-driven.io)リレーショナルデータからイベントへの移行ガイド
- イベントソーシングの世界では、ビジネスデータを失わずにイベントとして保存する。
- イベントは発生した事実を表し、各操作の後に保存される。
- イベントストリームは記録されたすべてのイベントの一覧であり、不変で、過去のミスは新しいイベントを追加することで修正できる。
1. 状態カラムを見つける
- 状態カラムの値は、データのライフサイクル段階を反映している可能性がある。
- たとえば、注文は開始され、発送され、支払い済みになることがある。
- これらの状態は、Order Initiated、Order Shipped、Order Paid のようなイベントに変換できる。
2. 日付カラムを確認する
- 日付カラムは、プロセスにおける重要な出来事に関する情報を提供してくれることがある。
- ShipmentDate、DeliveryDate、OrderPlacementDate などは、ビジネス用語を示し、新しいイベントを導入する助けになる可能性がある。
3. カラムの選択性を分析する
- Nullable なカラムは、後から提供されるか、任意項目である可能性がある。
- 必須カラムは、最初の Order Initiated イベントで提供されるべきである。
4. 1対多の関係が最も多いテーブルを探す
- イベントソーシングでは、ビジネスプロセスを中心にデータをグループ化し、効率的な処理を目指す。
- 1対多の関係が多いテーブルは、ストリームタイプの候補になり得る。
5. 明示的なイベントを導入する
- リレーショナルデータをイベントへ移行する際、新たに見つけたイベントをインポート中に再利用するのではなく、Order Imported イベントを明示的に用意するべきである。
6. 実験と検証
- 安全な環境でプロトタイプを試し、結果を予想と比較し、焦らずに反復するべきである。
GN⁺の見解
- この記事で最も重要なのは、リレーショナルデータベースからイベントソーシングへ移行する過程において、ビジネスデータを保持する新しいアプローチの重要性である。
- この記事が興味深い理由は、従来のデータ管理のやり方から一歩進み、データのライフサイクルをより深く理解し活用できる方法を提示している点にある。
- イベントソーシングは、技術的な観点だけでなく、ビジネスチームと技術チームの間で共通理解を築くのにも役立つ可能性がある。
1件のコメント
Hacker Newsの意見
PostgreSQL と FOSS レポーティングツールの利用を推奨
イベント駆動アーキテクチャを適切に使うタイミング
イベントソーシングに懐疑的だった経験の共有
ドメインイベントモデリングの有用性
イベントソーシングの実装に関する疑問
ボトムアップ対トップダウン、カスタム対汎用
イベントベースアーキテクチャへの支持と批判
イベントソーシングと関係性の必要性
リレーショナルデータへの支持
イベント駆動設計に対する新たな認識