Sobes.tech
Middle+

Čo je CQRS (Oddelenie zodpovednosti za príkazy a dopyty)?

sobes.tech AI

Odpoveď od AI

CQRS (Command Query Responsibility Segregation) — vzor návrhu, ktorý oddeľuje operácie čítania (queries) a zápisu (commands) dát v aplikácii.

Základné princípy:

  1. Oddelenie operácií: Commands menia stav systému, ale nevracajú dáta (okrem, možno, identifikátora vytvoreného zdroja). Queries vracajú dáta, ale nemenia stav.
  2. Rôzne dátové modely: Často sa používajú optimalizované dátové modely pre ich špecifické úlohy, napríklad relačná databáza na zápis a NoSQL databáza na čítanie, optimalizovaná pre špecifické pohľady.
  3. Asynchrónne vykonávanie commandov: Zmena stavu po vykonaní commandu môže prebiehať asynchrónne, najmä v kombinácii s Event Sourcing.

Výhody:

  • Škálovateľnosť: Operácie čítania a zápisu je možné škálovať nezávisle.
  • Výkon: Optimalizácia každej strany (query/command) pre jej špecifické úlohy.
  • Flexibilita: Flexibilnejšia architektúra pre zložité domény.
  • Oddelenie zodpovedností: Jasné oddelenie logiky čítania a zápisu.

Nevýhody:

  • Zložitosť: Vnútorné CQRS pridáva architektonickú zložitosť.
  • Konzistencia: Môžu nastať problémy s konzistenciou dát medzi modelmi čítania a zápisu (eventual consistency).

Použitie v Frontende: Hoci CQRS sa častejšie používa na backendovej strane, znalosť tohto vzoru je užitočná na pochopenie architektúry interakcie klienta so serverom, najmä v aplikáciách využívajúcich Event Sourcing alebo vyžadujúcich vysoký výkon čítania/zápisu dát. Frontend komunikuje s CQRS cez API, ktoré jasne oddeľujú endpointy pre commands (POST, PUT, DELETE) a queries (GET).