Pattern 1 — Expand / contract
Ajouter d'abord en nullable, backfiller, puis poser la contrainte. Trois déploiements, zéro coupure.
Pattern 2 — Renommer en deux étapes
Créer la nouvelle colonne, dupliquer en écriture, basculer les lectures, puis supprimer l'ancienne.
Pattern 3 — Backfill chunké
Ne jamais lock une grosse table. Chunker par batch de 10 000 lignes avec un sleep entre les batchs.
Pattern 4 — Outils dédiés
pg_squeeze ou pg_repack pour les retassages d'index sans lock long. Indispensables sur les tables volumineuses.
Notre règle
Aucune migration en prod sans plan rollback documenté. Aucune.