Je dois implémenter la synchronisation des données entre deux grandes bases de données qui ont des structures complètement différentes. Fondamentalement, j'ai besoin de saisir des données sur les produits dans différentes tables de la première base de données et de les réorganiser pour d'autres tables dans la deuxième base de données.
Créer mes produits du premier coup n'est pas très compliqué. Mais je cherche un moyen de mettre à jour certaines données spécifiques - pas toutes les données - sur chaque produit.
De toute évidence, il y a quelques problèmes qui rendent cela délicat.
- Je ne suis pas autorisé à faire quoi que ce soit sur la base de données source, à l'exception des requêtes sélectionnées.
- Sur la base de données cible, je peux faire des requêtes habituelles (sélectionner, mettre à jour, insérer, créer) mais je ne peux pas modifier la structure / les tables existantes.
- Les bases de données cible et source ont des structures complètement différentes, les tables ne sont pas du tout les mêmes, donc les données doivent vraiment être réorganisées - la comparaison des tables ne fonctionnera pas.
- La base de données cible utilise un serveur MySQL - la source peut être DB2.
- Il n'y a aucun champ "heure de mise à jour" nulle part.
Donc, tout le processus doit être fait dans un seul script Python (idéalement).
Je pense à créer un hachage pour chaque produit, en fonction des champs à mettre à jour dans la base de données cible: md5 (code + description + fournisseur + environ 10 autres champs). Un nouveau hachage basé sur les mêmes données sera créé quotidiennement à partir de la base de données source. Je vais stocker tous les hachages dans une seule table (code d'article, current_hash, old_hash) à des fins de performances. Comparez puis mettez à jour le produit si le nouveau hachage est différent de l'ancien.
Il y a environ 500 000 produits donc je suis un peu inquiet pour les performances.
Est-ce la bonne voie à suivre?