CQRS
Command Query Responsibility Segregation
Command (cqrs)(更新系)とQuery (cqrs)(参照系)を分離するパターン
Greg Youngが提唱
『CQRS Documents by Greg Young』
CRUDは、型を以下のように整理できる
code:fs
type InsertData = DataStoreState -> Data -> NewDataStoreState
type ReadData = DataStoreState -> Query -> Data
type UpdateData = DataStoreState -> Data -> NewDataStoreState
type DeleteData = DataStoreState -> Key -> NewDataStoreState
これを見れば一目瞭然で、Readのみが他と異なる操作であると抽象できる
C,U,Dに対応するのがCommand (cqrs)で、
Rに対応するのがQuery (cqrs)
/mrsekut-book-4048931164/258: 12.2 コマンドとクエリの分離
#WIP
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://blog.j5ik2o.me/entry/2020/09/18/172612
https://digitalsoul.hatenadiary.org/entry/20100712/1278886009