😶
CQRSでデータソース分割は必須なのか?
CQRSとは
CQRS(Command and Query Responsibility Segregation
CQRSでは、データソースの操作をコマンド(登録・更新・削除)とクエリ(参照)の2つに分割されます。
クエリとコマンドとして、役割を分離することでシンプルなアプリケーションを構築することを目的としている。
CQRSで最初に躓くところ
CQRSを調べると、結構いろんな定義に出会います。
モデルを分けるであったり、DBは分けなくてもいい、異なるDBを使う、イベントソーシングしましょう....
...分からない!
結局なにをすればいいんだ!ってなりがちです
データソース分割は必須なのか?
必須ではない
同じデータソースを使用するパターンもあるし、データソースを分割するパターンもある。
こちらの38~40枚目などを参考にしてみてください。
データソースを分割する場合
下記の様に、様々な選択肢があります。
- マテリアルビューを使う
- 参照系はRDBのリードレプリカを参照する
- 検索はelasticsearchなどを使う
- 異なるDBを用いる
参照
Discussion