CQRSとは?
しーきゅーあーるえす
CQRSとは、システムのデータ「読み取り」と「書き込み」の責務をモデルレベルで明確に分離するソフトウェアアーキテクチャパターンです。
CQRS(Command Query Responsibility Segregation:コマンドクエリ責務分離)とは、アプリケーション内でデータの更新系(Command)と参照系(Query)を独立したモデルとして設計するアーキテクチャパターンです。Greg Youngによって2010年ごろに体系化されました。
従来のCRUDベースの設計では、読み取りと書き込みが同一のデータモデルを共有します。これはシンプルですが、複雑なビジネスロジックや高トラフィックのシステムでは、読み取りと書き込みの最適化要件が相反することがあります。CQRSはこの問題を、モデルを分けることで解消します。
CQRSの主な特徴は以下の通りです。
- Commandサイド: 状態を変更する操作(作成・更新・削除)を担当し、整合性を保証する
- Queryサイド: データを読み取るだけで状態を変えず、参照に最適化されたモデルを使う
- それぞれのデータストアを分離して独立したスケーリングが可能
- イベントソーシングと組み合わせて使われることが多い
CQRSを適用することで読み取り専用のビューを自由に最適化できる一方、システム全体の複雑性は増加します。そのため、ドメインが複雑で読み書きの負荷特性が大きく異なるシステムや、DDD(ドメイン駆動設計)を採用した大規模プロジェクトに適しています。小規模なアプリケーションへの適用はオーバーエンジニアリングになりやすいため注意が必要です。
使い方・例文
EC サイトで注文の作成・キャンセル処理をCommandとして厳密に管理しながら、商品一覧の表示は参照専用の非正規化テーブルから高速に取得する構成が、CQRSの典型的な活用例です。
この用語をシェア
最終更新: