Aus vorhandener Datenbank, Daten in eine andere Datenbank schreiben (Synchronisation)

...komplette Frage anzeigen

2 Antworten

Mann kann zwar Datenbestände zwischen 2 Tabellen verschiedener Datenbanken vergleichen, aber das ist trotzdem nicht sehr elegant.

1. Du mußt idealerweise soetwas wie einen Freeze erstellen. Die Isolation beim Lesen ist normalerweise "Dirty Read" - Änderungen am Datenbestand werden so wie Sie sind gelesen. Writes werden erst nach dem physikalischem Write mitgewertet. Bei Dir ist aber jeder Compare jedes Datensatzes DB1 zu DB2 ein Full Table Read und dauert sicher ziemlich. Dabei können sich die Daten im Produktivsystem konstant ändern, solange jemand auf die DB zugreift.

2. Performance ist so sicher sehr schlecht bei großen Datenbeständen

3. alles in allem sehr umständlich.

Wie wäre es in DB2 eine Tabelle temp_[DB1_Original_Tabellenname] zu erstellen. select * from DB1:x insert into temp_x; dann drop DB1:x; und rename temp_x x;

Kein aufwändiger Vergleich nötig.

Bastel dir einfach ein Programm, welches zu beiden Datenbanken eine Verbindung aufbaut, und dann holst du dir erst die Daten von der Datenbank1, gehst jeden Datensatz durch und prüft ob die Datensätze in der Datenbank2 vorhanden sind, wenn nicht, lege ihn an. Danach machst du das selbe mit der Datenbank2, zuerst prüfen von eine Tupel von DB2 in DB1 vorhanden ist,ggf. anlegen. Wenn effektiv nur auf DB1 gearbeitet wird, dann musst du nicht die Daten von DB2 in DB1 schieben, dann reicht lediglich jede tupel von DB1 mit den Einträgen der DB2 zu prüfen, ggf dort anzulegen.

MrAnonym 14.03.2014, 09:54

Stimmt das ist eine recht einfache Methode mein Problem zu lösen =) Die DB2 dient nur zur Ansicht der gesammelten Daten. Dann muss ich lediglich alles aus DB1 auslesen und abgleichen. Danke für die schnelle Antwort!

0

Was möchtest Du wissen?