Qu’est-ce que la gestion des schémas ?
Pourquoi est-ce important ?
Types d’approches de gestion des schémas
Impératif
CREATE TABLE, ALTER TABLE ou DROP COLUMN dans des fichiers. L’outil exécute ensuite les fichiers dans l’ordre et garde la trace de ceux qui ont déjà été appliqués. Dans cette catégorie, c’est vous qui définissez exactement quel SQL exécuter.
Exemples : Golang Migrate, Goose et Flyway.
Déclaratif
Points à considérer lors du choix d’un outil
Qu’utilise déjà votre équipe ?
Quel est le processus souhaité ?
- Un workflow simple « écrire du SQL, l’exécuter en intégration continue, et c’est tout », comme Goose ou Golang Migrate.
- Des workflows d’approbation gérés, des pistes d’audit et RBAC, comme Bytebase ou Liquibase.
- De définir votre schéma de manière déclarative et de laisser l’outil déterminer les différences, comme Atlas.
Outils recommandés
Atlas
- Type : Déclaratif
- Langage : Go, distribué sous la forme d’un binaire unique
- Licence et disponibilité : Open Core ; l’Atlas CLI dispose d’une édition communautaire Apache 2.0, mais la prise en charge de ClickHouse nécessite l’offre Pro ou une période d’essai
- Prise en charge des clusters : Oui
Golang Migrate
schema_migrations de votre base de données ClickHouse.
Pourquoi il fonctionne bien avec ClickHouse : il est simple et flexible. Vous écrivez exactement le DDL ClickHouse que vous voulez exécuter. C’est un binaire Go unique, sans dépendances d’exécution, ce qui facilite son intégration dans un pipeline CI/CD ou un conteneur Docker.
Point de vigilance : si un fichier de migration contient plusieurs instructions et que l’une d’elles échoue en cours de route, la base de données peut se retrouver dans un état partiellement appliqué nécessitant une intervention manuelle. Ce risque reste maîtrisable en appliquant une règle simple : une instruction par fichier.
Particulièrement adapté à : les équipes qui veulent de la simplicité et un contrôle total sur les requêtes SQL exécutées sur leur instance ClickHouse.
- Type : Impératif
- Langage : Go
- Licence : open source, MIT
- Prise en charge des clusters : Oui
Goose
- Type : Impératif
- Langage : Go, distribué sous la forme d’un seul binaire
- Licence : open source, MIT
- Prise en charge des clusters : Non