Мы разрабатываем новое приложение и столкнулись с некоторым архитектурным вопросом, когда думали о владении данными.
Мы разбили систему на компоненты, например, Заказчик и Заказ.каждый из этих компонентов / модулей отвечает за конкретный бизнес-домен, т. е. клиент имеет дело с CRUD клиентов и бизнес-процессами, ориентированными на клиентов (регистрация нового клиента, блокировка учетной записи клиента и т. д.).каждый модуль является владельцем набора таблиц базы данных, и только этот модуль может получить к ним доступ.если другому модулю нужны данные, принадлежащие другому модулю, он извлекает их, запрашивая их у этого модуля.
Пока все хорошо, вопрос состоит в том, как обращаться со сценариями, такими как отчет, который должен показать всеклиенты и для каждого клиента все его заказы?в таком случае нам нужно получить всех клиентов из модуля Customer, выполнить итерацию по ним и для каждого получить все данные из модуля Order.производительность не будет хорошей ... очевидно, было бы гораздо лучше иметь сохраненную таблицу соединений и клиентов с порядком присоединения, но это также означало бы прямой доступ к данным, принадлежащим другому модулю, создавая связи и зависимости, которые мыхочу избегать.
Это упрощенный пример, мы имеем дело с корпоративным приложением с большим количеством бизнес-сущностей и отношений, и моя цель - сохранить его в чистоте и как можно слабее связанным.Я предвижу в будущем много изменений в схеме данных и, возможно, разделение системы на несколько совершенно отдельных систем.Я хотел бы иметь дизайн, который позволил бы сделать это относительно простым способом.