CQRS
Command Query Responsibility Segregation
コマンド(更新系)とクエリ(参照系)を分離するパターン
Greg Youngが提唱
『CQRS Documents by Greg Young』
#WIP
CQRSのCommand
副作用が主目的の処理
データの状態を変更する
書き込み
操作の成否以外の情報を返さない
CQRSのQuery
データの取得が主目的の処理
結果を返す
データの状態は変更しない
副作用がない
操作は冪等である
同じクエリを間違えて何度実行しても結果は変わらない
非正規化したデータモデル
?
CQSとの違い
https://qiita.com/hirodragon/items/6281df80661401f48731
https://codeday.me/jp/qa/20190212/248578.html
CQRSでの照会用データベースへの変更伝播に関して、「コマンドモ デル」(あるいはライトモデル) と 「クエリモデル」 (あるいはリード モデル)という言葉を使い、 更新処理側と照会処理側のモデルが異なる かのように表現している解説が散見されます。
本書の見方では、更新処 理側も照会処理側もデータモデルは同一であって、 それを実装するデー タベースの設計や、 更新や照会のためのプログラムの構造が異なるだけ です。
データモデルはユーザー視点のモデルですから、更新と照会でモ デルが異なるわけがありません。/mrsekut-book-4297140101/323
参考
https://zenn.dev/j5ik2o/articles/d9ab33e4da4408925bb6
https://querie.me/answer/WMKtKZLt6y1eTtKF0Fsy?timestamp=1701394976
https://zenn.dev/j5ik2o/articles/d9ab33e4da4408925bb6
https://blog.j5ik2o.me/entry/2020/09/18/172612
CQRSとイベントソーシングの使用法、または「CRUDに何か問題でも?」 | POSTD
疑問
「ユーザー情報」みたいなクラスがあってその一部、例えばメールアドレスのみを書き換えたいときに
CRUDだと「ユーザー情報」を変更する
CQRSだと「メールアドレスのみ」を変更する
という違いがあって、これが良い、みたいなことが書かれているように見えるが、そうなの?
CRUDでも特定のフィールドのみの更新はできそうだけど無理なの?
と、思ったがRESTのやり方がCRUDだというなら、そうなのか、
対してGraphQLなら単一で更新可能、的な?
http://uggds.hatenablog.com/entry/2017/11/22/090703
https://ky-yk-d.hatenablog.com/entry/2019/05/03/173230
https://ameblo.jp/principia-ca/entry-12033471463.html
http://doc.dev1x.org/item/142
参考ページも
https://digitalsoul.hatenadiary.org/entry/20100712/1278886009
https://msdn.microsoft.com/ja-jp/magazine/mt238399.aspx
https://hi-yamamoto.hatenablog.com/entry/2017/08/03/202209