Что такое CQRS и как его можно реализовать?

CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, который разделяет операции чтения (Query) и записи (Command) данных на разные модели.

Короткий ответ

Что ответить на собеседовании

CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, который разделяет операции чтения (Query) и записи (Command) данных на разные модели. Идея в том, что команды изменяют состояние системы, а запросы только читают данные, что позволяет оптимизировать каждую часть отдельно.

Подробный разбор

Ответ с пояснениями

CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, который разделяет операции чтения (Query) и записи (Command) данных на разные модели. Идея в том, что команды изменяют состояние системы, а запросы только читают данные, что позволяет оптимизировать каждую часть отдельно.

Реализация CQRS обычно включает:

  • Отдельные интерфейсы и модели для команд и запросов.
  • Команды обрабатываются через обработчики, которые изменяют состояние (например, обновляют базу).
  • Запросы обрабатываются через отдельные обработчики, которые возвращают данные, возможно из оптимизированных для чтения хранилищ.

Пример на Go (упрощённый):

// Command
func UpdateUserName(userID string, newName string) error {
    // обновить имя пользователя в базе
    return nil
}

// Query
func GetUserName(userID string) (string, error) {
    // получить имя пользователя из базы
    return "Alice", nil
}

В более сложных системах CQRS может сопровождаться Event Sourcing, где изменения состояния записываются как события.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее