Ga naar hoofdinhoud

Modellering van gevolgen en projecties

Modellering van gevolgen en projecties

Een registratie heeft te maken met mutaties die doorgevoerd worden in de loop van de tijd (command handling) en dient allerhande bevragingen te kunnen beantwoorden over het heden en verleden. Om dit te effectief te kunnen doen leggen we de gevolgen van de taakuitvoering binnen een registratie vast. Deze gevolgen dienen als de basis voor afhandeling van elk command en elke query: event sourcing.

In de gevolgen ligt een mutatie, een verandering vast. Deze veranderingen muteren relationele entiteiten zodat na de verwerking van elk event één of meerdere nieuwe momenten ontstaan van één of meerdere entiteiten.

Het (volledige) conceptuele relationele model bestaat echter alleen in concept (zoals de naam al zegt). De gevolgen vormen hierin onze bron van waarheid (single source of truth), niet (zoals in meer traditionelere opzet) het relationele (database) model.

Om commando's te kunnen valideren maken we gebruik van projecties. Een projectie is een subset van het conceptuele relationele model opgebouwd uit de (relevante) gevolgen.

Hetzelfde principe geldt voor het beantwoorden van vragen (queries). We laden een subset van het conceptuele relationele model op basis van de relevante gevolgen om de query te kunnen beantwoorden.

In tegenstelling tot de commands, die altijd op de laatste state werken, kunnen queries ook bevragingen doen over het verleden. Naargelang de behoefte van de query is het mogelijk om per gevolg technische en formele snapshots vast te leggen, zodat vragen over het verleden beantwoord kunnen worden. Aangezien de resultaten van queries gebruikt worden door afnemers, is dit voor hen de bron van waarheid, (source of truth). Het is van belang er met zorg wordt opgegaan met deze bron van waarheid voor de afnemers. De ultieme bron van waarheid, de single source of truth, blijft echter de verzameling gevolgen, gebeurtenissen op basis van het conceptuele relationele model.

events-projecties-model