Разводит модели записи и чтения только в местах реального конфликта
Зачем
Зачем это нужно
Оставляет одну базу и обычную транзакцию, если этого достаточно
Показывает, когда материализованное представление окупает задержку обновления
Вопросы
Частые вопросы
CQRS требует отдельные базы?
Нет. Минимальный вариант — разные обработчики и модели внутри одного приложения и одной базы. Физическое разделение добавляют, когда чтение требует собственного масштаба или структуры. Модель начнёт с дешёвого уровня и перечислит метрики, которые оправдают следующий шаг, вместо преждевременной инфраструктуры.
Как пользователь увидит только что сделанное изменение?
При одной базе — сразу после фиксации. При асинхронной проекции возникает задержка, которую интерфейс должен учитывать: показать принятое состояние, временно объединить ответ команды с чтением или ждать подтверждения. Модель выберет поведение по допустимой свежести, а не будет скрывать eventual consistency.
Когда CQRS только мешает?
Когда запись и чтение просты, команда маленькая, а отдельные модели приходится синхронно менять при каждом поле. Тогда обычный сервис и запросы понятнее. Модель проверит, есть ли настоящий конфликт требований, и может честно рекомендовать не вводить паттерн ради терминологии.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.