Hallo,
ich will mal kurz die Problemstellung beschreiben und dann die zwei Möglichkeiten beschreiben, die ich als Lösung sehe.
Ich habe zwei Datenbanken DB1 und DB2. Die können auf unterschiedlichen Rechnern liegen, müssen aber nicht. Die DB1 stellt eine Tabelle bereit, in der Nutzerdaten (Name, Vorname, Personalnummer, usw.) eingetragen werden. Sobald eine Änderung in DB1 geschieht, soll der Datensatz in die DB2 synchronisiert werden. Dabei müssen Teile der Daten im Eintrag in die Einzeltabelle von DB1 in unterschiedliche, mehrere Tabellen von DB2 befördert werden. Es gibt also etwas Logik, die man beim Eintrag in DB2 umsetzen muss. Dieser Vorgang soll automatisiert werden.
Hintergrund ist die Bereitstellung einer Art Schnittstellen-DB (DB1), in die ein Kooperationspartner per ODBC etwas eintragen kann, während er auf die DB der Hauptanwendung (DB2) keinen Zugriff erhält.
Bemerkung: Es wird nur uni-direktional synchronisert, also DB1 --> DB2.
Lösung 1: Ich schreibe Triggerfunktionen in der DB1, die bei INSERT, UPDATE oder DELETE den Eintrag hernehmen und unter Anwendung der Logik in die DB2 synchronisieren.
Frage: Kann man Trigger Datenbank-Übergreifend machen, etwa mit PL/PGSQL? In den Beispielen finde ich immer nur Trigger, die auf einer und derselben DB arbeiten.
Lösung 2: Ich schreibe mir einen Service in Java, der zwei JDBC-Verbindungen zu DB1 und DB2 aufbaut und die Logik abbildet. Dabei guckt der Service zyklisch alle paar Sekunden, ob sich in DB1 etwas geändert hat.
Mir ist Lösung 2 fast lieber, weil ich da ungefähr weiß, wie ich ansetzen muss. Aber ich hab das “Gefühl”, dass man das eigentlich ganz anders machen könnte…
Gibt es da Ideen dazu?
Viele Grüße,
ferdy