Shared Database vs. Messaging Architecture

Ich war gestern mit einem Freund in der Kneipe und wir haben angefangen, über die Architektur in der Firma zu diskutieren, in der er arbeitet. Das Gespräch umfasste im Wesentlichen die Vor- und Nachteile einer gemeinsam genutzten Datenbankarchitektur gegenüber einer verteilten unabhängigen Anwendungsarchitektur. Wir konnten keinen Konsens erzielen. In diesem Fall würde ich gerne die Meinung der Leute zu den Vor- und Nachteilen beider Ansätze hören.

Grundsätzlich hat das Unternehmen, für das er arbeitet, eine große Architektur mit vielen verschiedenen Anwendungen. Einige Anwendungen verfügen über eine einzige Datenbank, die sie gemeinsam nutzen. Beispielsweise gibt es eine Anwendung, die eine Benutzeroberfläche zum Ändern von Referenzdaten bereitstellt. Diese Referenzdaten werden von einer anderen Anwendung verwendet, die ebenfalls auf dieselben Daten zugreift. Ich glaube, der Code ist tatsächlich als gemeinsam genutzte Bibliotheken geschrieben (d. H. Beide Anwendungen verwenden einen gemeinsamen Codesatz, der für jede Anwendung neu bereitgestellt wird (eine davon hat ihn als Abhängigkeit)).

Es gibt auch andere Anwendungen mit einer Datenbank, die auch von anderen Anwendungen über eine direkte JDBC-Verbindung mit Datenzugriffscode verwendet wird (nicht üblich für beide Anwendungen - dupliziert !! äh!).

Meine Frage beschäftigt sich mit den Vor- und Nachteilen dieser Architektur im Vergleich zu einer Architektur, bei der jede Anwendung ihre "Stammdaten" im Silo enthält. Wenn eine Anwendung x Daten von der Anwendung y benötigt, verwenden sie Webdienste oder eine Nachrichtentechnologie, um diese Daten zu empfangen.

Der Messaging-Ansatz würde ein Problem mit sich bringen, bei dem Referenzdaten- "Codes" (oder Fremdschlüssel), die derzeit in den Datenbanken anderer Anwendungen verwendet werden, aus einer anderen Quelle abgerufen werden müssen. In der aktuellen Architektur können sich die 'Dekodierungen' für diese jederzeit ändern und werden sofort in der externen Anwendung wiedergegeben, anstatt eine Master / Slave-Beziehung zu haben, in der Daten kopiert werden - oder eine Alternative, in der Anwendung x Anwendung y abfragen muss nur um die Dekodierungswerte anzuzeigen.

Ich hatte Enterprise Integration Patterns gelesen und obwohl es einige Beispiele für die Vorteile von Messaging gibt, bin ich nicht so überzeugt.

Vielen Dank, Iain

Antworten auf die Frage(3)

Ihre Antwort auf die Frage