Aller au contenu principal

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

AlternativeRaison de non-priorisation
Pas de partitionnementSimple au départ, mais peut devenir limitant avec la croissance.
Partitionnement par communePlus complexe et potentiellement déséquilibré selon les usages.
Archivage applicatif sans partitionPlus 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.md
  • docs/09-data/04-partitioning.md
  • docs/09-data/15-migrations.md
  • docs/06-architecture/10-scalability.md