Sobes.tech
Назад к вопросам
Senior
3

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

Компании, где спрашивали
Lanit PPM

Ответ от нейросети

sobes.tech AI

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, где изменения состояния записываются как события.