Где я работаю, у нас есть ESBк которому подключено 6 различных приложений (или, если можно так выразиться, «конечные точки»). Эти 6 приложений работают с 3 различными схемами Oracle на 2 экземплярах базы данных. Некоторые из этих приложений сосуществуют в одной и той же схеме не потому, что они связаны, а потому, что нашей инфраструктурой базы данных управляет внешний поставщик, и получение новой схемы просто занимает вечность (к тому же, конечно, у нас нет доступа к БД) ... на самом деле это занимает так много времени, что в какой-то момент мы подумали о временном использовании существующей схемы, чтобы иметь возможность продолжить разработку. Чтобы обеспечить «разделение» данных, имена таблиц имеют префикс, например «CST_» для клиента. Кроме того, мы должны работать со схемой, которая по некоторым уважительным причинам не может быть абсолютно изменена ... Странно, я знаю. Конечно, как это всегда бывает, «временно»
Наши различные приложения подключаются к своей соответствующей схеме базы данных и работают со своими собственными пакетами PL / SQL, и мы абсолютно запрещаем себе напрямую взаимодействовать с таблицами / данными, находящимися вне области нашего приложения.
Когда одному приложению, подключенному к ESB, требуется информация вне его домена, оно вызывает соответствующую службу в ESB для получения данных, даже если эта информация фактически находится в той же схеме, что в теории требует лишь небольшого оператора соединения в один из запросов SQL .
Мы делаем это для того, чтобы иметь возможность разделить наш домен приложения на разные схемы / базы данных, и чтобы службы в ESB по-прежнему работали должным образом, когда это происходит (скоро Рождество, мы сжимаем пальцы)
Сейчас это может выглядеть странно и ужасно со стороны, но для этого есть причины, и я просто хотел поделиться этим конкретным опытом, чтобы показать вам, что одна или несколько баз данных не так важны. Подождите, это так! по многим причинам (+1 для Скотта Уитлока, см. последний абзац о резервном копировании и о том, что mya может привести к неприятностям) Но не менее важно, чтобы я думал, что ваши сервисы SOA должным образом спроектированы, по крайней мере, это мое мнение Я не администратор базы данных. В конечном счете, все ваши базы данных принадлежат вашему «хранилищу данных предприятия», верно?
Наконец, я не буду перефразировать последний абзац Скотта Уитлока, особенно этот
Я бы не разделял таблицы на разные физические базы данных только из-за разделения проблем.
это действительно супер важно. Не делай этого, если нет причин.