Sobes.tech
Middle+

Mi az a CQRS (Parancs és Lekérdezés Felelősség Megosztása)?

sobes.tech MI

Válasz az MI-től

CQRS (Command Query Responsibility Segregation) — egy tervezési minta, amely elválasztja az olvasási (kérdések - queries) és írási (parancsok - commands) műveleteket egy alkalmazásban.

Alapelvek:

  1. Műveletek szétválasztása: A parancsok megváltoztatják a rendszer állapotát, de nem adnak vissza adatokat (kivéve, talán, a létrehozott erőforrás azonosítóját). A kérdések adatokat adnak vissza, de nem változtatják az állapotot.
  2. Különböző adatmodellek: Gyakran, a parancsok és kérdések számára optimalizált adatmodelleket használnak, amelyek saját feladataikra vannak szabva. Például, írásra relációs adatbázist, olvasásra pedig NoSQL adatbázist, amely optimalizált bizonyos nézetekhez.
  3. Parancsok aszinkron végrehajtása: A rendszer állapotának változása a parancs végrehajtása után aszinkron módon történhet, különösen az Event Sourcing alkalmazásával.

Előnyök:

  • Skálázhatóság: Az olvasási és írási műveletek függetlenül skálázhatók.
  • Teljesítmény: Minden oldal (kérdés/parancs) saját feladatára optimalizálható.
  • Rugalmasság: Bonyolult területeken rugalmasabb architektúra.
  • Felelősségek szétválasztása: Az olvasási és írási logika világosan elkülönül.

Hátrányok:

  • Bonyolultság: A CQRS bevezetése növeli az architektúra összetettségét.
  • Konzisztencia: Problémák adódhatnak az olvasási és írási modellek közötti adatkonzisztenciában (végső konzisztencia).

Alkalmazás a Frontendben: Bár a CQRS inkább a backendben alkalmazott, ismerete hasznos az ügyfél és a szerver közötti architektúra megértéséhez, különösen olyan alkalmazásokban, amelyek Event Sourcing-ot használnak vagy magas olvasási/írási teljesítményt igényelnek. A frontend a CQRS-sel API-kon keresztül kommunikál, amelyek egyértelműen elválasztják a végpontokat a parancsok (POST, PUT, DELETE) és kérdések (GET) számára.