Y at-il un système de contrôle de version pour les changements de la structure de base de données?

voix
104

Je heurte souvent à le problème suivant.

Je travaille sur quelques modifications à un projet qui nécessitent de nouvelles tables ou des colonnes dans la base de données. Je fais les modifications de la base de données et continuer mon travail. Habituellement, je me souviens d'écrire les changements afin qu'ils puissent être répliqués sur le système en direct. Cependant, je ne me souviens pas toujours ce que j'ai changé et je ne me souviens pas toujours de l'écrire.

Je fais donc un bouton au système en direct et obtenir une erreur grand, évident qu'il n'y a pas NewColumnX, pouah.

Indépendamment du fait que cela peut ne pas être la meilleure pratique de cette situation, est-il un système de contrôle de version pour les bases de données? Je ne me soucie pas de la technologie de base de données spécifique. Je veux juste savoir s'il existe. Si elle arrive à travailler avec MS SQL Server, puis une grande.

Créé 02/08/2008 à 02:52
source utilisateur
Dans d'autres langues...                            


22 réponses

voix
56

Dans Ruby on Rails, il y a un concept de migration - un script rapide pour changer la base de données.

Vous générez un fichier de migration, qui a des règles pour augmenter la version db (comme l'ajout d'une colonne) et les règles de rétrograder la version (comme la suppression d'une colonne). Chaque migration est numéroté, et une table conserve la trace de votre version actuelle db.

Pour migrer jusqu'à , vous exécutez une commande appelée « db: migrate » qui regarde votre version et applique les scripts nécessaires. Vous pouvez migrer vers le bas d'une manière similaire.

Les scripts de migration eux-mêmes sont conservés dans un système de contrôle de version - chaque fois que vous changez la base de données vous archivez un nouveau script, et tout développeur peuvent l'appliquer à apporter leur db locale à la dernière version.

Créé 02/08/2008 à 07:23
source utilisateur

voix
29

Je suis un peu vieille école, dans ce que j'utilise des fichiers source pour la création de la base de données. Il y a en fait 2 fichiers - projet database.sql et projet updates.sql - la première pour le schéma et les données persistantes, et la seconde pour les modifications. Bien sûr, les deux sont sous contrôle de source.

Lorsque les modifications de la base, je première mise à jour le schéma principal projet database.sql, puis copiez les informations pertinentes au projet-updates.sql, par exemple ALTER TABLE. Je peux ensuite appliquer les mises à jour de la base de données de développement, de test, itérer jusqu'à ce que bien fait. Ensuite, vérifiez dans les fichiers, un nouveau test, et appliquer à la production.

De plus, je suis généralement une table dans la db - Config - tels que:

SQL

CREATE TABLE Config
(
    cfg_tag VARCHAR(50),
    cfg_value VARCHAR(100)
);

INSERT IGNORE  INTO Config(cfg_tag, cfg_value) VALUES
( 'db_version', '$Revision: $'),
( 'db_revision', '$Revision: $');

, Je puis ajouter ce qui suit à la section de mise à jour:

UPDATE Config SET cfg_value='$Revision: $' WHERE cfg_tag='db_revision';

La db_versionseule est changée lorsque la base de données est recréée, et db_revisionme donne une indication dans quelle mesure le db est hors de la ligne de base.

Je pouvais garder les mises à jour dans leurs propres fichiers séparés, mais j'ai choisi de les écraser tous ensemble et utiliser le copier-coller pour extraire des sections pertinentes. Un peu plus ménage afin, par exemple, retirer « : » de $ Revision 1.1 $ pour les congeler.

Créé 26/09/2008 à 21:29
source utilisateur

voix
11

Redgate a un produit appelé SQL Source Control . Il intègre avec TFS, SVN, SourceGear Vault, Vault Pro, Mercurial, Perforce et Git.

Créé 08/07/2011 à 15:51
source utilisateur

voix
11

Mybatis (anciennement iBatis) a une migration de schéma , un outil destiné à être utilisé sur la ligne de commande. Il est écrit en Java mais peut être utilisé avec tout projet.

Pour obtenir une bonne base de données changement des pratiques de gestion, nous devons identifier quelques objectifs clés. Ainsi, le système de schéma mybatis Migration (ou mybatis court pour les migrations) vise à:

  • Travailler avec une base de données, nouvelles ou existantes
  • Tirer parti du système de commande de source (Subversion)
  • Permettre aux développeurs ou équipes concurrentes à travailler de façon autonome
  • Autoriser les conflits très visibles et facilement gérable
  • Permettre la migration vers l'avant et vers l'arrière (évoluer, déléguer respectivement)
  • Faire l'état actuel de la base de données facilement accessible et compréhensible
  • Activer les migrations en dépit des privilèges d'accès ou la bureaucratie
  • Travailler avec une méthodologie
  • Encourage les bonnes pratiques, cohérentes
Créé 10/07/2010 à 22:56
source utilisateur

voix
10

Je me demande que personne ne mentionne l'outil open source liquibase qui est basé sur Java et devrait fonctionner pour presque toutes les bases de données qui prend en charge jdbc. Par rapport aux rails , il utilise le langage XML rubis plutôt que d'effectuer les changements de schéma. Bien que je n'aime pas xml pour les langues spécifiques de domaine l'avantage très cool de xml est que liquibase sait comment restaurer certaines opérations comme

<createTable tableName="USER"> 
   <column name="firstname" type="varchar(255)"/>
</createTable>

Donc, vous n'avez pas besoin de gérer cela de votre propre

instructions SQL pures ou les importations de données sont également pris en charge.

Créé 10/07/2010 à 22:26
source utilisateur

voix
10

Je recommande fortement delta SQL . Je viens de l' utiliser pour générer les scripts diff quand je fait mon codage et vérifier les caractéristiques des scripts dans mon outil de contrôle de code source (Mercurial :))

Ils ont à la fois un serveur SQL et Oracle version.

Créé 28/05/2009 à 03:12
source utilisateur

voix
9

La plupart des moteurs de base de données devraient soutenir le dumping votre base de données dans un fichier. Je sais que MySQL fait, de toute façon. Ce sera juste un fichier texte, vous pouvez donc soumettre cela à Subversion, ou tout ce que vous utilisez. Il serait facile d'exécuter un diff sur les fichiers aussi.

Créé 02/08/2008 à 02:56
source utilisateur

voix
8

Si vous utilisez SQL Server, il serait difficile à battre Mec données (alias l'édition de base de données de Visual Studio). Une fois que vous obtenez le coup de lui, faire un schéma comparer entre votre version contrôlée source de la base de données et la version en production est un jeu d'enfant. Et avec un clic, vous pouvez générer votre diff DDL.

Il y a une instruction vidéo sur MSDN qui est très utile.

Je sais DBMS_METADATA et le crapaud, mais si quelqu'un pouvait venir avec un mec de données pour Oracle alors la vie serait vraiment douce.

Créé 10/09/2008 à 20:49
source utilisateur

voix
7

Jetez un oeil à l'emballage oracle DBMS_METADATA.

En particulier, les méthodes suivantes sont particulièrement utiles:

  • DBMS_METADATA.GET_DDL
  • DBMS_METADATA.SET_TRANSFORM_PARAM
  • DBMS_METADATA.GET_GRANTED_DDL

Une fois que vous êtes au courant de la façon dont ils travaillent (assez explicite) vous pouvez écrire un script simple pour vider les résultats de ces méthodes dans des fichiers texte qui peuvent être mis sous contrôle de source. Bonne chance!

Je ne sais pas s'il y a quelque chose pour ce simple MSSQL.

Créé 01/09/2008 à 21:57
source utilisateur

voix
7

Demandez à votre initiale créer des déclarations de table dans le contrôleur de version, puis ajouter de modifier les déclarations de table, mais jamais modifier des fichiers, un peu plus modifier les fichiers idéalement nommés de manière séquentielle, ou même comme un « ensemble de changement », de sorte que vous pouvez trouver tous les changements pour un déploiement particulier.

La partie que je plus hardis peux voir, est suivi de dépendances, par exemple, pour une table de déploiement particulier B pourrait être mis à jour avant le tableau A.

Créé 31/08/2008 à 12:25
source utilisateur

voix
7

Pour Oracle, j'utilise Crapaud , qui peut jeter un schéma à un certain nombre de fichiers discrets (par exemple, un fichier par table). J'ai quelques scripts qui gèrent cette collection dans Perforce, mais je pense qu'il devrait être facilement réalisable dans à peu près tous les systèmes de contrôle de révision.

Créé 02/08/2008 à 07:05
source utilisateur

voix
6

PLSQL Developer, un outil de Tous ARROUND Automations, a un plug-in pour les dépôts qui fonctionne bien (mais pas super) avec Visual Source Safe.

Sur le Web:

Le contrôle de version Plug-In offre une intégration étroite entre le PL / SQL Developer IDE >> et tout système de contrôle de version qui prend en charge la spécification Microsoft SCC Interface. >> Cela inclut le plus populaire des systèmes de contrôle tels que la version Microsoft Visual SourceSafe, >> Merant PVCS et MKS Source Integrity.

http://www.allroundautomations.com/plsvcs.html

Créé 17/09/2008 à 16:50
source utilisateur

voix
6

Je l'ai fait sous et hors tension pendant des années - gestion (ou d'essayer de gérer) les versions de schéma. Les meilleures approches dépendent des outils que vous avez. Si vous pouvez obtenir l'outil Quest Software « schéma directeur » vous serez en bonne forme. Oracle a son propre outil inférieur qui est aussi appelé « schéma directeur » (beaucoup de confusion?) Que je ne recommande pas.

Sans un outil automatisé (voir d'autres commentaires ici à propos de Mec Data) vous allez utiliser des scripts et des fichiers directement DDL. Choisissez une approche, documenter et suivre rigoureusement. J'aime avoir la possibilité de recréer la base de données à un moment donné, donc je préfère avoir une exportation complète de la base de données DDL ensemble (si je suis le DBA), ou du schéma de développeur (si je suis dans le produit -Mode de développement).

Créé 15/09/2008 à 16:01
source utilisateur

voix
6

Je vous écris mes scripts de libération de db en parallèle avec le codage et conserverez les scripts de libération dans une section spécifique du projet SS. Si je fais une modification du code qui nécessite un changement de db, puis mettre à jour le script de sortie en même temps. Avant la libération, je lance le script de sortie sur db dev propre (structure copiée sage de la production) et de faire mon test final sur elle.

Créé 30/08/2008 à 19:58
source utilisateur

voix
5

ER studio vous permet d'inverser le schéma de base de données dans l'outil et vous pouvez le comparer à vivre des bases de données.

Exemple: Inverser votre schéma de développement dans ER Studio - comparer à la production et il liste toutes les différences. Il script peut les changements ou tout simplement les pousser à travers automatiquement.

Une fois que vous avez un schéma dans ER Studio, vous pouvez enregistrer le script de création ou de l'enregistrer comme un binaire propriétaire et l'enregistrer dans le contrôle de version. Si jamais vous voulez revenir à une version passée du système, il suffit de vérifier et le pousser à votre plate-forme db.

Créé 17/09/2008 à 19:04
source utilisateur

voix
5

Il y a un « cadre de la migration de base de données » appelé Ruckusing PHP5. Je ne l' ai pas utilisé, mais les exemples montrent l'idée, si vous utilisez la langue pour créer la base de données en fonction des besoins, il suffit de suivre les fichiers source.

Créé 02/08/2008 à 08:48
source utilisateur

voix
3

Vous pouvez utiliser les outils de données Microsoft SQL Server dans Visual Studio pour générer des scripts pour les objets de base de données dans le cadre d'un projet SQL Server. Vous pouvez ensuite ajouter les scripts de contrôle de code source en utilisant l'intégration de contrôle de code source qui est intégré dans Visual Studio. En outre, les projets SQL Server vous permettent de vérifier les objets de base de données en utilisant un compilateur et de générer des scripts de déploiement pour mettre à jour une base de données existante ou créer une nouvelle.

Créé 22/12/2014 à 11:58
source utilisateur

voix
2

Comparaison de schémas pour Oracle est un outil spécialement conçu pour migrer des changements de notre base de données Oracle à l'autre. S'il vous plaît visitez l'URL ci-dessous pour le lien de téléchargement, où vous pourrez utiliser le logiciel pour un essai entièrement fonctionnel.

http://www.red-gate.com/Products/schema_compare_for_oracle/index.htm

Créé 10/01/2010 à 03:59
source utilisateur

voix
2

Nous avons utilisé Database Edition système MS équipe avec assez bon succès. Il intègre plus ou moins de façon transparente avec le contrôle de version TFS et Visual Studio et nous permet de procs gère stockées, vues, etc., facilement. La résolution des conflits peut être une douleur, mais l' histoire de version est complète une fois qu'il est fait. Par la suite, les migrations à l' assurance qualité et la production sont extrêmement simples.

Il est juste de dire que ce produit est une version 1.0, bien que, et non sans quelques problèmes.

Créé 26/09/2008 à 19:12
source utilisateur

voix
1

Je recommande l' une des deux approches. Tout d' abord, investir dans PowerAMC de Sybase. Edition pour entreprise. Il vous permet de concevoir datamodels physiques, et beaucoup plus. Mais il est livré avec un dépôt qui vous permet de vérifier dans vos modèles. Chaque nouveau chèque peut être une nouvelle version, il peut comparer une version à une autre version et même à ce qui est dans votre base de données à ce moment - là. Il présentera ensuite une liste de toutes les différences et demander ce qui devrait être migré ... et puis il construit le script pour le faire. Ce n'est pas pas cher , mais il est une bonne affaire au prix deux fois et il est le retour sur investissement est d' environ 6 mois.

L'autre idée est d'activer l'audit DDL (fonctionne dans Oracle). Cela va créer une table avec tous les changements que vous faites. Si vous interrogez les modifications de l'horodatage vous avez déplacé vos modifications de base de données prod à ce moment, vous aurez une liste ordonnée de tout ce que vous avez fait. Quelques clauses où pour éliminer à somme nulle change comme create table foo; suivie drop table foo; et vous pouvez construire FACILEMENT un script mod. Pourquoi conserver les modifications dans un wiki, qui est le double du travail. Laissez la base de données les suivre pour vous.

Créé 26/09/2008 à 18:53
source utilisateur

voix
1

Deux recommandations du livre: « Les bases de refactoring » par Ambler et Sadalage et « Techniques de base de données Agile » par Ambler.

Quelqu'un a mentionné Rails Migrations. Je pense qu'ils travaillent beaucoup, même en dehors des applications Rails. Je les ai utilisés sur une application ASP avec SQL Server que nous étions en train de passer à Rails. Vous vérifiez les scripts de migration eux - mêmes dans le VCS. Voici un message par Dave Thomas Pragmatique sur le sujet.

Créé 22/09/2008 à 19:17
source utilisateur

voix
1

En l'absence d'un VCS pour les changements de table que je les ai vous connecter un wiki. Au moins, je peux voir quand et pourquoi il a été changé. Il est loin d'être parfait comme tout le monde le fait et nous avons plusieurs versions de produits en cours d'utilisation, mais mieux que rien.

Créé 01/09/2008 à 08:29
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more