5

CQRSスタイルのパターン(イベントソーシングなし)を使用しています。読み取りと書き込みを2つの別々のアプリケーション境界に分離するだけです。

現在、アプリケーションは1つのSQL2008データベースに対して機能します。ボリュームが大きくなり始めているので、ワークロードを分散するために複数の読み取りデータベースを追加したいと思います。

単一のデータベースを更新し、変更をリアルタイムで他のノードに複製/伝播できるSQL2008のソリューションが必要です。アプリケーションは単一の「マスター」データベースにのみ書き込むため、これは一方向の伝播である必要があります。

ピアツーピアのトランザクションレプリケーションについて読みました。それを使用したことがある人は、子ノードの更新にどのくらいの待ち時間がありますか?

他の解決策はありますか?

4

1 に答える 1

3

ドメイン/コマンド側でイベントソーシングを使用していない場合は、それで問題ありません。しかし、それは必ずしも、読み取り側のすべてのイベントをある種の「イベント」テーブルに格納することを妨げるものではありません。これを行うことで、ビューモデルテーブルを破棄し、読み取りモデルデータベース内の「イベント」テーブルに格納されているすべてのイベントから再構築できます。

この理由は、読み取り側をスケーリングするためです。既存の読み取りDBにプレッシャーがかかり、負荷を維持できなくなると、マスターの「読み取りデータベース」から複製しようとするのではなく、「イベント」テーブルから自身を取り込む他のハードウェア上に別のデータベースインスタンスを作成するだけです。次に、この追加の読み取りデータベースに、ドメインによって生成されたイベントをサブスクライブさせます。(何が起こっているのかを理解したら、実際に最初にサブスクライブしてから、公開されているイベントを見逃さないようにテーブルにデータを入力する必要があります)

これにより、兄弟であるが相互に通信しない2つの読み取りデータベースを持つことができます。ドメインからのイベントをリッスンし、読み取りモデルテーブルを更新し、受信したイベントをある種のローカル「イベント」テーブルに追加するだけです。

于 2011-03-20T05:12:15.330 に答える