😶

CQRSでデータソース分割は必須なのか?

2023/03/28に公開

CQRSとは

CQRS(Command and Query Responsibility Segregation

CQRSでは、データソースの操作をコマンド(登録・更新・削除)とクエリ(参照)の2つに分割されます。
クエリとコマンドとして、役割を分離することでシンプルなアプリケーションを構築することを目的としている。

CQRSで最初に躓くところ

CQRSを調べると、結構いろんな定義に出会います。

モデルを分けるであったり、DBは分けなくてもいい、異なるDBを使う、イベントソーシングしましょう....

...分からない!
結局なにをすればいいんだ!ってなりがちです

データソース分割は必須なのか?

必須ではない

同じデータソースを使用するパターンもあるし、データソースを分割するパターンもある。
こちらの38~40枚目などを参考にしてみてください。

データソースを分割する場合

下記の様に、様々な選択肢があります。

  • マテリアルビューを使う
  • 参照系はRDBのリードレプリカを参照する
  • 検索はelasticsearchなどを使う
  • 異なるDBを用いる

参照

https://postd.cc/using-cqrs-with-event-sourcing/
https://zenn.dev/tatta/books/4e993c596e7dc9/viewer/f26ee4

https://zenn.dev/ogakuzuko/scraps/b0bb89299e642e

https://postd.cc/using-cqrs-with-event-sourcing/

https://pages.awscloud.com/rs/112-TZM-766/images/DevAx_connect_jp_season1_day4_CQRS%26EventSourcing.pdf

Discussion