Strategie für Datenabgleich

Hallo Wissende,
ich habe mehrere Oracle-Views als Fremdtabellen eingebunden.
Die Daten aus den Views sollen PG Tabellen aktualisieren.

Nun muss ich den aktuellen Stand der PG Tabelle mit der Oracle-View vergleichen und geänderte Datensätze ermitteln.
Das wäre kein Problem, wenn die Struktur der Tabellen identisch wäre. Allerdings haben die PG-Tabellen zusätzliche Spalten.

Nun sehe ich prinzipiell 2 Strategien des Datenabgleichs:

  1. Direkter Abgleich Fremdtabelle/PG-Tabelle per
  • Löschabfrage
  • Aktualisierungsabfrage
  • Anfügeabfrage
  1. Vergleich der Fremdtabelle mit einem 1:1 Import der Fremdtabelle

Das Problem bei 1) ist, dass die 3 Abfragen jeweils speziell auf die Tabellenstruktur angepasst sein müssen und jede Strukturänderung der Fremdtabelle eine Codeänderung erfordert.

Das Problem bei 2) ist, dass ich alle Fremdtabellen doppelt halten muss und jeder Abgleich zum Löschen/Neuerstellen der Tabellenkopie führt.

Ich bin natürlich vom Programmieraufwand für Version 2), weiß aber nicht ob das Löschen/Neuerstellen der Tabellenkopie der Datenbank so gut “bekommt”.
Es handelt sich um 10 Tabellen mit durchschnittlich 15 Spalten (meist Texte mit durchschnittlich 20 Zeichen) und insgesamt 60.000 Datensätzen.
Wie oft aktualisiert werden soll/muss ist mir allerdings im Moment noch unklar. Ich gehe aktuell davon aus, dass die Aktualisierung vom Nutzer manuell maximal 10-20 mal pro Tag angeschoben wird.

Wie würdet ihr vorgehen?

Gruß Steffen

Irgendwie musst du ja die Oracle-Tabellen in die PG-Tabellen abbilden. Das kannst du ja auch nutzen um die Unterschiede festzustellen. Oder du bildest die PG-Tabellen als Materialized Views aus und machst einen regelmässigen Refresh.
Falls sich die Struktur der Tabellen/Views ständig ändert würde ich an deiner Stelle noch mal über das Datenmodell nachdenken.

Gruß Uwe

Hallo,

Irgendwie musst du ja die Oracle-Tabellen in die PG-Tabellen abbilden

Ich habe bereits eine zentrale Aktualisierungsfunktion für jeweils einen Datensatz. Das ist aber wesentlich mehr als eine einfache Aktualisierungsabfrage eines Oracle-Datensatzes auf einen PG Datensatz, da stehen auch noch PostGIS Objekte mit entsprechenden Abhängigkeiten dahinter.
Für den normalen Abgleich geänderter Datensätze (geänderter Attribute) braucht es diese kompliziere Aktualisierungsfunktion eigentlich nicht. Allerdings müssten halt in den notwendigen Lösch-, Aktualisierungs- und Anfügeabfragen alle Tabellenbeziehungen nochmals abgebildet werden.

Falls sich die Struktur der Tabellen/Views ständig ändert würde ich an deiner Stelle noch mal über das Datenmodell nachdenken.

Ständig sicher nicht, aber falls doch mal eine Spalte hinzukommt (vergessen wurde) muss dann an zwei Stellen nachprogrammiert werden.

Ich werde das jetzt erst mal mit der Tabellenkopie versuchen. Mal schaun wie das Zeitverhalten ist und ob ich damit überhaupt alles abbilden kann.

Gruß Steffen