Vis enkel innførsel

dc.contributor.advisorHjelsvold, Rune
dc.contributor.authorAkre, Marcus Blikra
dc.date.accessioned2021-09-15T16:32:03Z
dc.date.available2021-09-15T16:32:03Z
dc.date.issued2020
dc.identifierno.ntnu:inspera:67241016:33588696
dc.identifier.urihttps://hdl.handle.net/11250/2777948
dc.description.abstractI CQRS+ES (CQRS med event sourcing) systemer benyttes separate datamodeller for lesing fra- og skriving til applikasjonen. Begge modellene baseres på et felles sett av hendelser. Dette betyr at alle endringer i applikasjonen lagres som en ny hendelse. Ved å lese tilbake alle hendelser fra når applikasjonen ble lansert kan vi rekonstruere tilstanden i applikasjonen. Denne tilstandsbyggingen blir tyngre å håndtere over tid ettersom flere og flere hendelser loggføres. Ofte brukes et øyeblikksbilde for å håndtere denne utfordringen. Ved å se på bygging av tilstand sammen med forskjellige lagringsmekanismer og reduksjon av hendelseslogger kan få en bedre oversikt over kommandosiden i CQRS+ES arkitekturer. Målet er å tilby et mer diversifisert sett med verktøy når slike systemer bygges. Vi utviklet et CQRS+ES system med støtte for både hendelser og kommandoer som utgangspunkt for å bygge tilstand. I tillegg implementerte vi algoritmer for reduksjon av hendelseslogger og støtte for forskjellige lagringsmekanismer. Ved å utføre simuleringer på dette systemet kunne vi teste og måle ytelsen på forskjellige CQRS+ES konfigurasjoner. Dette ga oss innsikt i forventet ytelse og prinsipper for bygging av slike systemer. På bakgrunn av dette ble vi i stand til å tilby alternativer for oppbygging av tilstand basert på to prinsipper: Kommandoer som datakilde og hendelsesbasert tilstandsbygging ved hjelp av reduserte hendelseslogger.
dc.description.abstractIn CQRS+ES (CQRS with event sourcing) systems, we have separate data models for reading from and writing to the application. Both these models are based on the same set of events as a single source of truth. This means that every change to the application is stored as a new event. E.g., changing a person's home address or adding an order line to an order would be distinct events. By reading back all events from when the application was initially launched, we can reconstruct the current state of the application. This state hydration process becomes harder to manage over time, as more and more events are added to the event log. A common way to handle this problem is to use snapshots. By looking at state hydration in tandem with event transformation (log pruning), and persistence mechanisms, it is possible to take a holistic view of the command side of CQRS+ES architectures. The goal is to provide developers with a more diverse toolset when designing CQRS+ES systems. We developed a CQRS+ES system with support for both event sourcing and command sourcing. In addition, we implemented multiple log reduction (pruning) and persistence mechanisms. By running simulations on this system, we were able to test and measure the performance of various CQRS+ES configurations. By doing this we gained insight into the design principles and performance of CQRS+ES systems. We were also able to provide alternatives for hydrating current state through command sourcing and pruning algorithms.
dc.language
dc.publisherNTNU
dc.titleEvent log pruning in CQRS systems
dc.typeMaster thesis


Tilhørende fil(er)

Thumbnail
Thumbnail

Denne innførselen finnes i følgende samling(er)

Vis enkel innførsel