Devo implementare la sincronizzazione dei dati tra due grandi database che hanno strutture completamente diverse. Fondamentalmente, ho bisogno di inserire alcuni dati sui prodotti in diverse tabelle nel primo database e riordinarli per altre tabelle nel secondo database.
Creare i miei prodotti la prima volta non è molto complicato. Ma sto cercando un modo per aggiornare alcuni dati specifici - non tutti i dati - su ciascun prodotto.
Ovviamente, ci sono alcuni problemi che rendono questo difficile.
- Non sono autorizzato a fare nulla sul database sorgente a parte le query di selezione.
- Sul database di destinazione, posso fare query abituali (selezionare, aggiornare, inserire, creare) ma non posso modificare la struttura / le tabelle esistenti.
- Target e source db hanno strutture completamente diverse, le tabelle non sono affatto le stesse, quindi i dati devono essere riorganizzati - il confronto delle tabelle non funzionerà.
- Il database di destinazione utilizza un server MySQL - l'origine potrebbe essere DB2.
- Non ci sono campi "tempo aggiornato" ovunque.
Quindi l'intero processo deve essere eseguito in un singolo script Python (idealmente).
Penso alla creazione di un hash per ogni prodotto, in base ai campi da aggiornare nel database di destinazione: md5 (codice + descrizione + fornitore + circa 10 altri campi). Un nuovo hash basato sugli stessi dati verrà creato su base giornaliera dal database di origine. Conserverò tutti gli hash in una singola tabella (codice articolo, current_hash, old_hash) a scopo di performance. Quindi confronta e aggiorna il prodotto se il nuovo hash è diverso da quello precedente.
Ci sono circa 500 000 prodotti quindi sono un po 'preoccupato per le prestazioni.
È il modo migliore per andare?