Definicja
CQRS (Command Query Responsibility Segregation) to wzorzec architektoniczny, w którym model zapisu (Commands) jest oddzielony od modelu odczytu (Queries). Każdy model może być niezależnie optymalizowany.
CQRS w praktyce
| Strona | Odpowiedzialność | Optymalizacja |
|---|---|---|
| Command (zapis) | Tworzenie, edycja, usuwanie | Walidacja, reguły biznesowe, transakcje |
| Query (odczyt) | Wyświetlanie, wyszukiwanie, raporty | Denormalizacja, cache, indeksy |
Kiedy stosować CQRS?
| Stosuj | Nie stosuj |
|---|---|
| Read/write ratio > 10:1 | Prosty CRUD |
| Złożone reguły biznesowe zapisu | Mała aplikacja |
| Potrzeba różnych widoków tych samych danych | Zespół < 3 osób |
| Wymaga event sourcing | Natychmiastowa spójność krytyczna |
CQRS + Event Sourcing
Często łączone: 1. Command → walidacja → emit Event 2. Event Store persystuje zdarzenie 3. Projekcja przetwarza event → aktualizuje Read Model 4. Query czyta z zoptymalizowanego Read Model
Dlaczego to ważne?
BA powinien rozumieć, że w systemie CQRS dane mogą nie być natychmiast spójne (eventual consistency). To wpływa na wymagania i oczekiwania użytkowników.