Command-Query-Responsibility-Segregation
Trennung der Zuständigkeit von Objekten bei Datenbankabfragen
Die Command-Query-Responsibility-Segregation (CQRS, [ ] bzw. [ ],[1] englisch für etwa Kommando-Abfrage-Zuständigkeits-Trennung) ist eine Variante des CQS-Prinzips auf Datenbank-Abfragen, welches durch Greg Young definiert wurde.[2]

Vorteile
- Hohe Skalierbarkeit
- Eignet sich zum Einsatz in Serviceorientierten Architekturen, etwa im Cloud Computing
- Schreib- und Lesezugriffe sind unabhängig voneinander skalierbar
- Verbesserte Sicherheit durch getrennte Rollen der Schreib- und Leseoperationen
- Simultaner Einsatz verschiedener Versionen derselben Software möglich
- Beibehaltung von Rückwärtskompatibilität möglich
- Migration auf neue Version im Live-Betrieb ohne Downtime möglich
- Anpassbarkeit an veränderte Business-Anforderungen
- Entwicklung der einzelnen Bestandteile durch unterschiedliche Teams
- Kann mit Event Sourcing kombiniert werden
Nachteile
- Hoher Aufwand in der Softwareentwicklung. Eignet sich eher für Projekte mit vielen gleichzeitigen Benutzern.
- Benötigt passende Infrastruktur.
- Transaktionen sind schwer umzusetzen.
- Queries können durchgeführt werden, bevor Commands durchgeführt wurden. Es werden daher Versionierung und ein In-Memory-Cache benötigt um sicherzustellen, dass der Client Daten in der richtigen Version erhält.
Trivia
Die Abkürzung CQRS wird von Softwareentwicklern aufgrund der Google-Autokorrektur scherzhaft als cars [ ] ausgesprochen.
Frameworks
- .NET
- Tyrone Groves: SimpleCQRS. In: GitHub. Abgerufen am 21. Juli 2014 (englisch).
- The Ncqrs Framework. In: GitHub. Abgerufen am 13. Juli 2014 (englisch, CQRS-Framework für das .NET Framework).
- JVM
- Axon Framework. Abgerufen am 13. Juli 2014 (englisch, CQRS-Framework für die Java-Laufzeitumgebung).
- JavaScript
- wolkenkit. Abgerufen am 27. Juni 2017 (englisch, CQRS-, DDD- und Event-Sourcing-Framework für JavaScript).
Weblinks
- CQRS Journey. In: patterns & practices, MSDN. Microsoft, Juli 2012, abgerufen am 13. Juli 2014 (englisch, Tutorial zu CQRS und Event Sourcing in C#).
- Kanasz Robert: Introduction to CQRS. In: CodeProject. 21. März 2013, abgerufen am 13. Juli 2014 (englisch, Einführung in CQRS in C#).
- Greg Young: CQRS/DDD by Greg Young. In: YouTube. Rinat Abdullin, 20. Januar 2012, abgerufen am 13. Juli 2014 (englisch, Einführung in CQRS und DDD).
- Lev Gorodinski: Domain-Driven Design, Event Sourcing and CQRS with F# and EventStore. In: YouTube. DC F# Meetup, 6. März 2014, abgerufen am 13. Juli 2014 (englisch, CQRS und EventSourcing in F#).
- Golo Roden, Matthias Wagler, Susanna Roden: wolkenkit - The semantic JavaScript backend for event-driven development. Abgerufen am 9. Juli 2017 (PDF, englisch, Einführung in CQRS, DDD und Event-Sourcing)
Quellen
- ↑ Martin Fowler: CQRS. 14. Juli 2011, abgerufen am 18. Mai 2014 (englisch).
- ↑ Greg Young: CQRS Documents by Greg Young. (PDF) In: WordPress. November 2010, abgerufen am 13. Juli 2014 (englisch).