BT

思考方法としてのCQRS

| 作者: Jan Stenberg フォローする 33 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2014年12月14日. 推定読書時間: 2 分 |

原文(投稿日:2014/11/20)へのリンク

Command-Query Responsibility Segregation (CQRS) の一般的背景は,同一のデータセット上で作業する複数ユーザに対する共同ドメインである - Udi Dahan氏は,CQRSについて論じたインタビューの中で,このように説明した。サービス指向アーキテクチャの権威であり,NServiceBusの開発者である氏にとってCQRSは,パターンというよりも,思考のアプローチないしスタイルなのだ。パターンと呼んでしまうと,往々にしてソリューション部分のみに関連付けられる。CQRSを論じる上で最も重要な部分であるにも関わらず,コンテキスト部分が忘れられることが,あまりにも多いのだ。

アプリケーションの多くは,ユーザがデータの一部で作業し,同じデータを使うユーザは他に存在しないという,比較的シンプルなビジネスドメインを保持する。この場合ユーザは,自分が書き込んだものを直接読むことが可能だ。CQRS,そして結果整合性(eventual consistency)を用いる場合,そのようなドメインでは,エンドユーザが見たいと望むものを再生するのは難しい作業になる。CQRSを採用する場合のコンテキストがいかに重要か,それが適切でなければどうなるのか,ということを示す一例だ。対照的に,複数ユーザがデータを操作するコラボレーティブなドメインでは,他のユーザが同じデータを操作したかどうかを知る方法がないため,データを読み出した時に期待できる内容は,単一ユーザのドメインの場合とは違うものになる。

一般的にコラボレーティブなドメインでは,レコード数が多くなる傾向がある。個々のレコードは比較的小さいものの,多数の操作履歴やインタラクションのため,結果的にデータのボリュームは巨大なものになる。在庫のドメインはその古典的な例だ。積み荷が入荷し,購入品が出荷され,ストック容量や購入可能数,オーダの提供時間と言った問い合わせが実行される。さらに大容量な例としては,株式購入がある。このドメインは,大容量を扱うように基本から設計されていると同時に,複数のパーティとともに動作するようにモデル化されてる。

氏はCQRSシステムについて,特別な意図を持たずに開発されていることに注意を促している。CQRSはアプリケーション全体に適用可能なものではない。アプリケーションの一部がCRUDを行うシングルユーザ向きで,他がCQRSに適しているような場合もあり得るのだ。

現在の氏は,データモデリングを非常に重視している。また,開発者が自らのインメモリオブジェクトモデルのみに注意を集中しようとする時に,舞台裏にある実際のデータモデルのすべてを処理する訳ではないORMは,有害な存在であると考えている。コラボレーティブなドメインでは,データモデルを始めとする別の作業方法を取らざるを得ない,と氏は述べている。DDD派を自認する一方で,場合によってはドメインモデルを止めて,データモデルに注力することも必要だという考えなのだ。これによって,ドメインモデルが本当に必要なのか疑問に思えるほど,データモデルがシンプルになることも非常に多いと,氏は自身の経験から述べている。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT