Middle+
CQRS nədir (Əmr və Sorğu Məsuliyyətlərinin Ayrılması)?
sobes.tech Süni İntellekt
AI-dan cavab
CQRS (Command Query Responsibility Segregation) — bir dizayn nümunəsidir ki, bu, tətbiqdə oxuma (sorgular - queries) və yazma (əmrlər - commands) əməliyyatlarını ayırır.
Əsas prinsiplər:
- Əməliyyatların ayrılması: Əmrlər sistemin vəziyyətini dəyişir, lakin məlumatları geri qaytarmır (yaradılan resursun identifikatoru istisna olmaqla). Sorgular məlumatları geri qaytarır, lakin vəziyyəti dəyişmir.
- Fərqli məlumat modelləri: Tez-tez, əmrlər və sorgular üçün öz vəzifələrinə uyğun optimallaşdırılmış məlumat modelləri istifadə olunur. Məsələn, yazma üçün əlaqəli verilənlər bazası, oxuma üçün isə xüsusi görünüşlər üçün optimallaşdırılmış NoSQL bazası.
- Əmrlərin asinxron icrası: Əmrin icrası sonrası vəziyyət dəyişməsi asinxron baş verə bilər, xüsusən Event Sourcing ilə birləşdirildikdə.
Üstünlüklər:
- Miqyaslana bilənlik: Oxuma və yazma əməliyyatları müstəqil şəkildə miqyaslana bilər.
- Performans: Hər bir tərəfin (sorgu/əmr) öz vəzifələrinə uyğun optimallaşdırılması.
- Əlçatanlıq: Çətin domenlər üçün daha elastik memarlıq.
- Məsuliyyətlərin ayrılması: Oxuma və yazma loqikasının aydın ayrılması.
Çətinliklər:
- Mürəkkəblik: CQRS-nin tətbiqi memarlıq mürəkkəbliyini artırır.
- Uyğunluq: Oxuma və yazma modelləri arasında məlumatların uyğunluğu problemləri (eventual consistency) yarana bilər.
Frontenddə tətbiqi: CQRS adətən backenddə daha çox istifadə olunsa da, bu nümunəni bilmək, müştəri və server arasındakı qarşılıqlı əlaqənin memarlığını anlamağa kömək edir, xüsusən Event Sourcing istifadə edən və ya yüksək performans tələb edən oxuma/yazma əməliyyatları olan tətbiqlərdə. Frontend, API vasitəsilə CQRS ilə qarşılıqlı əlaqə qurur; bu API-lər, əmrlər (POST, PUT, DELETE) və sorgular (GET) üçün endpointləri açıq şəkildə ayırır.