1. 従来のCRUD(Create/Read/Update/Delete)の限界
CRUDではDBのレコードをUPDATEで書き換えるため、「過去に誰が、いつ、どのような理由で残高を変更したのか」という履歴情報が失われます。監査ログを別テーブルに保存する手法は不整合の原因になります。
2. イベントソーシングの真髄
状態を変更するのではなく、「OrderPlaced」「ItemAdded」「PaymentReceived」といった確定した過去の事実(ドメインイベント)のみを不変の追記専用ストア(Event Store)に記録します。
3. CQRSによる読み書きの完全分離
- Command側(書き込み): ドメインルール検証とイベント追記のみに特化。極めて高速。
- Query側(読み取り): イベントを非同期で購読し、画面表示に最適化されたリードモデル(ElasticsearchやMongoDB)へプロジェクション。複雑なJOIN不要でミリ秒表示。