Ich lese über Event-Sourcing und habe eine Frage zur Persistenz.
Ich kann immer noch eine Datenbank mit allen Entitäten haben, oder? Oder sollten die Ereignisse jedes Mal wiedergegeben werden, wenn die Anwendung gestartet wird, um die neueste Version jeder Entität im Speicher abzurufen? Scheint eine Verschwendung auf größeren Systemen zu sein (wie bei großen Datenmengen)?
Der Punkt bei der Ereignisbeschaffung ist, dass ich die Ereignisse wiedergeben kann, um bei Bedarf einen Datenspeicher zu füllen. (oder analysieren Sie die Daten)
quelle
Sie profitieren am meisten von der Ereignisbeschaffung, wenn Sie sich entscheiden, auch Ihre Systemarchitektur zu ändern. Wenn Sie sich für eine Architektur im CQRS-Stil in Kombination mit DDD entscheiden, werden Sie zumindest meiner Meinung nach die wahren Vorteile eines Event-Sourcing nutzen.
Das Erstellen eines Ereignisspeichers, der sich in großen Systemen gut verhält, ist in der Tat keine leichte Aufgabe. Die Wiedergabe aller Daten kann in der Tat teuer sein und hängt stark von der Datenmenge ab, die wiedergegeben werden muss. Es gibt jedoch Techniken, die Ihnen dabei helfen können. Eine davon ist das Konzept eines Schnappschusses. Die Wiedergabe erfolgt nur ab einem bestimmten Punkt. Die Vorteile, die ein Event Store in Ihr System bringt, sind von unschätzbarem Wert. Wenn alles, was in Ihrem System passiert ist, wiedergegeben werden kann, sind alle Daten in jedem Moment eine großartige Sache. Denken Sie an Analysen, an die Fehlerreproduktion und an Statistiken.
Es gibt viele großartige Event-Stores, der letzte wurde erst gestern im Event Store veröffentlicht und scheint ein wirklich guter zu sein.
Die herkömmliche Datenbank kann für den Abfrageteil Ihres Systems aufbewahrt werden, um DTOs mit den angeforderten Daten aufzubauen. Diese Datenbank kann unter Berücksichtigung der Abfrageanforderungen Ihrer Anwendung und Ihrer Clients organisiert und optimiert werden.
Ich habe einen ausführlichen Artikel darüber geschrieben, was die Vorteile sind und wie eine CQRS-Architektur in Kombination mit Event-Sourcing wirklich aussieht. Sie können CQRS, Domain Events und DDD Review überprüfen .
quelle
Die Antwort hängt von den Anforderungen Ihrer Anwendung ab. Ich habe es in beide Richtungen gesehen.
Ein äußerst erfolgreiches Softwarepaket für kleine Wirtschaftsprüfungsunternehmen liest jedes Mal beim Start das CQRS-Protokoll. Die Rohdatenmenge war relativ gering, sodass die Startzeit auch auf langsameren Computern unter einer Minute lag. Sie machen CQRS seit mehr als einem Jahrzehnt, bevor die Praxis populär wurde. Sie wussten, dass sie etwas Gutes vorhatten, als sie erkannten, dass sie ihre Kundendaten immer wieder aktualisieren können, ohne auf Probleme zu stoßen, die sie mit ihren größeren Systemen sehen.
In Systemen mit größeren Datenmengen und / oder Systemen, die für die Implementierung der Abfrageseite auf RDBMS-Funktionen angewiesen sind, verfügen Sie über eine Datenbank für die "aktuelle Ansicht" der ereignisbasierten Daten (Sie können sogar mehrere solcher Ansichten haben). Der Vorteil dieses Ansatzes besteht darin, dass Sie die Abfrageseite mit den bekannten Technologien erstellen können.
quelle