6.3. Mettre à jour la base de données

6.3.1. Créer un delta de mise à jour

  • Premièrement créer une nouvelle branche pour votre modification du modèle
  • Modifier le code SQL de création selon le besoin
  • Créer le fichier delta SQL correspondant dans data-model/update/delta. * Le fichier doit être nommé : delta_{tag_number}_{increment}_{short description}.sql `voir cycles de release et versionnement<qwat_dev.html#release-cycles-and-versioning>`_
  • Pousser votre branche et contrôler les résultats de Travis
  • Si les tests de Travis sont au vert, vous pouvez créer une pull request pour fusionner vos modifications dans le tronc master

Note

Le modèle de donnée doit être Taggé. Le Tag doit respecter la syntaxe suivante : x.x.x. Pour chaque version majeur, le tag DOIT être x.0.0

6.3.2. Migrer une base de donnée existante

Si vous utilisez une ancienne version du modèle de donnée QWAT, vous pouvez le mettre à jour en suivant les instructions ci-dessous :

Avertissement

Vous devez toujours sauvegarder votre base de donnée courante avant toute mise à jour.

  • Ouvrir un terminal et se déplacer dans qwat_project/data-model/update
  • Lancer la commande de mise à jour : ./upgrade_db.sh
    • Ceci testera le processus de mise à jour
  • Si le processus de migration est au vert, lancer ensuite une deuxième fois la commande en indiquant le paramètre pour mettre à jour la vraie base de données : ./upgrade_db.sh --upgrade yes

Note

Votre .pg_service.conf doit contenir les connexions vers les bases de données qwat, qwat_test et qwat_conform

6.3.3. Fonctionnement

Un tag est attribué pour une version x.0

Dans /update/delta/ directory se trouvent les fichiers SQL qui contiennent les évolutions courantes (delta). Si on exécute init_qwat.sh dans le dossier git courant, la base de donnée générées correspond à la même base de données que si init_qwat.sh en version x.0 est exécuté.

Pour un utilisateur, le processus de migration consiste en :

  • Récupérer la version de son modèle de données (est contenu dans le schéma système QWAT)
  • Exécuter le script de migration, qui prend en compte le paramètre de ce numéro de version. Le script exécute les tâches suivantes :
    • pg_dump de la base de données QWAT
    • pg_restore du dump précédent dans une base de données test (qwat_test)
    • Exécute sur la base de données de test toues les deltas SQL dont le numéro est supérieur ou égal au numéro de version (les deltas SQL doivent être nommés delta_{tag_number}_{increment}_{short description}.sql)
    • Exécuter le script de test de conformité :
      • Crée une nouvelle base de données : qwat_test_conform
      • Produit le fichier de référence (résultant du test SQL)
      • Compare la base de données de référence avec qwat_test produite précédemment
      • Si tout est OK, l’utilisateur est invité à poursuivre la migration sur sa base de données réelle
      • Si une erreur apparaît, l’utilisateur peut tenter de débugger lui-même l’erreur ou contacter l’équipe QWAT