Question

J'ai une petite quantité d'expérience en utilisant SVN sur mes projets de développement, et j'ai aussi peu d'expérience avec les bases de données relationnelles. Je sais que les concepts de base tels que des tables et des instructions SQL, mais je suis loin d'être un expert.

Ce que je voudrais savoir est s'il y a des systèmes de type de contrôle de version générique comme SVN, mais que le travail avec une base de données plutôt que des fichiers. Je voudrais le même genre de fonctionnalités que vous obtenez avec SVN comme la possibilité de créer des branches, créer des balises et fusionner les branches ensemble. Au lieu d'un numéro de révision étant associé à une version d'un dépôt de fichier, il serait associé à une version de la base de données.

Y at-solutions génériques disponibles qui peuvent ajouter ce type de fonctionnalité indépendante du schéma de base de données réelle? Je serais intéressé par des solutions qui fonctionnent avec MySQL ou MS SQL Server.

Je tiens également à préciser que je suis en train de contrôle de version les données ne sont pas le schéma. Je me attends le schéma reste constant. Alors, vraiment, il semble que je veux un moyen de créer un journal de tous les INSERT, UPDATE et DELETE requêtes envoyées à la base de données entre chaque version des données. De cette façon, toute version pourrait être recréée par toutes les réémission instructions SQL qui ont été enregistrées jusqu'à la version désirée.

Était-ce utile?

La solution

Vous pouvez créer un script toutes vos DDL, les procédures stockées et autres fichiers de texte ordinaire.

Ensuite, vous pouvez simplement utiliser SVN pour la base de données versioning.

Autres conseils

Je ne l'ai jamais trouvé une solution qui fonctionne aussi bien que Subversion, mais voici quelques choses que je l'ai fait ont contribué à:

  1. Faire des scripts qui vont créer le schéma et remplir toutes les données initiales. Ensuite, faire un script de mise à jour pour chaque changement après. Il est un processus assez manuel, mais cela fonctionne. Il y a des choses supplémentaires qui aident comme stocker le numéro de version dans un tableau dans la db et faire en sorte que les scripts sont idempotent .

  2. Stocker le db plein développement dans Subversion. Cela ne fonctionne généralement pas trop bien pour moi s'il y a beaucoup de données ou il est fréquemment changé. Mais dans certains projets est pourrait fonctionner.

Je garde et de maintenir créer des scripts dans mon système de contrôle de version.

Il y a deux choses que je peux penser:

  • http://www.liquibase.org/ - fournit un moyen de gérer généralement des changements de base de données. Crée des fichiers qui s'engagés dans le contrôle source, et il aide à gérer les changements à travers différentes bases de données de développement, etc.
  • http://www.viget.com/extend/ sauvegarde de votre base de données en git / - cela décrit une stratégie de sauvegarde d'une base de données dans le contrôle source, mais la même stratégie peut être utilisée que sur le schéma. Dans ce schéma, la base de données serait dans une zone séparée de votre code principal. (Ceci peut être utilisé avec d'autres systèmes de contrôle de source aussi.)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top