ADR-007 — Partitionnement mensuel PostgreSQL des contenus
Statut
Proposed
Date
2026-05-10
Contexte
Faits visibles et contexte validé :
- DMV repose sur PostgreSQL comme base relationnelle principale ;
- le projet manipule ou prévoit des publications, contenus, statistiques, favoris, alertes, médias et données multi-apps ;
- la partition mensuelle des contenus/publications est documentée comme cible envisagée pour la scalabilité ;
- les migrations Laravel et Supabase historiques coexistent et doivent être clarifiées.
Objectif :
- préparer une stratégie de scalabilité progressive pour les tables volumineuses, sans complexifier prématurément tout le modèle data.
Décision
DMV propose d’étudier puis d’introduire un partitionnement mensuel PostgreSQL pour les contenus à forte volumétrie, notamment les publications et événements assimilables, lorsque les volumes ou exigences de maintenance le justifieront.
Cette décision ne signifie pas que toutes les tables doivent être partitionnées dès maintenant.
Conséquences
Effets attendus :
- meilleure maîtrise des volumes historiques ;
- requêtes temporelles potentiellement plus efficaces ;
- archivage et purge plus simples ;
- maintenance plus contrôlée des contenus anciens.
Contraintes :
- définir précisément les tables concernées ;
- valider les impacts sur migrations, index, requêtes et sauvegardes ;
- documenter la source canonique des migrations avant généralisation ;
- tester les performances avant mise en production.
Alternatives envisagées
| Alternative | Raison de non-priorisation |
|---|---|
| Pas de partitionnement | Simple au départ, mais peut devenir limitant avec la croissance. |
| Partitionnement par commune | Plus complexe et potentiellement déséquilibré selon les usages. |
| Archivage applicatif sans partition | Plus simple, mais moins robuste pour de gros volumes relationnels. |
Risques
- Complexité de migration si introduit trop tard.
- Sur-ingénierie si introduit trop tôt.
- Requêtes et index mal adaptés aux partitions.
Liens associés
docs/09-data/02-postgresql.mddocs/09-data/04-partitioning.mddocs/09-data/15-migrations.mddocs/06-architecture/10-scalability.md