Какой хороший способ обработки объектов в совокупности, которые сохраняются в нескольких базах данных - PullRequest
1 голос
/ 23 августа 2010

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

Суть проблемы в том, что я имею дело с рядом устаревших систем и баз данных.и я пытаюсь использовать подход DDD для создания новых приложений и замены старых.Основная проблема заключается в том, что, хотя сущности моего домена, объекты-значения и агрегаты имеют деловой смысл, при рассмотрении вопроса о сохранении у меня возникает одна большая проблема ... сущности в агрегате в настоящее время сохраняются в нескольких базах данных.

ДляНапример, допустим, у меня есть объекты A, B и C, где A - совокупный корень.У меня есть репозиторий для A, и я использую Unit of Work вокруг сессии NHibernate для сохранения.Все отлично, если A, B и C сохраняются на одном сервере / базе данных.В моем случае, однако, A и B могут находиться на одном сервере / базе данных, а C может сохраняться на совершенно другом сервере / базе данных.

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

Короче говоря, у меня есть доморощенный фреймворк на C #, состоящий из Fluent / NHibernateдля сохранения, Unity для IoC и использования стандартных (или, по крайней мере, узнаваемых) моделей репозитория и единицы работы.Что касается баз данных, я имею дело с MS SQL Server и Oracle.

Есть мысли?

1 Ответ

0 голосов
/ 25 августа 2010

Совокупный корень не должен существовать в нескольких базах данных.

Грег Янг говорит об этой же проблеме здесь .


Что-то как это - это то, что Ты должен делать.

...