1. ホーム
  2. cqrs

[解決済み] CQRSとCQSの違いについて

2023-02-13 10:39:17

質問

を学んでいます。 CQRS パターンがあることを知り、さらに CQS というパターンがあることを知りました。

検索してみると、たくさんの図や情報が見つかりました。 CQRS に関する情報はたくさんありましたが CQS .

のキーポイントは CQRS パターン

CQRSでは、書くためのモデル(コマンドモデル)と読むためのモデル(クエリモデル)があり、これらは完全に分離されています。

CQSとCQRSはどのように違うのですか?

どのように解決するのですか?

CQS (Command Query Separation) と CQRS (Command Query Responsibility Segregation) は非常によく関連しています。 CQS はクラスまたはコンポーネント レベルであり、CQRS はより限定されたコンテキスト レベルであると考えることができます。

私は、CQSはミクロレベル、CQRSはマクロレベルであると考えることが多いですね。

CQSは、モデルからの問い合わせやモデルへの書き込みのための別々の方法を規定します:問い合わせは状態を変更しませんが、コマンドは状態を変更しますが、戻り値はありません。これはBertrand Meyerによって、Eiffelプログラミング言語の先駆的な仕事の一部として考案されたものです。

CQRSは似たようなアプローチを規定しますが、それはシステムを通る経路であることを除きます。 クエリー リクエストは、コマンドとは別のパスを取ります。 クエリーは基礎となるシステムを変更せずにデータを返し、コマンドはシステムを変更しますがデータは返しません。

Greg Young は かなり詳細な記述 CQRSがCQSの進化系であることについても触れています。 この文書は数年前に私に CQRS を紹介しましたが、今でも非常に有用な参考文書だと思います。