Question

Ceci est une question pour ceux d'entre vous le développement d'une équipe de développeurs où vous avez tous bases de données distinctes. Vous versioning votre base de données en utilisant le contrôle des sources et d'autres outils qui apporteront automatiquement les bases de données de dev à jour à la dernière version de la base de données (schéma, données, SPs, fonctions, etc.).

OK Grande! Mais attendez! Que faire si vous développez la version 4.0 du logiciel, mais maintenant vous devez passer des branches à la branche 3.2 pour corriger un bug? Le schéma pourrait être (presque est assurément) très différent maintenant ...

Je suppose que si vous êtes allé à travers l'effort supplémentaire pour les scripts d'annulation d'écriture avec vos scripts de changement, cela pourrait fonctionner. Mais cela semble être beaucoup de travail - est-il vraiment la peine

Était-ce utile?

La solution

Beaucoup plus facile serait de créer une nouvelle base de données 3.2-branche et le travail avec ce tout en travaillant sur le code 3.2-branche. Il ne semble pas raisonnable me d'exiger que chaque développeur a exactement une base de données pour travailler avec.

Autres conseils

Je vais sur une branche et supposons que vous la base de données Le versionnage binaire? Si tous vos actifs de base de données ont été sous forme de code constructif (par exemple des scripts SQL et / ou des données de texte dépotoirs), la solution serait simple, comme suggéré par Mark: stocker ces actifs dans le cadre de la branche de développement. Pour travailler sur la version 3.2, mettez la branche, re-exécuter le créer des scripts et presto, base de données 3.2. La fusion serait tout aussi facile que avec le code régulier (ou tout aussi douloureuse, en fonction de votre système de contrôle de version de choix).

Voici quelques suggestions à travailler dans ce mode:

  • Si la création des instances de base de données à partir du texte est trop lent, faire un cache sur un volume de disque partagé, calée par le contenu de tous les schémas / fichiers de données (ou de celui-ci la somme MD5).
  • Ecrire un pré-commettras crochet pour faire en sorte que le schéma et les données décharges dans l'instance du développeur sont les mêmes que celles sous contrôle de version. Cela empêche les gens de faire des changements à leur base de données de dev avec un outil interactif, puis oublier de les commettre.
  • Vous parlez des scripts de modification; les traiter comme un passif. Même si elles peuvent être requis par votre scénario de déploiement (par exemple, pour les clients qui souhaitent mettre à niveau sur place), ils dupliquent les informations de l'historique de version de la base de données, et par les moyens de duplication de la loi de Murphy désynchronisation tôt ou tard. Essayez de générer automatiquement les scripts de modification des actifs de base de données en utilisant versionnés « diff »; ou si cela ne peut pas être atteint, consacrez quelques tests unitaires sérieux pour les mises à niveau de base de données.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top