Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript

+

Event Sourcing

CQRS

Neue Ideen für die Datenhaltung

Example 01

Database

Domain

Wofür steht CQRS?

Command and Query Responsibility Segregation

Commands: Verändern den Zustand eines Systems. Liefern keine Daten zurück

Queries: Liefern Daten. Beeinflussen den Zustand eines Systems nicht

NEventStore

Example 02

"NEventStore is a persistence library used to abstract different storage implementations when using event sourcing as storage mechanism"

Speicherung von Events

Sql/NoSql

Event-Stream

Example 05

Command- und Query-Stack

Snapshots

Event-Replay

Example 05

Command-Stack mit Service Bus

Example 03

Integration verteilter Dienste

Veränderte Event-Daten?

Veränderte Methoden?

Example 06

Eingabe-Logik komplizierter als Ausgabe

Command-Stack mit Service Bus

What-if-scenarios

NServiceBus-Framework

NServiceBus Saga

Example 07

Example 04

Reports

Noch schnellere Queries

CQRS + ES

CQRS - Zusammenfassung

Ursprünglich "erfunden" von Bertrand Meyer

Mythen

Vorteile

Eiffel Programmiersprache

CQRS == ES && ES == CQRS

passende Modelle für Schreib- und Lesezugriff

CQRS funktioniert nur mit Eventual consistency

Lesezugriff kann mit simplen Technologien erfolgen, z.B. .Net DataReader, Dto-Klassen (+ Automapper)

Definiert von Young und Dahan

Unterschiedliche Datenbanken für Lesen/Schreiben

Was CQRS nicht ist

Was CQRS ist

Asymmetrisches Skalieren

Architektur-Pattern

Aufteilung der Klassen im Hinblick auf Commands und Queries

Message queues

Nachteile / Risiken

Service bus

Event sourcing

"Used when it shouldn't"

Eventual consistency ???

Service bus ???

CQRS benötigt Messages Queues / Services Bus

Example 08

Event sourcing

Vorteile

"Tracking anything that happened"

Verhaltens-Analysen

Was-wäre-wenn-Szenarien

Augen auf!

Paradigmenwechsel

Welchen Vorteil bringt es uns?

Event-Replay

So while CQRS is a pattern I'm happy to have in my toolbox, I wouldn't keep it at the top.

Code

Message queues

Normalized

data

Sql

Denormalised data

NoSql

Code

Event store

Warum nicht Domain-Events persistieren?

Code

Last-known good state

Message queues

Datenbank besteht aus Events

ItemAdded event

Code

Snapshot

Validation handler

Code

Publish handler

Sql DataReader

Micro ORM

Performance

Code

Message queues

Last-known good state

ItemAdded event

ItemRemoved event

ItemAdded event

Probleme?

Code

ORM

Service bus

Code

Event-History neu erzeugen

Adapter-Event-Handler

Eventual consistency

AF13-DF..

True

1234.56

Marge

Weg vom "Last-known good state"

Persistence handler

Messaging

Lost messages

Transactions

Add accommodation command

Code

Learn more about creating dynamic, engaging presentations with Prezi