Muszę wdrożyć synchronizację danych między dwiema dużymi bazami danych, które mają zupełnie inne struktury. Zasadniczo muszę wykreślić niektóre dane dotyczące produktów w różnych tabelach w pierwszej bazie danych i ponownie ustawić je dla innych tabel w drugiej bazie danych.
Tworzenie moich produktów po raz pierwszy nie jest bardzo skomplikowane. Ale szukam sposobu na aktualizację niektórych konkretnych danych - nie wszystkich danych - o każdym produkcie.
Oczywiście jest kilka problemów, które sprawiają, że jest to trudne.
- Nie wolno mi nic robić w źródłowej bazie danych oprócz wybierania zapytań.
- W docelowej bazie danych mogę wykonywać zwykłe zapytania (wybierać, aktualizować, wstawiać, tworzyć), ale nie mogę modyfikować istniejącej struktury / tabel.
- Docelowa i źródłowa baza danych mają zupełnie inne struktury, tabele wcale nie są takie same, dlatego dane naprawdę muszą zostać uporządkowane - porównywanie tabel nie będzie działać.
- Docelowa baza danych korzysta z serwera MySQL - źródłem może być DB2.
- Nigdzie nie ma pól „zaktualizowany czas”.
Cały proces musi więc zostać przeprowadzony w jednym (najlepiej) skrypcie w języku Python.
Myślę o stworzeniu skrótu dla każdego produktu na podstawie pól do aktualizacji w docelowej bazie danych: md5 (kod + opis + dostawca + około 10 innych pól). Nowy skrót na podstawie tych samych danych będzie tworzony codziennie ze źródłowej bazy danych. Będę przechowywać wszystkie skróty w jednej tabeli (kod elementu, bieżący skrót, stary skrót) w celu wykonania. Następnie porównaj i zaktualizuj produkt, jeśli nowy skrót różni się od starego.
Istnieje około 500 000 produktów, więc trochę się martwię o występy.
Czy to dobra droga?