質問

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

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

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

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

他のソリューションはありますか?

役に立ちましたか?

解決

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top