CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, при котором запросы (queries) и команды (commands) обрабатываются раздельно, часто — даже разными моделями данных.
CQRS предлагает разделить ответственность:
Commands (команды) — изменяют состояние системы (например, «создать заказ», «удалить пользователя»).
Queries (запросы) — только читают данные, не изменяя их (например, «получить список заказов»).
Этот паттерн основан на принципе, что чтение и запись имеют разные требования, поэтому можно оптимизировать каждую часть отдельно.
Допустим, у вас интернет-магазин:
Команда:
POST /orders
{
"userId": 123,
"items": [1, 2, 3]
}
создаёт заказ.
Запрос:
GET /orders?userId=123
возвращает список заказов пользователя.