コマンドクエリ責務分離とは?
こまんどくえりせきむぶんり
コマンドクエリ責務分離(CQRS)とは、データの「書き込み(コマンド)」と「読み取り(クエリ)」の処理を明確に分離するソフトウェアアーキテクチャパターンです。
コマンドクエリ責務分離(Command Query Responsibility Segregation、CQRS)とは、システムの操作を状態を変更するコマンドとデータを取得するクエリの二種類に分け、それぞれ独立したモデルやデータストアで処理するアーキテクチャパターンです。
このパターンはバートランド・メイヤーが提唱したコマンドクエリ分離(CQS)原則を、アーキテクチャレベルに拡張したものです。従来の単一モデルでは、読み取りと書き込みが同じデータ構造を共有するため、複雑なビジネスロジックや大量読み取り要件への対応が難しくなりがちでした。
CQRSでは次のような利点が得られます。
- スケーラビリティ:読み取りと書き込みを独立してスケールアウトできる
- 最適化の容易さ:クエリ側を読み取り専用の非正規化データに最適化できる
- 複雑なドメインの表現:書き込み側にドメインモデルを集中させられる
CQRSはイベントソーシングと組み合わせて使われることが多く、マイクロサービスアーキテクチャとも親和性が高いです。ただし、データの整合性がリアルタイムではなく「結果整合性」になるケースもあるため、システムの要件に合わせた設計判断が必要です。
使い方・例文
「ECサイトでは在庫更新のコマンド処理と商品一覧表示のクエリ処理をCQRSで分離し、検索を高速化した。」
この用語をシェア
最終更新: