CQRS
CQRS nima?
Section titled “CQRS nima?”CQRS (Command Query Responsibility Segregation) — bu dastur ichida ma’lumotlarni o’zgartirish (Command) va ma’lumotlarni o’qish (Query) operatsiyalarini bir-biridan butunlay ajratish prinsipidir.
Oddiy CRUD (Create, Read, Update, Delete) dasturlarda bitta model ham o’qish, ham yozish uchun ishlatiladi. CQRS da esa ular alohida.
Asosiy Tushunchalar
Section titled “Asosiy Tushunchalar”1. Commands (Buyruqlar)
Section titled “1. Commands (Buyruqlar)”Ma’lumotlarni o’zgartiruvchi amallar. Ular hech narsa qaytarmasligi kerak (yoki faqat status/id).
CreateUserCommandUpdateProductPriceCommand
2. Queries (So’rovlar)
Section titled “2. Queries (So’rovlar)”Ma’lumotlarni o’qiydigan amallar. Ular ma’lumotlarni hech qachon o’zgartirmasligi kerak (side-effect yo’q).
GetUserByIdQueryGetAllProductsQuery
Arxitektura
Section titled “Arxitektura”Ko’pincha CQRS da o’qish va yozish uchun ikki xil ma’lumotlar bazasi ishlatiladi:
- Write Database (Master): Yozish uchun optimallashtirilgan (normalized, 3NF).
- Read Database (Replica/Projections): O’qish uchun optimallashtirilgan (denormalized, NoSQL).
graph LR User -->|Command| CommandHandler CommandHandler --> WriteDB[(Write DB)] WriteDB -.->|Sync| ReadDB[(Read DB)] User -->|Query| QueryHandler QueryHandler --> ReadDB