Общая база данных и архитектура обмена сообщениями

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

По сути, компания, в которой он работает, имеет большую архитектуру с множеством различных приложений. Некоторые приложения имеют единую базу данных, которую они разделяют между собой. Например, есть 1 приложение, которое предоставляет пользовательский интерфейс для изменения справочных данных. Эти справочные данные используются другим приложением, которое также обращается к тем же данным. Я полагаю, что код на самом деле написан как разделяемые библиотеки (то есть оба приложения будут использовать общий кодовый набор, который перераспределяется для каждого (у каждого он есть как зависимость)).

Существуют также другие приложения с базой данных, которые также используются другими приложениями при прямом соединении JDBC с кодом доступа к данным (не является общим для двух приложений - дублируется !! erghh!).

Мой вопрос касается плюсов и минусов этой архитектуры по сравнению с архитектурой, в которой каждое приложение содержит свои «основные» данные в изолированном пространстве. Если приложение x запрашивает данные из приложения y, они используют веб-службы или некоторые технологии обмена сообщениями для получения этих данных.

Подход, основанный на обмене сообщениями, привел бы к проблеме, из-за которой «коды» справочных данных (или внешние ключи), которые используются в БД других приложений в настоящее время, теперь должны быть получены из другого источника. В текущей архитектуре «декодирование» для них может измениться в любое время и немедленно отразиться во внешнем приложении, вместо того, чтобы иметь отношение «главный / подчиненный», когда данные копируются, или альтернативу, где приложение x должно запросить приложение y просто для отображения значений декодирования.

Я читал паттерны Enterprise Integration Patterns, и хотя в нем приводятся некоторые примеры преимуществ обмена сообщениями, я в этом не уверен.

Спасибо Iain

Ответы на вопрос(3)

Ваш ответ на вопрос