CQRS
Command Query Responsibility Segregation
CRUDは、型を以下のように整理できる
code:fs
type InsertData = DataStoreState -> Data -> NewDataStoreState
type ReadData = DataStoreState -> Query -> Data
type UpdateData = DataStoreState -> Data -> NewDataStoreState
type DeleteData = DataStoreState -> Key -> NewDataStoreState
これを見れば一目瞭然で、Readのみが他と異なる操作であると抽象できる
CQRSでの照会用データベースへの変更伝播に関して、「コマンドモ デル」(あるいはライトモデル) と 「クエリモデル」 (あるいはリード モデル)という言葉を使い、 更新処理側と照会処理側のモデルが異なる かのように表現している解説が散見されます。
本書の見方では、更新処 理側も照会処理側もデータモデルは同一であって、 それを実装するデー タベースの設計や、 更新や照会のためのプログラムの構造が異なるだけ です。