2

将来のアプリケーション設計の準備として、CQRSスタイルのアプリケーション、特にNcqrsに関する調査を開始しました。

ほとんどの概念は非常に明確ですが、スナップショットの概念には少し混乱しています。

イベントからオブジェクトを再構築するとリソースを大量に消費する理由はわかりますが、非正規化機能はエンティティの最新の状態(または実際にはビューに必要な最新の値)を使用して読み取りモデルを構築するため、概念に煩わされるのはなぜですかスナップショットからオブジェクトを再構築しますか?

そのようなシナリオは、主にバージョンのアップグレードまたはデバッグの後に、散発的かつオンデマンドでのみ発生すると考えるのは正しいですか?

そうでない場合、スナップショットを撮るのに良い状況は何でしょうか?

4

2 に答える 2

2

私はイベント ソーシングの熱烈なユーザーではないことを認めなければなりません (または、少なくとも、私はそれを最大限に活用していません) が、スナップショットは、集約を再構築するときのシステムのパフォーマンスに役立ちます。すべてのイベントを時刻 0 から再構築する代わりに、最後のスナップショットまで再構築するだけで済みます。そのため、システムに多数のイベントがあり、イベント ソーシングで集計を再構築するとコマンド側のパフォーマンスに影響が出始めている場合は、スナップショットの使用を検討してください。

彼が昨年かそこらで教えた Greg Young DDD/CQRS クラスのノートをチェックしてください。スナップショットに関して彼がどこから来たのかについてのアイデアが得られるかもしれません.

お役に立てれば。幸運を!

于 2011-07-31T12:59:17.883 に答える
0

スナップショットは、集約ルートに多数のイベント(おそらく1000以上?)がある場合に役立ちます。ただし、考慮すべき点は、ほとんどのシナリオでは、アグリゲートの寿命が短いため、イベントの数が少ないということです。この場合、スナップショットは早期の最適化と見なすことができます。これは必ずしも良いことではありません。

于 2011-08-01T21:35:28.417 に答える