2009-11-02 6 views
1

Nous réévaluons notre processus de mise à niveau de base de données pour notre application afin d'éviter de devoir générer tous les scripts de mise à niveau pour une version à la fin du cycle de publication. Nous cherchons à évoluer vers un processus plus évolutif, en utilisant des migrations qui sont intégrées aux fonctionnalités avec un outil tel que migratordotnet, et cela semble être un moyen très simple de gérer les changements de schéma. Cependant, les données par défaut fournies avec notre base de données sont sujettes à changement et certaines de ces mises à jour de données ne correspondent pas bien au processus de migration. Par exemple, les insertions aux tables qui ont une clé primaire Identity ne sont pas facilement identifiables et ne peuvent donc pas être annulées lors de la rétrogradation. Donc, je me demande comment les gens gèrent la migration des données par défaut? Est-ce qu'ils l'ont géré en dehors du processus de migration du système? Ou bien les insertions sont-elles effectuées pendant les migrations, mais la suppression des données n'est pas effectuée lors des déclassements?Migration évolutive de la base de données et données par défaut

Répondre

3

Pour nous, la migration DB fait partie du processus de développement quotidien. Les développeurs doivent soit commettre un programme ou un script qui effectue les changements nécessaires. Cela se produit dès que la fonctionnalité associée est implémentée et jamais "à la fin du cycle de publication".

La rétrogradation est rarement un problème, mais si vous l'avez, créez une colonne avec une information de version. Lorsque la mise à niveau réussit et que le client décide de rester avec la nouvelle version, supprimez à nouveau la colonne (ou conservez-la). La clé du succès est que nous avons de nombreux cas de test qui créent la base de données à partir de zéro (en utilisant un DB en mémoire comme H2 ou un DB installé sur chaque machine de développement) incluant toutes les données et ensuite la migrer. chemin à travers et à l'arrière. Nous pouvons importer des données anonymisées des serveurs de production dans les cas de test pour dépister les bogues et améliorer les tests sans porter atteinte à la vie privée de nos clients ni gêner les développeurs.

+0

Salut Aaron, alors vous script des mises à jour de données par défaut au cours de la mise en œuvre de la fonctionnalité connexe? Nous pourrions également le faire, mais nous craignions que l'inversion d'une telle migration puisse être extrêmement difficile en cas de déclassement dû à une erreur par exemple. – Graham

+0

Quels types d'erreurs attendez-vous? S'il n'existe aucun moyen de rétrograder, votre dernière option est une sauvegarde complète avant la migration ou vous pouvez exporter les données dans un fichier avant de le modifier. –

Questions connexes