2008-12-02 3 views
9

Pour les praticiens agiles là-bas ...développement Agile et base de données change

Comment gérez-vous des modifications à un schéma de base de données au cours d'un projet? Mon hypothèse est que dans un projet agile, le schéma de toute base de données impliquée va changer et être refactorisé comme cela se produit avec la base de code.

Cette hypothèse est-elle correcte? Si oui, avez-vous des outils ou des processus particuliers que vous utilisez pour aider à faire fonctionner les choses en douceur?

+0

Quelques années plus tard, j'ai eu beaucoup de succès en utilisant [ Code First Entity Framework Migrations] (http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework -in-asp-net-mvc-application) pour arriver à cela! –

Répondre

7

AgileData.org est une excellente ressource - beaucoup plus que je n'entre dans une seule réponse - sur le développement de la base de données Agile. En particulier, vous pourriez être intéressé par Agile Data Best Practices. Si vous utilisez SQL Server, vous pouvez également être intéressé par le logiciel SQL Compare from Red Gate. Nos administrateurs de base de données l'ont utilisé pour m'aider à migrer les changements du contrôle qualité vers la production pour les applications existantes.

+0

@redGate est très pratique pour dba. – dove

+0

Nous utilisons déjà ANTS de Red Gate et en avons été très satisfaits, donc je vais certainement vérifier SQL Compare. Merci à tvanfosson! –

1

Idéalement, vous effectuez des modifications sans rupture, puis, une fois la version terminée, vous pouvez entièrement déprécier les anciennes parties du schéma. Ce n'est pas facile et nécessite de la discipline. Ce n'est même pas toujours possible.

0

Jetez un oeil à Ruby on rails migrations. Peu importe si vous n'utilisez pas Rails, car l'idée a déjà été copiée dans un autre framework.

2

Dans notre configuration Agile, il y a un dossier pour les changements de DB, fait comme fichiers .SQL. Jusqu'à présent, nous avons eu un changement de DB dans chaque version, et le fichier porte le nom de la version de l'application. Le script d'installation applique automagiquement tous les fichiers de modification lors de la mise à jour des sites.

Nous avons également un vidage de schéma complet d'un DB de référence, utilisé pour les nouvelles installations, créé par notre outil d'administration DB.

Je sais qu'il existe des outils qui aident à automatiser ce processus, comme Red Gate, mais la création manuelle du fichier de changement SQL est très facile.

5

Pour chaque mise à jour, je serais:

  • déploiement roulade avant et scripts rollback,
  • déployer un script "construire la base de données à partir de zéro",
  • déployer un script de migration de données, et En appliquant un mécanisme par lequel le code est verrouillé sur la version de la base de données, c'est-à-dire en testant une valeur renvoyant la version actuelle de la base de données, il y a une discordance.

HTH

acclamations,

Rob

0

La structure de base de données est le plus susceptible d'être une dépendance de nombreuses parties de votre code, et les changements de schéma aura des effets en cascade. Un peu comme faire des changements à l'interface dans une classe que de nombreuses classes étendent. Soyez donc prudent sur les changements de schéma.

La méthodologie Agile n'est pas différente des autres méthodologies en ce sens qu'il est avantageux de concevoir la base de données autant que possible, et vous devriez chercher à la modifier moins souvent que le code. Pour ne pas dire que vous ne pouvez jamais le changer, mais il est coûteux de le faire.Les migrations sont un outil simple mais efficace pour suivre les changements de schéma, comme d'autres l'ont noté. Le concept étant des scripts d'instructions CREATE et ALTER à mettre à niveau d'une révision du schéma à l'autre, accompagné de scripts d'instructions ALTER et DROP pour déclasser les mêmes changements. Ruby on Rails utilise en plus une couche d'abstraction de base de données pour faciliter le changement de marques de base de données, mais si vous avez seulement besoin de supporter une marque, vous pouvez simplement utiliser des fichiers SQL.

Il y a un livre hautement considéré à ce sujet (bien que je ne l'ai pas eu l'occasion d'acheter ou de lire encore) appelé « Refactoring Databases: Evolutionary Database Design » par Scott Ambler

+0

Il est en effet à votre avantage de devenir bon à changer la base de données, de sorte que vous pouvez le migrer avec votre code en micro-changements fréquents. Les modifications apportées au code étaient également coûteuses, jusqu'à ce que nous développions les pratiques et les outils pour le rendre bon marché. La même chose doit et peut arriver pour les bases de données. –

+0

À droite, nous avons de puissants outils IDE qui peuvent propager les changements de refactorisation de code à travers un projet. Mais nous n'avons pas actuellement de magie similaire pour propager un changement de schéma de base de données à travers tout le code qui l'utilise. –

Questions connexes