CQRS шаблон вопросов - PullRequest
       8

CQRS шаблон вопросов

0 голосов
/ 23 сентября 2018

Я изучаю шаблон CQRS, так как мы собираемся использовать его в нашем новом проекте.И у меня пока мало вопросов:

Пример задачи: у меня будет команда cron для получения информации от разных провайдеров (разных API), и ответственность за эту команду cron составляет:

  1. извлекать данные из всех предоставленных;
  2. совершать дополнительные вызовы API для получения изображений и видео;
  3. обрабатывать эти видео и изображения (сохранять в aws s3) и загружать таблицу в БД;
  4. извлечение существующих данных из БД;
  5. преобразование новых данных API в системные объекты, обновление существующих и удаление несуществующих;
  6. постоянная БД.;

Вопросы, связанные с CQRS:

  1. Могу ли я иметь несколько команд и запросов CQRS внутри одного системного запроса?В приведенном выше примере мне нужно получить существующие данные из БД (запрос), сохранить данные (команду) и т. Д.
  2. Как насчет логики выборки данных из API, могу ли я рассматривать это как запрос CQRS, так какПроцесс получения данных или запроса CQRS - это единственный процесс получения данных из внутреннего хранилища, а не из внешнего API?
  3. Как насчет процесса сохранения видео в s3 и хранения информации в таблице загрузок, могу ли я рассмотреть этот процесссохранения ресурсов на S3 как команда CQRS, и эта команда вернет данные, которые мне нужно сохранить позже, для загрузки?Я не хочу хранить его немедленно, так как объект загрузки является частью агрегата для хранения основной информации, где объект основной информации является основным объектом агрегирования.Я знаю, что команда не должна возвращать ничего или идентификатор сущности, но здесь она вернет все данные об активах магазинов

Если все приведенные выше вопросы верны, поэтому я могу сделать:

  1. запрос для получения данных API
  2. запрос для получения существующих данных
  3. команда для обработки изображений / видео
  4. команда для вставки / обновления / удаления данных

Не судите меня очень строго, я нахожусь в процессе изучения концепций DDD и связанных с ними шаблонов.И я просто задаю вопросы, что мне не понятно.Большое спасибо

1 Ответ

0 голосов
/ 25 сентября 2018

Могу ли я иметь несколько команд и запросов CQRS внутри одного системного запроса?В приведенном выше примере мне нужно получить существующие данные из БД (запрос), сохранить данные (команда) и т. Д.

Нет, вы не можете.Каждый запрос является либо одной командой, либо одним запросом.

Как насчет логики выборки данных из API, можно ли рассматривать его как запрос CQRS, поскольку процесс получения данных или запрос CQRS - это единственный процессполучать данные из внутреннего хранилища, а не из внешнего API?

Команды и запросы относятся к локальной базе данных.Извлечение данных из внешних сервисов через удаленный API - это интеграция с другим BC (см. Шаблоны отображения контекста DDD).

Как насчет процесса сохранения видео в s3 и хранения информации в таблице загрузок, могу ли я рассмотретьпроцесс сохранения ресурсов на S3 в виде команды CQRS, и эта команда вернет данные, которые необходимо сохранить для загрузки позже?

Хранение видео на s3 - это не команда, это интеграция с внешней службой,Вы должны будете интегрировать (снова шаблон сопоставления контекста).

Я не хочу сохранять его немедленно, так как объект загрузки является частью агрегата для хранения основной информации, где объект основной информации является основным объектом агрегирования.

Я не знаю модель вашего домена, но если выгрузка является дочерней сущностью в агрегате, то сохранение вещей в вашей таблице выгрузок не является командой.Команда относится к совокупности.Хранение информации в таблице загрузок будет частью команды.

КАК ВЫВОД:

Команда или запрос - это транзакционная операция на границе прикладного уровня (служба приложения).Они имеют дело с данными из вашей БД.Каждая команда / запрос является транзакцией.

...