Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SCM Discussion :

Versionning Base de données


Sujet :

SCM

  1. #1
    Nouveau membre du Club
    Inscrit en
    mai 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : mai 2004
    Messages : 52
    Points : 35
    Points
    35
    Par défaut Versionning Base de données
    Bonjour à tous,
    J'ai un petite question, concernant le versionning de projet, qui m'embête un peu.

    Imaginons qu'on est un projet plutôt classique constitué d'une base de données et de code qui exploite cette base.
    Pour faire ça propre on utilise un SCM pour versionner son code, bosser à plusieurs dessus...
    Mais comment fait-on pour gérer les versions de sa base de données (où schéma Oracle,etc...) ?
    En théorie, au fur et à mesure que le code évolue, il y a de grande chance pour que notre base évolue avec (ajout de table, de champs, de contraintes...). Or où est l'intérêt de gérer les différentes versions de notre code si on ne gère pas celles de notre BDD. Parce que dans ce cas si pour X raisons, on décide de revenir à une version antérieur, c'est cuit, car notre base ne correspondra plus au code.

    OK dans un contexte POO, si on fait des classes qui map les tables de notre base, normalement il ne doit y avoir que peu de code impacté mais quand même.

    Il me semble qu'il s'agit d'un problème assez important et je me demande pourquoi on en parle si peu dans les tutos sur l'utilisation de SCM.

    Pour l'instant je n'ai pas trouvé de solution réellement convaincante à mon gout :
    - faire des exports SQL de l'architecture (CREATE TABLE, ALTER...) de ma base et versionner ces fichiers avec un SCM type CVS ou Subversion
    - il existe des outils payants que je n'ai pas pu tester, un fait par QuestSoftware pour Oracle -> Toad Data Modeler et un autre de Microsoft pour SQLServer (j'ai oublié le nom).

    J'aimerais avoir vos avis et vos méthodes sur la question.

  2. #2
    Futur Membre du Club
    Étudiant
    Inscrit en
    avril 2006
    Messages
    12
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2006
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Moi je penserais de faire un versionning sur les sauvegardes des BDD .

    Par concéquent en cas de fausse manipulation ou quoi que ce soit on peut retourner a une base de donnée.

    C'est long est fastidieux mais c'est bien pratique en cas de problème .

  3. #3
    Membre confirmé Avatar de julien-blaise
    Homme Profil pro
    Développeur Java et C#
    Inscrit en
    mai 2005
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java et C#

    Informations forums :
    Inscription : mai 2005
    Messages : 458
    Points : 599
    Points
    599
    Par défaut
    Sinon tu peux te faire des fichiers contenant les données de tes bases (par exemple en XML), et tu te construis un impoter et un exporter qui se charge de charger et exporter tes données de la base.
    Il ne te reste plus qu'a versionner tes fichiers XML.
    Après à toi de voir la logique de tes fichiers, par exemples un fichier par table.
    "La violence est le dernier refuge de l'incompétence" Salvor Hardin, Fondation

  4. #4
    Membre du Club
    Inscrit en
    février 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : février 2007
    Messages : 52
    Points : 59
    Points
    59
    Par défaut
    tu veux versionner juste le schéma ou aussi les données avec ?

    dans le second cas, si tu sais où sont placés les fichiers de ta base, on pourrait aussi imaginer que tu les mettes carrément dans ton outil de SCM, non ? Ca nécessitera à priori d'arrêter la base pour avoir un état stable.

  5. #5
    Nouveau membre du Club
    Inscrit en
    mai 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : mai 2004
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    A priori, il s'agit surtout de versionner le schéma.

    Après reflexion, je pense que je choisirai la méthode d'export en requêtes SQL dans un fichier puis versionning du fichier. Mais ça suppose juste de bien penser à le faire à chaque fois. Il me semble que ça ne doit pas être trop difficile de prévoir un outil qui le fasse de manière automatique en lui précisant les identifiants de la base.

    En tout cas, merci pour vos réponses.

  6. #6
    Membre actif
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    juin 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Finance

    Informations forums :
    Inscription : juin 2002
    Messages : 177
    Points : 220
    Points
    220
    Par défaut
    Bonjour,

    dans notre cas, on utilise CVS aussi bien pour la gestion du code source (delphi en l'occurence) de l'application que du "code source" de la base de données extraction des tables, des procédures, ... et des données de paramètres en SQL.

    De cette manière, t'as le source Base de données et le code applicatif qui évolue en même temps

    A+

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Exactement le sujet que je cherchais,

    Pour l'instant ce que nous avons mis en place c'est le versioning de la structure et des données d'initialisation en sql.

    La prochaine étape c'est de versioner le mcd (modèle conceptuel).

    La question qui se pose, c'est comment ensuite migrer facilement la base de données de production à partir de ces ressources versionnées (structure et données) ?

    Ce à quoi je pensais, c'est d'avoir un outil (à déterminer) qui génère automatiquement un script de mise à jour en comparant 2 révisions des scripts sql, mais la je touche un peu à une autre problématique.

  8. #8
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2004
    Messages : 1 883
    Points : 3 500
    Points
    3 500
    Billets dans le blog
    2
    Par défaut
    Ce qu'il faut faire c'est bien entendu versionner le ou les fichiers qui te permettent de créer ton schéma de base.
    Soit tu as modélisé ta base et tu versionnes les fichiers de l'outil de modélisation (on fait cela avec Rose, RDA,...) ou bien tu créés des scripts de création/mise à jour du schéma (CREATE TABLE, CREATE VIEW, ...) et tu versionnes ces scripts.

    Si tu as besoin de versionner des données de référence contenues dans tes tables et bien tu fais pareil (scripts INSERT INTO....)

  9. #9
    Membre émérite
    Homme Profil pro
    Ingénieur Exploitation Mainframe
    Inscrit en
    octobre 2005
    Messages
    1 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Exploitation Mainframe
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2005
    Messages : 1 394
    Points : 2 984
    Points
    2 984
    Par défaut
    Citation Envoyé par ego
    Ce qu'il faut faire c'est bien entendu versionner le ou les fichiers qui te permettent de créer ton schéma de base.
    Soit tu as modélisé ta base et tu versionnes les fichiers de l'outil de modélisation (on fait cela avec Rose, RDA,...) ou bien tu créés des scripts de création/mise à jour du schéma (CREATE TABLE, CREATE VIEW, ...) et tu versionnes ces scripts ...
    Pour le DDL d'une table ce n'est pas aussi simple que ça cher collègue ...

    Sauf à détruire et à re-créer (DROP / CREATE) la table à chaque fois, ce qui pour une table de 100 millions de lignes accédée 24h/24 7j/7 n'est pas très pratique, on en conviendra, on travaille la plupart de temps par différence.
    C'est à dire qu'on modifie (ALTER), pour ajouter une colonne par exemple, la structure existante.

    L'approche en terme de GCL/SCM commence à se compliquer singulièrement ...

  10. #10
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2004
    Messages : 1 883
    Points : 3 500
    Points
    3 500
    Billets dans le blog
    2
    Par défaut
    Cher collègue, comme tu le dis,

    J'ai mis entre parenthèses "CREATE, ..." car je ne voulais pas tout lister. Allons y donc...

    En effet, à part la première version du script qui contient probablement "que" des CREATE" (première version = première version de la base mise en prod), les autres versions contiendront des "ALTER" et des "CREATE".
    Ceci dit, quand on modélise la base avec PowerAMC ou RDA ou Erwin ou...on fait bien du versioning de l'ensemble du modèle. Ce n'est que lorsque l'on demande à créer le DDL que les outils nous aident à faire un DIFF entre la version mise en prod et la version que l'on veut déployer. Ce DIFF permet de créer le script "d'altération" du schéma existant. Le changement de schéma pouvant être in fine plus complexe que cela encore car des "migrations" de données peuvent être à réaliser.
    Ceci dit, pour créer une nouvelle plate-forme de test, il faudra dans certains cas créer le script avec uniquement les "CREATE" car sur cette plate-forme il n'y a pas la base version "N-1" ou parce que l'on veut avant tout tester la nouvelle version avant même de faire le test complet de la migration de N-1 vers N.

    Donc au final, il faut bien versionner chaque version complète du schéma.

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    mars 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Solution de versioning
    Bonsoir,

    Ayant été confrontés à cette même problématique maintes et maintes fois, un projet open source a vu le jour pour mieux y répondre.

    Il s'agit d'un IDE de développement pour bases de données (Oracle, Mysql, Postgresql) permettant notamment de gérer le versioning de structures de données. Il permet également de traquer toute modification effectuée sur votre modèle au fil du temps et de générer automatiquement les scripts de livraison SQL.

    Les scripts peuvent être utilisés tels quel ou bien être embarqués dans un livrable déployable via un installateur (également gratuit) permettant de déployer les livrables avec vérification des versions précédentes, validation structurelle après l'installation, etc.

    Je vous invite à découvrir cela sur :
    http://www.nextep-softwares.fr
    et
    http://www.nextep-softwares.com

    L'IDE est basé sur Eclipse RCP et permettra donc aux fans de Java de rapidement s'y retrouver. Cela permet également un support de Windows, Linux et Mac.

Discussions similaires

  1. version base de donnée virale de l'antivirus
    Par Speed41 dans le forum Débuter
    Réponses: 0
    Dernier message: 02/04/2014, 22h55
  2. Réponses: 3
    Dernier message: 24/08/2009, 09h59
  3. Réponses: 6
    Dernier message: 31/03/2008, 12h10
  4. compatibilité OS HP-UX et version base de données
    Par benoit_45 dans le forum Oracle
    Réponses: 0
    Dernier message: 15/10/2007, 16h35
  5. Tenir des versions Backups de ma base de données
    Par HYQST dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/06/2006, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo