CQRS
Command Query Responsibility Segregation
コマンド(更新系)とクエリ(参照系)を分離するパターン
副作用が主目的の処理
データの状態を変更する
書き込み
操作の成否以外の情報を返さない
データの取得が主目的の処理
結果を返す
データの状態は変更しない
副作用がない
操作は冪等である
同じクエリを間違えて何度実行しても結果は変わらない
非正規化したデータモデル
?
CQRSでの照会用データベースへの変更伝播に関して、「コマンドモ デル」(あるいはライトモデル) と 「クエリモデル」 (あるいはリード モデル)という言葉を使い、 更新処理側と照会処理側のモデルが異なる かのように表現している解説が散見されます。
本書の見方では、更新処 理側も照会処理側もデータモデルは同一であって、 それを実装するデー タベースの設計や、 更新や照会のためのプログラムの構造が異なるだけ です。
参考
疑問
「ユーザー情報」みたいなクラスがあってその一部、例えばメールアドレスのみを書き換えたいときに
CRUDだと「ユーザー情報」を変更する
CQRSだと「メールアドレスのみ」を変更する
という違いがあって、これが良い、みたいなことが書かれているように見えるが、そうなの?
CRUDでも特定のフィールドのみの更新はできそうだけど無理なの?
と、思ったがRESTのやり方がCRUDだというなら、そうなのか、
対してGraphQLなら単一で更新可能、的な?
参考ページも