CQRS
CQRS は読み取りと書き込みの操作を別々のモデルに分離する。読み取り側はクエリを、書き込み側はバリデーションを最適化し、多くはイベントソーシングと組み合わせる。
目的
読み取りと書き込みを分離し、それぞれ側のパフォーマンスとスケーラビリティを最適化する。
メカニズム
コマンド(書き込み)とクエリ(読み取り)は異なるモデル/データストアを使う。書き込みモデルはビジネスルールを強制し、読み取りモデルはクエリを最適化する(マテリアライズドビュー/検索インデックス)。読み取りストアは異種でよく(Elasticsearch/Redis)。結果整合的である。
ユースケース
- 読み書きの分離
- パフォーマンス最適化
- イベントソーシング