Я обнаружил, что DDD является естественным, если я работаю над операционным/транзакционным типом приложения. Тем не менее, я всегда умею эффективно обрабатывать типы отчетов.
Отчеты, о которых я говорю, не обязаны сообщать о генерации, а также функции, которые выполняют сравнительно сложные запросы. (например, давая краткое изложение всех заказов, которые сделал трейдер, или отображать сводку учетной записи для торговых счетов, имеющих определенный запас и т.д.). Они могут быть просто некоторой функцией запроса или поддержки, которая используется вместе с этими операционными функциями.
Для таких функций вполне естественно, что мы можем выполнять объединение в SQL (или любой язык запросов), получать интересующие столбцы и возвращать массированный набор результатов. Однако, похоже, такой способ не так хорошо работает с DDD: нам нужен дополнительный специальный репозиторий или наличие существующего большинства связанных репозиториев, возвращающих специальный объект "объект/значение" (который является специализированным набором результатов). Такие специальные "сущности" не имеют никакого значения на самом деле.
Если мы хотим использовать значимый уровень домена, это может создать много дополнительных поисковых запросов из разных репозиториев, а также много работы по агрегированию на уровне домена или услуги, что может привести к ухудшению производительности.
Я также подумал о том, что для такого типа функций есть еще один "путь", который не проходит через "путь DDD", имея свой собственный способ получить данные отчета из БД, составлять результаты для отображения. Однако это сделает приложение излишне сложным, и что еще хуже, мы предоставили дополнительный путь, чтобы разработчики, которые больше привыкли к традиционной разработке, ориентированной на БД, могут использовать этот путь, даже если это не подходит.
Я думал, что такая ситуация довольно распространена (обычно большая система не содержит оперативных, а также функций отчетности и запросов), я хотел бы знать, как люди с этим справляются?