Je pense que vous avez honnêtement déjà fait allusion à la réponse la plus simple.
Tout d'abord, mettez à jour votre couche d'accès aux données pour gérer à la fois le nouveau et l'ancien schéma :les insertions et les mises à jour doivent mettre à jour à la fois le nouveau et l'ancien afin de maintenir la synchronisation. Les requêtes ne doivent examiner que l'ancien schéma car il s'agit de la source de l'enregistrement à ce stade.
Copiez ensuite toutes les données de l'ancien vers le nouveau schéma.
Ensuite, mettez à jour l'accès aux données pour interroger maintenant les nouvelles données. Cela gardera les anciennes données à jour, mais permettra un test complet des nouvelles données avant d'apporter des modifications qui entraîneraient la désynchronisation des deux ensembles de données. Cela facilitera également les mises à jour continues (c'est-à-dire que les applications avec à la fois le nouveau et l'ancien code d'accès aux données fonctionneront toujours en même temps.
Enfin, mettez à jour la couche d'accès aux données pour accéder uniquement au nouveau schéma, puis supprimez les anciennes données.
À l'exception de cette dernière étape, vous pouvez toujours revenir à la version précédente si vous rencontrez des problèmes.