In Event-Sourcing-, speichern Sie alle Einzel Domain Event, die für eine Aggregate Instanz geschehen, bekannt als Event-Stream-. Zusammen mit Event Stream speichern Sie auch eine Stream Version.Stream-Version in dem Ereignisse Sourcing-
Sollte die Version mit jedem Domain Ereignis, oder sollte es mit Transaktionsänderungen (auch bekannt als Befehle) in Beziehung gesetzt werden zusammenhängen?
Beispiel:
Unser aktueller Stand des Event-Store ist:
aggregate_id | version | event
-------------|---------|------
1 | 1 | E1
1 | 2 | E2
Ein neuer Befehl in Aggregate 1 ausgeführt wird Dieser Befehl erzeugt zwei neue Ereignisse E3 und E4.
Ansatz 1:
aggregate_id | version | event
-------------|---------|------
1 | 1 | E1
1 | 2 | E2
1 | 3 | E3
1 | 4 | E4
Mit diesem Ansatz Parallelität kann 3 durch Speichermechanismus mit eindeutigen Index, aber die Wiedergabe der Ereignisse bis zur Version getan werden, um das Aggregat/System in einem inkonsistenten Zustand.
Ansatz 2:
aggregate_id | version | event
-------------|---------|-----
1 | 1 | E1
1 | 2 | E2
1 | 3 | E3
1 | 3 | E4
Wiederholen der Ereignisse bis zur Version 3 verlassen das Aggregat/System in einem konsistenten Zustand.
Danke!
Ich forsche immer noch Pro/Contra von zwei Ansätze. Außerdem wird geprüft, welcher Ansatz in IDDD- und anderen DDD-Büchern verwendet wird. – martinezdelariva