Ich muss die Datensynchronisation zwischen zwei großen Datenbanken implementieren, die völlig unterschiedliche Strukturen haben. Grundsätzlich muss ich einige Daten zu Produkten in verschiedenen Tabellen in der ersten Datenbank erfassen und sie für andere Tabellen in der zweiten Datenbank neu anordnen.
Das erstmalige Erstellen meiner Produkte ist nicht sehr kompliziert. Ich suche jedoch nach einer Möglichkeit, bestimmte Daten - nicht alle Daten - zu jedem Produkt zu aktualisieren.
Offensichtlich gibt es ein paar Probleme, die dies schwierig machen.
- Abgesehen von ausgewählten Abfragen darf ich in der Quelldatenbank nichts tun.
- In der Zieldatenbank kann ich übliche Abfragen ausführen (auswählen, aktualisieren, einfügen, erstellen), die vorhandene Struktur / die vorhandenen Tabellen können jedoch nicht geändert werden.
- Ziel- und Quelldatenbank haben völlig unterschiedliche Strukturen, Tabellen sind überhaupt nicht gleich, daher müssen die Daten wirklich neu angeordnet werden - das Vergleichen von Tabellen funktioniert nicht.
- Die Zieldatenbank verwendet einen MySQL-Server. Die Quelle ist möglicherweise DB2.
- Es gibt nirgendwo "aktualisierte Zeit" Felder.
Der gesamte Vorgang muss also (im Idealfall) in einem einzigen Python-Skript ausgeführt werden.
Ich denke darüber nach, einen Hash für jedes Produkt zu erstellen, basierend auf den zu aktualisierenden Feldern in der Zieldatenbank: md5 (Code + Beschreibung + Lieferant + ungefähr 10 andere Felder). Ein neuer Hash, der auf denselben Daten basiert, wird täglich aus der Quellendatenbank erstellt. Ich werde alle Hashes in einer einzigen Tabelle (Artikelcode, current_hash, old_hash) für Leistungszwecke speichern. Vergleichen und aktualisieren Sie dann das Produkt, wenn sich der neue Hash vom alten unterscheidet.
Es gibt ungefähr 500 000 Produkte, also mache ich mir ein bisschen Sorgen um die Leistung.
Ist es der richtige Weg?