Quelles méthodologies de contrôle de version aident les équipes de personnes à suivre les modifications de schéma de base de données?
Quelles méthodologies de contrôle de version aident les équipes de personnes à suivre les modifications de schéma de base de données?
Réponses:
Il y a quelques minutes à peine, je vérifiais ceci: Un tableau qui devrait exister dans tous les projets avec une base de données , semble assez simple à mettre en pratique, vérifiez-le:
C'est ce qu'on appelle schema_version (ou migrations, ou ce qui vous convient) et son but est de garder trace des modifications structurelles ou de données apportées à la base de données. Une structure possible (exemple dans MySQL) est:
create table schema_version ( `when` timestamp not null default CURRENT_TIMESTAMP, `key` varchar(256) not null, `extra` varchar(256), primary key (`key`) ) ENGINE=InnoDB;
insérer dans schema_version (
key
,extra
) valeurs ('001', 'version du schéma');Que vous ajoutiez cette table depuis le début du projet ou juste après que vous ayez déployé la première version sur un serveur de transfert ou de production dépend de votre choix.
Chaque fois que vous devez exécuter un script SQL pour modifier la structure de la base de données ou effectuer une migration de données, vous devez également ajouter une ligne dans cette table. Et faites cela via une instruction insert au début ou à la fin de ce script (qui est validé dans le référentiel de code du projet).
…
Je pense que la meilleure méthode consiste à générer la base de données dans le cadre de votre processus de construction . Conservez tous les scripts dans le contrôle de code source avec le reste du code, chacun étant responsable de son propre environnement.
En cas d'échec, RedGate dispose d' un outil pour intégrer le contrôle de source dans SSMS et SQL Compare est utile pour comparer / synchroniser les schémas MS SQL Server. Visual Studio Database Edition possède également un outil de comparaison de schéma intégré .
Une autre question SO me conduit au Migrator Dot Net sur lequel je vais commencer à enquêter pendant mon temps libre copieux. Cela semble être une bonne méthode, mais il s’agit peut-être davantage d’un investissement en temps / frais généraux que vous ne le souhaitez.
eiefai déjà mentionné Une table qui devrait exister dans tous les projets avec une base de données . Ceci est un excellent article de blog, mais l’OMI n’est qu’une partie du chemin menant à une solution opérationnelle pour le contrôle des révisions de bases de données. Je pense que toute tentative de "répondre" à cette question dans le monde réel doit prendre en compte d'autres informations sur VCS et les bases de données:
Je pense qu’il existe différents angles pour aborder cette question. Je crois que l'angle "outil d'abord" va varier en fonction de la plate-forme et des préférences personnelles. Exemple: j'utilise un projet de base de données dans MS Visual Studio, mais je ne suis pas sûr qu'il s'agisse d'une excellente solution pour MySQL. Je connais aussi des gens qui sont très vendus avec leurs outils préférés de Redgate, Erwin, Embarcadero, etc.
Il existe également un angle "processus d'abord" pour cette question, qui sera (espérons-le) revisité sur ce site dans les questions suivantes. Les clés de voûte de ce processus obtiennent votre schéma sous contrôle de source et gèrent les modifications de sorte que vous puissiez appliquer les modifications de schéma de la version "x" à la version "y" pratiquement à la demande.
Une réponse définitive à ce sujet finira par ressembler à un livre. Il est donc conseillé de commencer par en citer un: Redgate a récemment publié un ebook gratuit intitulé " Le Guide Red Gate du développement en équipe de SQL Server ". Il ya beaucoup de choses à débattre, c’est un très bon endroit pour commencer à débattre, OMI. Contrairement au nom, une grande partie du contenu de ce livre est suffisamment générale pour pouvoir être appliquée à n’importe quelle base de données (pas uniquement SQL Server) et à n’importe quel jeu d’outils (pas seulement Redgate). Si vous ne l'avez pas déjà vu, ça vaut vraiment le coup, au moins.
Enfin, il est probablement utile de lier la "réponse héritée" de stackoverflow .
SchemaCrawler est mon outil pour produire un fichier texte avec tous les objets de schéma de base de données. J'ai conçu cette sortie texte à la fois lisible par l'homme et différable par rapport à une sortie similaire d'un autre serveur.
En pratique, j'ai constaté que la sortie d'un fichier texte du schéma de base de données est utile, lorsqu'elle est effectuée dans le cadre de la construction. De cette façon, vous pouvez archiver le fichier texte dans votre système de contrôle de code source et disposer d'un historique des versions de l'évolution de votre schéma. SchemaCrawler est conçu pour automatiser cela aussi, à partir de la ligne de commande.