Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Command-Query-Responsibility-Segregation – Wikipedia
Command-Query-Responsibility-Segregation – Wikipedia
aus Wikipedia, der freien Enzyklopädie
Funktionsprinzip von CQRS mit Event Sourcing

Die Command Query Responsibility Segregation (CQRS, [kə'mæ:nd 'kwɪ(ə)ri: ri,spɑnsə'bɪləti ,sɛgrɪ'geiʃ(ə)n] bzw. [si: kju: ɑ:r ɛs],[1] englisch für etwa „Kommando-Abfrage-Zuständigkeitstrennung“) ist ein Entwurfsmuster für Datenbank-Abfragen, welches durch Greg Young definiert wurde.[2]

Das CQRS-Pattern propagiert eine Aufteilung des Objektmodells in zwei Objektmodelle hinsichtlich der Zugriffe auf die Datenbank:[3]

  • ein Objektmodell für lesende Zugriffe
  • ein Objektmodell für schreibende Zugriffe

Im Gegensatz zu einer CRUD-Sicht für die Zugriffe auf eine Datenbank – wo also ein gemeinsames Objekt für Queries genauso wie für Lesen, Schreiben und Löschen verantwortlich ist – gibt es bei CQRS zwei Objekte: Befehle zum Schreiben (Ändern und Löschen), sowie Abfragen zum Lesen. CQRS wird oft im Zusammenhang mit Event Sourcing, Serviceorientierten Architekturen, etwa im Cloud Computing erwähnt, diese Architekturen können aber genauso gut auch mit CRUD kombiniert werden.

Vorteile gegenüber CRUD

[Bearbeiten | Quelltext bearbeiten]
  • Unterschiedliche Skalierbarkeit, schreibende Zugriffe können auf anderen Rechnern laufen als lesende und jeweils unterschiedlich skalieren.
  • 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 Geschäfts-Anforderungen
  • Entwicklung der einzelnen Bestandteile durch unterschiedliche Teams

Nachteile gegenüber CRUD

[Bearbeiten | Quelltext bearbeiten]
  • Hoher Aufwand in der Softwareentwicklung. Eignet sich eher für Projekte mit vielen gleichzeitigen Benutzern.
  • Benötigt passende Infrastruktur.
  • Transaktionen sind schwer umzusetzen.
  • Querys 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.

Frameworks

[Bearbeiten | Quelltext bearbeiten]

Die folgenden Frameworks unterstützen bei der Umsetzung dieses Patterns:

.NET
EventFlow[4]
Java
OpenCQRS[5]
JavaScript
wolkenkit[6]
PHP
prooph[7]
Python
eventsourcing[8]

Literatur

[Bearbeiten | Quelltext bearbeiten]
  • Chris Richardson: Microservices Patterns. Manning, Shelter Island NY 2019, ISBN 978-1-61729-454-9, S. 228–252 (amerikanisches Englisch). 

Weblinks

[Bearbeiten | Quelltext bearbeiten]
  • 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)
  • Rethink How You Build Software. the native web GmbH, Juni 2025, abgerufen am 9. Juni 2025 (englisch, CQRS, Event-Sourcing, DDD & Co. im Zusammenspiel erklärt). 

Quellen

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ Martin Fowler: CQRS. 14. Juli 2011, abgerufen am 18. Mai 2014 (englisch). 
  2. ↑ Greg Young: CQRS Documents by Greg Young. (PDF) In: WordPress. November 2010, abgerufen am 13. Juli 2014 (englisch). 
  3. ↑ Archivierte Kopie (Memento des Originals vom 28. August 2020 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/codebetter.com
  4. ↑ EventFlow. In: GitHub. Abgerufen am 16. Juli 2025 (englisch, CQRS- und EventSourcing-Framework für .NET Core). 
  5. ↑ OpenCQRS. Abgerufen am 11. August 2025 (englisch, CQRS- und Event-Sourcing-Framework für die JVM). 
  6. ↑ wolkenkit. Abgerufen am 27. Juni 2017 (englisch, CQRS-, DDD- und Event-Sourcing-Framework für JavaScript). 
  7. ↑ prooph. Abgerufen am 16. Juli 2025 (englisch, CQRS and EventSourcing Infrastructure for PHP). 
  8. ↑ eventsourcing. Abgerufen am 16. Juli 2025 (englisch, Python-Bibliothek zur Implementierung von Event-Sourcing, inklusive CQRS, mit Erweiterungsprojekten z.B. für Django, SQLAlchemy, Axon Server, KurrentDB oder gRPC). 
Entwurfsmuster
V – D
Erzeugungsmuster

Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool

Strukturmuster

Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter

Verhaltensmuster

Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel

Muster für objekt-
relationale Abbildung

Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation

Nachrichten-
übermittlungsmuster
Integrationsarten

File Transfer | Shared Database | Remote Procedure Invocation | Messaging

Nachrichtenaufbau

Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator

Endpunkte

Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator

Kanäle

Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus

Nachrichtenvermittlung

Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker

Nachrichtenumwandlung

Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model

Systemmanagement

Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger

andere

Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object

Siehe auch:  Analysemuster | Architekturmuster | Integrationsmuster | SOA-Muster
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Command-Query-Responsibility-Segregation&oldid=258761171“
Kategorien:
  • Objektorientierte Programmierung
  • Entwurfsmuster
Versteckte Kategorie:
  • Wikipedia:Defekte Weblinks/Ungeprüfte Archivlinks 2023-12

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id