В DDD агрегат — это кластер связанных объектов (сущностей и значимых объектов), которые рассматриваются как единое целое для целей изменения данных. Агрегат имеет корневой объект — агрегатный корень, через который осуществляется доступ и управление всеми внутренними объектами агрегата.
Есть система, предназначенная для групп быстрого реагирования. Система посылает сигнал, группа принимает вызов и выдвигается. Пришёл сигнал, и сразу три группы на него откликнулись одновременно, а нам нужно послать только одну группу. Как это сделать на уровне транзакции в базе данных?
В DDD агрегат — это кластер связанных объектов (сущностей и значимых объектов), которые рассматриваются как единое целое для целей изменения данных.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В DDD агрегат — это кластер связанных объектов (сущностей и значимых объектов), которые рассматриваются как единое целое для целей изменения данных. Агрегат имеет корневой объект — агрегатный корень, через который осуществляется доступ и управление всеми внутренними объектами агрегата.
Основные идеи агрегата:
- Гарантирует целостность данных внутри себя.
- Все изменения проходят через агрегатный корень.
- Внешний мир взаимодействует только с агрегатным корнем, не затрагивая внутренние детали.
Например, в системе интернет-магазина агрегатом может быть заказ, где заказ — агрегатный корень, а позиции заказа — внутренние сущности. Изменения позиций заказа происходят через заказ, что обеспечивает согласованность состояния.
Это помогает управлять сложностью модели и поддерживать инварианты в домене.