Devo implementare la sincronizzazione dei dati tra due grandi database che hanno strutture completamente diverse. Fondamentalmente, ho bisogno di prendere alcuni dati sui prodotti in diverse tabelle nel primo database e riorganizzarli per altre tabelle nel secondo database.
Creare i miei prodotti per 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 lo rendono difficile.
- Non sono autorizzato a fare nulla sul database di origine a parte le query di selezione.
- Sul database di destinazione, posso fare le solite query (selezionare, aggiornare, inserire, creare) ma non posso modificare la struttura / le tabelle esistenti.
- Target e sorgente 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" da nessuna parte.
Quindi l'intero processo deve essere eseguito in un singolo script Python (idealmente).
Penso alla creazione di un hash per ogni prodotto, basato sui campi da aggiornare nel database di destinazione: md5 (codice + descrizione + fornitore + circa altri 10 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 esibizione. Quindi confronta e aggiorna il prodotto se il nuovo hash è diverso da quello vecchio.
Ci sono circa 500.000 prodotti, quindi sono un po 'preoccupato per le prestazioni.
È la buona strada da percorrere?