Plan de migration de base de données sans interruption (expand/contract)

Planifiez un changement de schéma en production sans coupure : phases expand, migration et contract, backfill par lots, requêtes de vérification et retour arrière à chaque étape. Conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Il comprend 5 variables personnalisables et vous pouvez le copier gratuitement en un clic.

Avancé · Code · En attente de relecture éditoriale

Prompt

Agis comme un ingénieur bases de données habitué aux migrations en production sans interruption de service.

Le changement à réaliser : {{changement}}
- Moteur et version : {{moteur}}
- Taille des tables concernées et charge : {{volume}}
- Mode de déploiement de l’application : {{deploiement}}
- Outil de migration : {{outil}}

Livrables :
1. Analyse des risques : quelles instructions verrouillent ou réécrivent la table sur ce moteur et cette version, et combien de temps elles pourraient bloquer à ce volume (de façon qualitative en l’absence de données).
2. Un plan par phases selon le modèle expand/contract. Pour chaque phase : SQL exact, modifications du code applicatif, déploiement concerné et condition pour passer à la suivante.
   - Expand : ajouter colonnes, tables ou index sans casser l’ancienne version du code (pas de verrou long, index concurrents si le moteur le permet).
   - Double écriture ou synchronisation temporaire entre ancienne et nouvelle structure.
   - Backfill par lots : script idempotent et reprenable, taille des lots, pauses et suivi de l’avancement.
   - Bascule des lectures vers la nouvelle structure.
   - Contract : supprimer l’ancienne structure seulement quand plus rien ne l’utilise.
3. Des requêtes de vérification qui confirment que les anciennes et nouvelles données concordent.
4. Un plan de retour arrière par phase, et le point à partir duquel revenir n’est plus trivial.
5. Ce qu’il faut surveiller pendant la migration (verrous, retard de réplication, latence, erreurs) et quand l’arrêter.
6. Une liste de contrôle finale pour le jour J.

Contraintes :
- Pars du principe que deux versions du code tourneront en parallèle quelques minutes, sauf indication contraire.
- N’invente ni noms de tables ni colonnes : utilise les miens ou [À COMPLÉTER].
- S’il manque une information critique (réplicas, clés étrangères…), pose-moi d’abord la question.
- Recommande de répéter tout le plan en préproduction avec une copie réaliste des données.

Comment l'utiliser

  1. Décrivez le changement avec vos vrais noms de tables et de colonnes.
  2. Indiquez votre mode de déploiement (rolling, blue-green, instance unique) et votre outil de migration.
  3. Répétez chaque phase en préproduction avant de toucher à la production.
  4. Joignez le plan au ticket de changement pour avoir le retour arrière sous la main.

Exemple d'utilisation

Changement : scinder clients.nom_complet en prenom et nom · PostgreSQL 15 · 8 millions de lignes · Déploiement rolling sur Kubernetes · Alembic.

Exemple de résultat

1. Risque

Sous PostgreSQL 15, ADD COLUMN sans valeur par défaut ne touche que le catalogue, mais exige un bref verrou ACCESS EXCLUSIVE : si une requête longue le précède, toutes les écritures s’empilent derrière. D’où le lock_timeout.

2. Plan par phases

PhaseDéploiementPasser à la suite quand…
ExpansionNColonnes créées sans erreur
Double écritureN+1Les 4 réplicas écrivent les deux structures
BackfillScript0 ligne restante
Lecture nouvelleN+2Requêtes de contrôle à 0
ContractionN+3Plus aucun code ne lit nom_complet
-- Phase 1 : expansion (échouer vite plutôt que bloquer la table)
SET lock_timeout = '2s';
ALTER TABLE clients
    ADD COLUMN prenom text,
    ADD COLUMN nom text;

-- Phase 3 : backfill par lots, idempotent et reprenable par id
UPDATE clients
SET prenom = split_part(nom_complet, ' ', 1),
    nom    = NULLIF(substr(nom_complet,
               length(split_part(nom_complet, ' ', 1)) + 2), '')
WHERE id > :dernier_id AND id <= :dernier_id + 5000
  AND prenom IS NULL;

Attention : la règle de découpage est [À COMPLÉTER]. Couper au premier espace échoue avec les prénoms composés écrits sans trait d’union ou les noms à particule (« de La Tour ») ; vérifiez un échantillon avant le backfill…

Informations clés

Catégorie
Programmation et développement · SQL
Type de résultat
Code
Niveau
Avancé
Conçu pour
ChatGPT, Claude, Gemini et Microsoft Copilot
Vérifié sur
En attente de vérification éditoriale
Variables
Changement de schéma, Moteur et version, Volume et charge, Mode de déploiement et Outil de migration
Langue
Français
Prix
Gratuit, sans inscription
Mis à jour
07/11/2026

Questions fréquentes

Qu’est-ce que le modèle expand/contract ?

Il découpe un changement incompatible en plusieurs étapes compatibles : on ajoute la nouvelle structure sans retirer l’ancienne, on migre données et lectures, puis on supprime l’ancienne en dernier. Chaque déploiement reste compatible avec la version précédente du code.

Pourquoi un backfill par lots plutôt qu’un seul UPDATE ?

Un UPDATE massif peut garder des verrous longtemps, produire énormément de journaux et retarder les réplicas. Des petits lots reprenables limitent l’impact et permettent d’arrêter en cas de problème.

À quoi sert ce prompt ?

Planifiez un changement de schéma en production sans coupure : phases expand, migration et contract, backfill par lots, requêtes de vérification et retour arrière à chaque étape.

Avec quels outils d'IA fonctionne-t-il ?

Il est conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Nous ne l'avons pas encore vérifié sur ces outils ; les résultats peuvent donc varier de l'un à l'autre.

Comment personnaliser le prompt ?

Cliquez sur « Personnaliser » et remplissez les variables (Changement de schéma, Moteur et version, Volume et charge, Mode de déploiement et Outil de migration). Le texte se met à jour instantanément et vous pouvez ensuite le copier en un clic. Les valeurs sont stockées uniquement dans votre navigateur.

Faut-il de l'expérience pour l'utiliser ?

Il est de niveau avancé : il s'adresse aux personnes expérimentées dans le domaine, capables d'évaluer et d'ajuster le résultat.

Ce prompt est-il gratuit ?

Oui. Tous les prompts de HomeCasa Prompts sont gratuits, sans inscription ni abonnement. Vous pouvez aussi les utiliser dans des projets professionnels.

Puis-je me fier au résultat de l'IA ?

Considérez-le comme un brouillon de qualité : vérifiez toujours les données, les chiffres et les affirmations importantes avant de publier ou de prendre des décisions.

Prompts similaires