集約ルートは通常、すべてのイベントを再生して自身を正しい状態にすることを理解しています。これは非効率になる可能性があるため、集約ルートのスナップショットを作成する memento パターンが提案されました。私の理解では、ドメイン モデルは持続性とは何の関係もありません。また、スナップショットは読み取りモデルとは何の関係もないと思います。誰かがとても親切で、スナップショットが通常どこに永続化されているかを指摘してもらえますか? ありがとう。
1 に答える
イベントの保存に使用する実装に応じて、これを行う方法はたくさんあります。
ほとんどの抽象化されたイベント ストア ライブラリ (MySQL、MongoDB、Redis などの不可知論的永続ストレージを使用するもの) は、通常、独自にそれを行います。
独自のメカニズムを実装する場合は、スナップショット戦略とともにスナップショット サービスを提供できます。
たとえば、すべてのイベントまたはnリビジョンごとにスナップショットを作成することができます。
もう 1 つの解決策は、サブスクライブしてスナップショットを非同期に作成できるいくつかのチューブでイベントを発行する EventStore 実装を用意することです。
スケジュールされたタスクを実行して、スナップショットを随時作成することもできます。
組み込みのイベント ストアである EventStore 永続ストレージを使用する場合、おそらくスナップショットを作成する必要はなく、プロジェクションを使用して Event Stream の計算された状態を構築する可能性が高くなります。
一般的な推奨事項として、スナップショットには欠点があります。これを使用することで、一連のイベントではなく、状態の永続性を再利用しています。実際にそれが必要であり、パフォーマンスを最適化するためのより良い解決策がないことを確認してください.
通常、イベントは小さなメッセージ オブジェクトであり、読み込みが高速です。