Le choix de la base de données est une décision structurante pour toute startup. PostgreSQL et MongoDB dominent les discussions, mais le débat est souvent pollué par des dogmes plutôt que par une analyse pragmatique. Ce guide propose un framework de décision clair pour les entrepreneurs marocains.
Les fondamentaux : deux philosophies différentes
Avant de comparer, comprenons ce qui distingue fondamentalement ces deux technologies.
PostgreSQL : la rigueur relationnelle
PostgreSQL est une base de données relationnelle née en 1996 à Berkeley. Son modèle repose sur des tables structurées, des relations via clés étrangères, et le respect des propriétés ACID (Atomicité, Cohérence, Isolation, Durabilité).
Caractéristiques clés :
- Schéma strict défini à l'avance
- Transactions robustes avec rollback garanti
- Langage SQL standardisé
- 30 ans de maturité et de stabilité
MongoDB : la flexibilité documentaire
MongoDB, lancé en 2009, adopte un modèle orienté documents. Les données sont stockées en BSON (JSON binaire) sans schéma prédéfini, permettant une structure flexible et évolutive.
Caractéristiques clés :
- Schéma flexible, documents hétérogènes possibles
- Scaling horizontal natif (sharding)
- Requêtes JSON intuitives
- Adapté aux données non structurées
Matrice de décision
Voici un tableau comparatif des critères essentiels pour une startup.
| Critère | PostgreSQL | MongoDB | Avantage | |---------|-----------|---------|----------| | Cohérence des données | ACID strict | Eventual consistency | PostgreSQL | | Flexibilité du schéma | Rigide (migrations) | Très flexible | MongoDB | | Requêtes complexes | Excellent (JOINs, CTEs) | Limité (agrégations) | PostgreSQL | | Scaling horizontal | Complexe | Natif | MongoDB | | Scaling vertical | Excellent | Bon | PostgreSQL | | Transactions multi-doc | Natif | Depuis v4.0 (limité) | PostgreSQL | | Courbe d'apprentissage | SQL (universel) | API spécifique | PostgreSQL | | Coût hébergement Maroc | ~200 MAD/mois | ~350 MAD/mois | PostgreSQL | | Talent disponible | Abondant | Croissant | PostgreSQL |
Cas d'usage : quand choisir quoi ?
Choisissez PostgreSQL si...
Vous construisez une application financière ou e-commerce
Les transactions bancaires, les paiements et les commandes exigent une cohérence absolue. Une commande ne peut pas être à moitié enregistrée. PostgreSQL garantit que si une opération échoue, tout est annulé.
Exemple concret : une marketplace marocaine traitant 10 000 commandes par jour. Chaque commande implique la mise à jour du stock, la création d'une facture, et le débit du client. Avec PostgreSQL, ces 3 opérations sont atomiques.
Vos données sont hautement relationnelles
Si votre modèle de données ressemble à un schéma entité-association avec de nombreuses relations, PostgreSQL excelle. Les JOINs optimisés permettent de récupérer des données complexes en une seule requête.
Cas typiques : CRM, ERP, systèmes de gestion RH, applications comptables.
Vous avez besoin de reporting avancé
Les requêtes analytiques complexes avec agrégations, fenêtres et CTEs (Common Table Expressions) sont le terrain de jeu de PostgreSQL. Les outils BI comme Metabase ou Power BI s'y connectent nativement.
Votre équipe maîtrise SQL
SQL est enseigné dans toutes les formations informatiques au Maroc. Recruter des développeurs PostgreSQL est facile et économique. Le pool de talents MongoDB reste plus restreint.
Choisissez MongoDB si...
Votre schéma de données évolue constamment
Les startups en phase de découverte produit pivotent souvent. Avec MongoDB, modifier la structure des données ne nécessite pas de migrations lourdes. Ajoutez un champ à un document sans toucher aux autres.
Exemple : une startup qui teste différents modèles de profil utilisateur peut stocker des structures hétérogènes (profil V1 et V2 coexistent).
Vous gérez des données semi-structurées ou hiérarchiques
Logs, événements, catalogues produits avec attributs variables, contenus CMS — ces données s'expriment naturellement en JSON. Les documents imbriqués évitent les JOINs coûteux.
Cas typique : un CMS headless où chaque article peut avoir des métadonnées différentes.
Vous anticipez un scaling massif
MongoDB est conçu pour le sharding (répartition sur plusieurs serveurs). Si vous prévoyez des millions d'utilisateurs et des téraoctets de données, MongoDB facilite la croissance horizontale.
Attention : 95% des startups n'atteindront jamais cette échelle. Ne sur-ingénieriez pas.
Vous développez une API temps réel
Les applications IoT, le streaming de données ou les jeux en ligne génèrent des écritures massives avec des lectures simples. MongoDB gère efficacement ce profil de charge.
L'erreur du "ça dépend"
Beaucoup d'articles concluent par "ça dépend de vos besoins". C'est vrai mais peu utile. Voici notre recommandation directe pour les startups marocaines.
Recommandation par défaut : PostgreSQL
Pour 80% des startups, PostgreSQL est le meilleur choix. Raisons :
-
Polyvalence : PostgreSQL gère aussi le JSON (JSONB) avec d'excellentes performances. Vous bénéficiez de la flexibilité quand nécessaire.
-
Écosystème local : Les hébergeurs marocains et africains (Maroc Telecom Cloud, Orange Business Services) proposent PostgreSQL managé. MongoDB Atlas est disponible mais plus cher.
-
Réversibilité : Migrer de PostgreSQL vers MongoDB est plus facile que l'inverse. Commencez structuré, assouplissez si nécessaire.
-
Compétences disponibles : Le vivier de développeurs SQL au Maroc est vaste. Moins de friction au recrutement.
Cas où MongoDB est préférable
- Vous construisez une plateforme de contenu type blog/CMS
- Votre MVP doit être prêt en moins de 4 semaines
- Vous gérez des données IoT ou des logs massifs
- Votre équipe a déjà une forte expertise MongoDB
Considérations techniques avancées
Pour les équipes techniques, voici des éléments de décision supplémentaires.
Performance en écriture
MongoDB excelle sur les insertions massives non transactionnelles. Un benchmark récent montre :
- MongoDB : 50 000 insertions/seconde (documents simples)
- PostgreSQL : 30 000 insertions/seconde (équivalent)
Cependant, pour les mises à jour transactionnelles, PostgreSQL reprend l'avantage grâce à son MVCC optimisé.
Performance en lecture
Les lectures complexes avec jointures favorisent PostgreSQL. Pour les lectures simples par clé primaire, les performances sont comparables.
-- PostgreSQL : requête complexe optimisée
SELECT u.name, COUNT(o.id) as orders, SUM(o.total) as revenue
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.created_at > NOW() - INTERVAL '30 days'
GROUP BY u.id
HAVING COUNT(o.id) > 5;
L'équivalent MongoDB nécessite un pipeline d'agrégation plus verbeux et généralement moins performant sur de gros volumes.
Backup et reprise
Les deux solutions offrent des outils de backup robustes. PostgreSQL propose pg_dump pour les exports logiques et pg_basebackup pour les sauvegardes physiques. MongoDB utilise mongodump et les snapshots Atlas.
Pour une startup, les solutions managées (Supabase, PlanetScale, MongoDB Atlas) gèrent automatiquement les backups.
Coûts réels au Maroc
Une analyse des coûts d'hébergement pour une startup traitant 100 000 requêtes par jour.
PostgreSQL
| Option | Coût mensuel | Inclus | |--------|-------------|--------| | Supabase Free | 0 MAD | 500 MB, 2 projets | | Supabase Pro | 250 MAD | 8 GB, backups 7j | | Neon Serverless | Variable | Pay-per-use | | VPS OVH + PostgreSQL | 180 MAD | 40 GB SSD, à gérer | | Railway | 200 MAD | Managed, auto-scale |
MongoDB
| Option | Coût mensuel | Inclus | |--------|-------------|--------| | Atlas Free | 0 MAD | 512 MB, 1 cluster | | Atlas Dedicated | 570 MAD | 10 GB, backups | | DigitalOcean Managed | 450 MAD | 15 GB, HA | | VPS + auto-hébergé | 180 MAD | À gérer vous-même |
Verdict : PostgreSQL managé coûte en moyenne 30 à 40% moins cher que MongoDB managé pour des performances équivalentes.
Migration : comment passer de l'un à l'autre
Si vous avez fait le mauvais choix initial, voici comment migrer.
De MongoDB vers PostgreSQL
- Analyser le schéma : Identifiez les documents et leurs relations implicites
- Normaliser : Créez les tables relationnelles correspondantes
- Scripts ETL : Utilisez des outils comme pgloader ou des scripts Python
- Test parallèle : Écrivez sur les deux bases pendant 2 semaines
- Bascule : Pointez l'application vers PostgreSQL
Durée typique : 2 à 6 semaines selon la complexité.
De PostgreSQL vers MongoDB
- Identifier les agrégats : Quelles données sont toujours lues ensemble ?
- Dénormaliser : Concevez les documents avec les données imbriquées
- Migration incrémentale : Migrez collection par collection
- Adapter les requêtes : Réécrire les JOINs en lookups ou documents imbriqués
Cette migration est généralement plus complexe car elle implique de repenser le modèle de données.
Intégration avec votre stack
Frameworks populaires
| Framework | PostgreSQL | MongoDB | Recommandation | |-----------|-----------|---------|----------------| | Next.js | Prisma, Drizzle | Mongoose | Prisma (PostgreSQL) | | Django | Native | djongo | Native (PostgreSQL) | | Laravel | Eloquent | jenssegers/mongodb | Eloquent (PostgreSQL) | | Express | Sequelize, Knex | Mongoose | Selon cas d'usage | | Spring Boot | JPA/Hibernate | Spring Data MongoDB | JPA (PostgreSQL) |
Les services de développement logiciel utilisent généralement PostgreSQL par défaut pour les applications métier.
ORMs et productivité
Prisma, l'ORM moderne le plus populaire, offre un support supérieur pour PostgreSQL avec des migrations automatiques, un client typé et une excellente DX. Le support MongoDB existe mais reste moins mature.
Checklist de décision finale
Répondez à ces questions pour guider votre choix :
- [ ] Mes données ont-elles des relations complexes (plusieurs niveaux) ? → PostgreSQL
- [ ] Ai-je besoin de transactions multi-tables garanties ? → PostgreSQL
- [ ] Mon schéma va-t-il changer radicalement chaque mois ? → MongoDB
- [ ] Je stocke principalement des documents JSON/logs ? → MongoDB
- [ ] Mon équipe connaît-elle mieux SQL ou NoSQL ? → Suivre l'expertise
- [ ] Mon budget hébergement est-il limité ? → PostgreSQL
- [ ] Je dois livrer un MVP en moins de 3 semaines ? → MongoDB (ou PostgreSQL + JSONB)
Si vous avez coché majoritairement les options PostgreSQL, partez sur PostgreSQL. Dans le doute, PostgreSQL reste le choix le plus sûr pour une startup qui construit une solution logicielle sur-mesure.
Ressources associées
Vous hésitez entre plusieurs prestataires ? Consultez notre comparatif :
FAQ
Peut-on utiliser PostgreSQL comme base de données NoSQL avec JSONB ?
Oui, et c'est souvent la meilleure approche hybride. PostgreSQL JSONB offre des performances comparables à MongoDB pour le stockage de documents, avec en plus la possibilité de faire des JOINs et des transactions. Vous pouvez stocker des données structurées dans des colonnes classiques et des données flexibles en JSONB dans la même table.
MongoDB est-il vraiment plus rapide que PostgreSQL ?
C'est un mythe répandu. Pour les lectures simples par clé, les performances sont équivalentes. Pour les requêtes analytiques complexes, PostgreSQL est généralement plus rapide. MongoDB excelle uniquement sur les insertions massives non transactionnelles et le scaling horizontal. La plupart des benchmarks montrant MongoDB "plus rapide" comparent des opérations différentes.
Comment gérer les relations dans MongoDB si j'en ai besoin ?
MongoDB propose deux approches. L'embedding consiste à imbriquer les données liées dans le document parent, idéal pour les relations 1-to-few. Le referencing utilise des ObjectId pour référencer d'autres documents, similaire aux clés étrangères mais sans garantie d'intégrité. L'agrégation lookup permet de joindre des collections mais reste moins performante que les JOINs SQL.
Quelle est la meilleure option pour une application mobile backend au Maroc ?
Pour un backend mobile classique (authentification, CRUD, notifications), PostgreSQL via Supabase est le choix optimal. Vous obtenez une base PostgreSQL, une API REST automatique, l'authentification intégrée et le real-time par WebSocket. Le tout pour 0 MAD en tier gratuit ou 250 MAD en production. Firebase avec Firestore (NoSQL) est une alternative si vous êtes dans l'écosystème Google.
Dois-je m'inquiéter de la scalabilité dès le début ?
Non. C'est l'erreur classique de la sur-ingénierie. Un serveur PostgreSQL moderne peut gérer des millions de lignes et des milliers de requêtes par seconde. Très peu de startups marocaines atteindront ces limites. Optimisez pour la productivité développeur et la maintenabilité. Le scaling viendra quand vous aurez prouvé le product-market fit — et à ce moment, vous aurez les ressources pour gérer la migration si nécessaire.
