イベントソースシステムでは、イベントは不変です - 起こったことの単純な事実。出来事の歴史を書き直すことは、単にしないことです[1]。
これらのイベントに基づいて結果を導き出す計算ロジックを変更することは、絶対にやるべきことです(これは、ソーシングが可能な場合でも重要なことの1つです)。
実際にコードを変更するのか、別のアルゴリズムを追加するのかは問題ありません。オリジナルが事実上バグだった場合は、コードを変更してください。そうでない場合は、新しいものを書いてください。
場合によっては(一般的にはアドバイスされません)、元のイベントのすべてを常に処理します。そうであれば、派生ロジックを変更するだけで済みますし、完了しました。
- ブロー離れ:あなたはがイベントを投影し、永続ストアにdenormalised、そして状況がバグを表し、通常のアプローチがあることに決めたきた場合には
denormalised状態を既存の
- リプレイイベントが意図した別の導出を得
ます場合にのみ場に出たことに注意してください今や置き換えられたベースで計算された値を保持する一時的でない非正規化状態ストアを有する。 (非正規化状態をメモリ内の隠し場所に投影することは完全に有効です;そのような場合は、「吹き飛ばし」が簡単です)。
別のシナリオは、スナップショットの最適化を実装した場合です。その場合、別のシナリオでは、非正規化を別の方法で再投影します。
[1]はいそこにそれが正当化できるエキゾチックな例はあるが、それはnonconstructive質問は、私はDDD/CQRSとESに新たなんだit'is場合は0.001パーセントの場合に
申し訳ありません、と私のためにこれは実際の使用例です。 –