Sobes.tech
Middle+

CQRS (Ҷудо кардани масъулияти фармон ва пурсиш) чист?

sobes.tech AI

Ҷавоб аз AI

CQRS (Command Query Responsibility Segregation) — дизайн-шаблон, ки, ки амалҳои хондан (queries) ва навиштани (commands) маълумотҳоро дар бар мегирад.

Принсипҳои асосӣ:

  1. Ҷудо кардани амалҳо: Commands ҳолати системаро тағир медиҳанд, аммо маълумотро бармегардонанд (ғайр аз, шояд, идентификатори манбаи эҷодшуда). Queries маълумотро бармегардонанд, аммо ҳолатро тағир намедиҳанд.
  2. Моделҳои маълумоти гуногун: Одатан, барои commands ва queries моделҳои оптимизатсияшудаи маълумот истифода мешаванд, ки барои вазифаҳои худ мувофиқанд. Масалан, барои навиштани маълумот базаи додаҳои релясионӣ, барои хондан — базаи NoSQL, ки барои намуди махсуси намоишҳо оптимизатсия шудааст.
  3. Иҷрои асинхронӣ: Тағйироти ҳолат пас аз иҷрои command метавонад асинхрон бошад, махсусан дар ҳамоҳангӣ бо Event Sourcing.

Фоидаҳо:

  • Масштабшавандагӣ: Операсияҳои хондан ва навиштани маълумот метавонанд мустақилона масштаб шаванд.
  • Камарзишӣ: Оптимизатсия барои ҳар як ҷониб (query/command) барои вазифаҳои махсус.
  • Флексибиллик: Мақоми бештар флексибл барои соҳаҳои мураккаб.
  • Ҷудо кардани масъулиятҳо: Тартиби равшан дар логикаи хондан ва навиштан.

Норасогиҳо:

  • Мураккабият: Внедошти CQRS мураккабияти меъмориро меорад.
  • Муносибат: Мушкилоти эҳтимолӣ бо мутобиқатии маълумот байни моделҳои хондан ва навиштан (eventual consistency).

Барнома дар Frontend: Ҳарчанд CQRS бештар дар пасзамина истифода мешавад, донистани ин модел барои фаҳмидани меъмории муоширати байни мизоҷ ва сервер кӯмак мекунад, махсусан дар барномаҳо, ки Event Sourcing-ро истифода мебаранд ё талаботи баланд барои хондан/навиштани маълумот доранд. Frontend бо CQRS тавассути API кор мекунад, ки ба равшанӣ endpoint-ҳоро барои commands (POST, PUT, DELETE) ва queries (GET) ҷудо мекунад.