Skip to main content
SQLOZ
Chapter 6 Schema & Model Architecture

Chapitre 6 : Comparaison et Synchronisation de Schéma

Info : Ce chapitre explique la détection des dérives de schéma entre deux bases de données, la matrice visuelle différentielle et les mécanismes de sauvegarde et de rollback.

Dans ce chapitre :

6.1 Identifier les écarts de schéma

Au cours du cycle de développement, la structure des bases de pré-production et de production tend à diverger (Schema Drift). SQLOZ repère les écarts et sécurise la phase d’alignement :

  1. Ouvrez le menu supérieur Outils → Comparer les schémas….
  2. Source : La base de référence (ex. local_dev).
  3. Cible (Target) : La base de données à actualiser (ex. production_db).
  4. Cliquez sur Comparer.

6.2 Matrice visuelle différentielle

Les disparités sont présentées dans un tableau comparatif avec code couleur :

CouleurSignificationInstruction générée
🟢 VertPrésent dans la source, absent de la cibleCREATE TABLE / ADD COLUMN
🟡 JaunePrésent dans les deux mais type ou index divergentALTER TABLE
🔴 RougeSupprimé de la source mais persistant sur la cibleDROP

Exemple concret :

SOURCE (local_dev)                | CIBLE (prod_db)                 | ACTION APPLICABLE
payments                          | ❌ (absent)                     | ➕ CREATE TABLE payments
users.phone_verified (BOOLEAN)    | users.phone_verified (TINYINT)  | 🔄 MODIFY COLUMN

6.3 Mécanismes de sécurité et garde-fous

Avant d’exécuter Appliquer la synchronisation, SQLOZ déploie des protections strictes :

  1. Sauvegarde automatique de table (_sqloz_bak_...) : Disponible pour MySQL/MariaDB. Avant d’exécuter des requêtes DDL destructives (DROP TABLE, DROP COLUMN, MODIFY COLUMN), le contenu de la table cible est cloné dans une table horodatée :
    CREATE TABLE IF NOT EXISTS `_sqloz_bak_<timestamp>_users` AS SELECT * FROM `users`;
  2. Script de rollback et de restauration (MySQL/MariaDB) : Lorsqu’un backup a été opéré, SQLOZ émet le script SQL de retour arrière ainsi que les instructions nécessaires pour réinjecter les données :
    -- INSERT IGNORE INTO `users` SELECT * FROM `_sqloz_bak_<timestamp>_users`;
  3. Protection contre la suppression destructrice : Toute suppression de table ou colonne en production requiert une confirmation manuelle préalable.

Avertissement : Pour les moteurs PostgreSQL ou SQLite, aucune sauvegarde automatique de table n’est exécutée en arrière-plan. Effectuez systématiquement un dump manuel certifié avant d’appliquer des changements de schéma sur ces environnements.

Comparaison de schéma - matrice de différences

Sujets connexes