Toolverse
All skills

cqrs-implementation

by wshobson

Implement Command Query Responsibility Segregation for scalable architectures. Use when separating read and write models, optimizing query performance, or building event-sourced systems.

Installation

Pick a client and clone the repository into its skills directory.

Installation

Quick info

Author
wshobson
Category
Backend
Views
42

About this skill

Implement Command Query Responsibility Segregation for scalable architectures. Use when separating read and write models, optimizing query performance, or building event-sourced systems.

How to use

  1. Zapoznaj się z architekturą CQRS: system dzieli się na dwie części — Commands (komendy zmieniające stan) i Queries (zapytania pobierające dane). Komendy trafiają do Command Handlers, które walidują i wykonują zmiany w Write Model. Zdarzenia (Events) przepływają do Read Model, który optymalizuje dane do odczytu.

  2. Zdefiniuj swoje komendy — każda komenda reprezentuje intencję zmiany stanu (np. CreateOrder, UpdateInventory). Command Handler dla każdej komendy powinien zawierać logikę walidacji i generować zdarzenia jako zapis zmian.

  3. Skonfiguruj osobne modele: Write Model przechowuje dane w formie zdatnej do transakcji, a Read Model jest zoptymalizowany dla szybkich zapytań. Zdarzenia z Write Model synchronizują Read Model w czasie rzeczywistym lub asynchronicznie.

  4. Implementuj Query Handlers dla operacji odczytu — każdy handler obsługuje jedno zapytanie i zwraca dane z Read Model bez wpływu na logikę zapisu.

  5. Rozważ event sourcing: zamiast przechowywać tylko bieżący stan, przechowuj całą historię zdarzeń. Pozwala to na odtworzenie stanu w dowolnym momencie i ułatwia debugowanie.

  6. Testuj niezależnie: ponieważ komendy i zapytania są oddzielone, możesz testować logikę zapisu bez wpływu na wydajność odczytu i vice versa.

Related skills