Event Sourcing - ghdrako/doc_snipets GitHub Wiki

Event Sourcing

Zamiast przechowywać wyłącznie bieżący stan danych w domenie, można użyć magazynu tylko do dołączania w celu rejestrowania pełnych szeregów działań wykonywanych na tych danych. Magazyn działa jak system rejestrowania i może służyć do zmaterializowania obiektów domeny. Pozwala to na uproszczenie zadań w złożonych domenach przez uniknięcie konieczności synchronizowania modelu danych i domeny biznesowej, jednocześnie poprawiając wydajność, skalowalność i elastyczność. Ponadto może zapewnić spójność danych transakcyjnych przy zachowaniu pełnego dziennika inspekcji i historii umożliwiającej akcje kompensacyjne.

Z istoty architektury Event Sourcingu wynika fakt, że aby odtworzyć obecny stan obiektu, musimy po kolei wywołać wszystkie zdarzenia, które go dotyczą. Nie stanowi to problemu dla obiektów, które mają krótki czas życia lub które są jeszcze młode, a więc zdarzeń do przetworzenia nie ma zbyt wielu.

Treść pochodzi ze strony: www.empressia.pl. Nasze treści monitorujemy na bieżąco, dlatego nie kopiuj ich bez naszej zgody, ponieważ to prawnie zabronione.

W zdecydowanej większości przypadków, przy odpytywaniu aplikacji interesuje nas jedynie bieżący stan obiektu. Z pomocą przychodzą projekcje. Dzięki nim możemy stworzyć Read Model opisujący najnowszy stan obiektu. Przykładowo możemy stworzyć ciągły proces, który czeka na wpłynięcie nowego wydarzenia - kiedy to nastąpi, aktualizuje rekord w bazie danych zawierające informacje o bieżącym stanie obiektu. Wtedy, zamiast odtwarzać wszystkie zdarzenia, wystarczy odwołać się do bazy danych.

Treść pochodzi ze strony: www.empressia.pl. Nasze treści monitorujemy na bieżąco, dlatego nie kopiuj ich bez naszej zgody, ponieważ to prawnie zabronione.

https://www.eventstore.com/eventstoredb

The fundamental idea of Event Sourcing is that of ensuring every change to the state of an application is captured in an event object, and that these event objects are themselves stored in the sequence they were applied for the same lifetime as the application state itself.