❓ Что такое CQRS? Почему его часто используют вместе с Event Sourcing?
CQRS (Command Query Responsibility Segregation) — разделение модели на две:
🔹 Command side (запись) — принимает команды (CreateOrder, CancelOrder), изменяет состояние, не возвращает данные (или только ID).
🔹 Query side (чтение) — принимает запросы, возвращает данные, никогда не изменяет состояние.
Зачем разделять: модели чтения и записи имеют разные требования. Write-модель — богатый домен с инвариантами и валидацией. Read-модель — денормализованные данные, оптимизированные под конкретный экран/API.
Связь с Event Sourcing: когда command side сохраняет событие, это событие обновляет read-модели (проекции). Проекции — денормализованные таблицы или документы, заточенные под конкретные запросы.
OrderCreated → обновить проекцию "список заказов"
OrderCreated → обновить проекцию "аналитика по дням"
Без Event Sourcing CQRS тоже применяется: просто два разных репозитория — один для записи (доменные объекты), другой для чтения (DTO, raw SQL).
Post #1222
977
- 👍 3
- ❤ 2