Dans cet article
- Les bases SQL utilisent un schéma rigide et des relations, tandis que les bases NoSQL offrent une flexibilité de structure adaptée aux données non structurées
- MySQL et PostgreSQL restent les SGBD relationnels les plus utilisés avec plus de 60 % de parts de marché combinées en 2026
- MongoDB domine le marché NoSQL avec plus de 30 % d’adoption parmi les développeurs selon le sondage Stack Overflow 2025
- Les bases SQL garantissent les propriétés ACID (Atomicité, Cohérence, Isolation, Durabilité), essentielles pour les transactions financières
- Le choix entre SQL et NoSQL dépend avant tout de la nature des données, du volume et des besoins de scalabilité de votre projet
- Une architecture hybride combinant SQL et NoSQL est adoptée par plus de 40 % des entreprises pour tirer parti des avantages de chaque technologie
Sommaire
En tant que formatrice BTS SIO et développeuse web, je constate chaque année que la question du choix entre SQL et NoSQL revient systématiquement chez mes étudiants. Ce n’est pas surprenant : le choix de la base de données conditionne toute l’architecture d’un projet. J’ai vu des projets échouer simplement parce que l’équipe avait choisi le mauvais type de base de données dès le départ.
Dans ce guide, je vous propose un comparatif complet et pragmatique entre les bases de données SQL et NoSQL. Mon objectif est simple : vous donner les clés pour faire le bon choix selon votre contexte, que vous prépariez votre BTS SIO ou que vous travailliez sur un projet professionnel.
Comprendre les bases de données SQL
Les bases de données SQL (Structured Query Language) reposent sur le modèle relationnel inventé par Edgar F. Codd en 1970. Le principe est clair : les données sont organisées en tables composées de lignes et de colonnes, reliées entre elles par des clés primaires et étrangères.
Ce qui rend les bases SQL si fiables, c’est le respect des propriétés ACID :
- Atomicité : une transaction s’exécute entièrement ou pas du tout
- Cohérence : la base passe toujours d’un état valide à un autre état valide
- Isolation : les transactions concurrentes ne s’interfèrent pas
- Durabilité : une fois validée, une transaction est permanente
Concrètement, quand vous effectuez un virement bancaire, vous voulez être certain que le débit et le crédit se font ensemble ou pas du tout. C’est exactement ce que garantit le modèle ACID.
Les SGBD relationnels les plus utilisés aujourd’hui sont MySQL, PostgreSQL, MariaDB, Microsoft SQL Server et Oracle Database. PostgreSQL, en particulier, connaît une croissance remarquable grâce à ses fonctionnalités avancées comme le support natif du JSON et les extensions géospatiales avec PostGIS.
Voici un exemple simple de création de table et de requête en SQL :
CREATE TABLE etudiants (
id INT PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(100) NOT NULL,
prenom VARCHAR(100) NOT NULL,
option_sio ENUM('SLAM', 'SISR') NOT NULL,
date_inscription DATE DEFAULT CURRENT_DATE
);
SELECT nom, prenom, option_sio
FROM etudiants
WHERE option_sio = 'SLAM'
ORDER BY nom ASC;
La force du SQL réside dans sa standardisation. Le langage SQL est normalisé (ISO/IEC 9075) et les compétences acquises sur un SGBD sont largement transférables vers un autre. Pour vos projets en API REST avec Python, une base SQL s’intègre naturellement avec des ORM comme SQLAlchemy ou Django ORM.

Comprendre les bases de données NoSQL
Le terme NoSQL signifie « Not Only SQL ». Contrairement à une idée reçue, il ne s’agit pas de rejeter le SQL mais de proposer des alternatives adaptées à des besoins spécifiques que le modèle relationnel ne couvre pas efficacement.
Les bases NoSQL se déclinent en quatre grandes familles :
Les bases documentaires stockent les données sous forme de documents JSON ou BSON. MongoDB est la référence dans cette catégorie. Chaque document peut avoir une structure différente, ce qui offre une flexibilité considérable.
Les bases clé-valeur fonctionnent comme un dictionnaire géant. Redis et Amazon DynamoDB en sont les représentants principaux. Elles excellent pour le cache et les sessions utilisateur avec des temps de réponse inférieurs à la milliseconde.
Les bases colonnes comme Apache Cassandra et HBase organisent les données par colonnes plutôt que par lignes. Elles sont optimisées pour les requêtes analytiques sur de grands volumes de données.
Les bases graphe comme Neo4j modélisent les données sous forme de nœuds et de relations. Elles sont idéales pour les réseaux sociaux, les systèmes de recommandation et la détection de fraude.
Voici un exemple d’insertion et de requête avec MongoDB :
// Insertion d'un document
db.etudiants.insertOne({
nom: "Dupont",
prenom: "Marie",
option_sio: "SLAM",
competences: ["Python", "JavaScript", "SQL"],
projets: [
{
titre: "Gestion de tickets",
technologies: ["Django", "PostgreSQL"],
note: 16
}
]
});
// Requête avec filtre
db.etudiants.find({
"competences": "Python",
"projets.note": { $gte: 14 }
});
Remarquez comment le document peut contenir des tableaux imbriqués et des sous-documents. En SQL, cette même structure nécessiterait trois tables distinctes (étudiants, compétences, projets) avec des jointures.
Les bases NoSQL suivent généralement le théorème CAP (Consistency, Availability, Partition tolerance) formulé par Eric Brewer : un système distribué ne peut garantir simultanément que deux de ces trois propriétés. La plupart des bases NoSQL privilégient la disponibilité et la tolérance au partitionnement, au détriment de la cohérence immédiate, en adoptant un modèle de cohérence éventuelle (eventual consistency).
Comparatif détaillé SQL vs NoSQL
Pour clarifier les différences fondamentales, voici un tableau comparatif synthétique que j’utilise régulièrement en cours :
| Critère | SQL (Relationnel) | NoSQL |
|---|---|---|
| Structure des données | Schéma fixe (tables, colonnes) | Schéma flexible (documents, clés, graphes) |
| Langage de requête | SQL standardisé (ISO) | API spécifiques à chaque SGBD |
| Scalabilité | Verticale (plus de puissance serveur) | Horizontale (ajout de serveurs) |
| Transactions | ACID natif | BASE (cohérence éventuelle) |
| Relations complexes | Jointures natives performantes | Pas de jointures (dénormalisation) |
| Volume de données | Jusqu’à quelques To efficacement | Conçu pour le pétaoctet et au-delà |
| Apprentissage | SQL universel, large communauté | Syntaxe variable selon le SGBD |
| Cas d’usage principal | Applications transactionnelles, ERP, CRM | Big Data, temps réel, IoT, cache |
| Exemples populaires | PostgreSQL, MySQL, MariaDB | MongoDB, Redis, Cassandra, Neo4j |
| Coût d’hébergement | Modéré (un seul serveur puissant) | Variable (cluster de serveurs) |
Ce tableau met en évidence un point essentiel : il n’y a pas de gagnant absolu. Chaque technologie excelle dans son domaine. Le vrai enjeu est d’aligner le choix technique avec les contraintes du projet.
Un point que je souligne toujours à mes étudiants : la frontière entre SQL et NoSQL s’estompe. PostgreSQL supporte désormais nativement le type JSONB pour stocker des documents, et MongoDB propose depuis la version 4.0 des transactions multi-documents ACID. Les deux mondes convergent progressivement.

Quand choisir une base SQL
Après des années de pratique, je recommande systématiquement une base SQL dans les situations suivantes :
Données fortement structurées et relationnelles. Si vos données suivent un schéma clair avec des relations bien définies (clients, commandes, produits, factures), le modèle relationnel s’impose. Les jointures SQL permettent de croiser ces données efficacement sans duplication.
Intégrité des données critique. Pour les applications bancaires, médicales, comptables ou tout système où une incohérence de données peut avoir des conséquences graves, les garanties ACID sont indispensables. Je ne plaisante pas avec ça : un système de gestion de stock qui perd une transaction peut coûter des milliers d’euros.
Requêtes complexes et reporting. Le SQL excelle pour les agrégations, les sous-requêtes et les analyses croisées. Si votre application nécessite des rapports élaborés avec des calculs sur plusieurs tables, une base relationnelle sera bien plus performante.
Projets BTS SIO et applications web classiques. Pour la majorité des projets que vous développerez en formation, une base SQL comme MySQL ou PostgreSQL est le choix le plus pertinent. Les langages de programmation populaires disposent tous d’excellents drivers et ORM pour les bases relationnelles.
Voici un exemple concret de requête complexe que seul SQL gère élégamment :
SELECT
c.nom AS client,
COUNT(cmd.id) AS nombre_commandes,
SUM(cmd.total_ttc) AS chiffre_affaires,
AVG(cmd.total_ttc) AS panier_moyen
FROM clients c
JOIN commandes cmd ON c.id = cmd.client_id
WHERE cmd.date_commande >= '2026-01-01'
GROUP BY c.id, c.nom
HAVING COUNT(cmd.id) >= 5
ORDER BY chiffre_affaires DESC
LIMIT 10;
Cette requête identifie les 10 meilleurs clients de l’année en une seule instruction. En NoSQL, il faudrait généralement plusieurs requêtes ou un pipeline d’agrégation plus verbeux.
Mon conseil pratique : si vous hésitez et que votre volume de données reste sous les 10 millions de lignes, partez sur PostgreSQL. C’est le couteau suisse des bases de données en 2026 : robuste, performant, gratuit et compatible avec pratiquement tous les frameworks. Vous pourrez configurer votre environnement de développement en suivant notre guide sur les meilleurs IDE et éditeurs de code.
Quand choisir une base NoSQL
Le NoSQL prend tout son sens dans des contextes bien précis que je rencontre régulièrement en mission :
Données non structurées ou semi-structurées. Logs applicatifs, données IoT, contenus générés par les utilisateurs, catalogues produits avec des attributs variables : toutes ces données se prêtent mal à un schéma relationnel rigide. Un document MongoDB peut stocker un produit avec 5 attributs et un autre avec 50, sans modification de schéma.
Scalabilité horizontale massive. Quand votre application doit gérer des millions de requêtes par seconde (réseaux sociaux, jeux en ligne, plateformes de streaming), la scalabilité horizontale du NoSQL permet d’ajouter des serveurs plutôt que de mettre à niveau un seul serveur coûteux. Cassandra, par exemple, est conçu pour fonctionner sur des clusters de centaines de nœuds.
Cache et sessions. Redis est devenu un standard pour la gestion du cache applicatif et des sessions utilisateur. Avec des temps de réponse moyens de 0,1 à 0,5 milliseconde, il surpasse largement toute base relationnelle pour ces usages. Si vous développez une API REST, Redis est un complément précieux pour améliorer les performances.
Données en temps réel et événements. Les applications de messagerie, le suivi en temps réel, les tableaux de bord en direct nécessitent une base capable d’ingérer et de restituer des données à très haute fréquence. Les bases orientées colonnes comme Apache Cassandra peuvent écrire plusieurs centaines de milliers d’opérations par seconde par nœud.
Relations complexes et graphes. Si votre application modélise un réseau (social, logistique, fraude), une base graphe comme Neo4j sera infiniment plus performante que des jointures SQL récursives. Trouver les amis d’amis d’un utilisateur prend quelques millisecondes en Neo4j contre potentiellement plusieurs secondes en SQL.
Exemple de pipeline d’agrégation MongoDB :
db.commandes.aggregate([
{ $match: { date: { $gte: ISODate("2026-01-01") } } },
{ $group: {
_id: "$client_id",
total: { $sum: "$montant" },
nb_commandes: { $sum: 1 }
}},
{ $sort: { total: -1 } },
{ $limit: 10 }
]);
Architecture hybride : le meilleur des deux mondes
Dans la réalité professionnelle, la plupart des projets d’envergure combinent SQL et NoSQL. C’est ce qu’on appelle la persistence polyglotte (polyglot persistence). L’idée est simple : utiliser le bon outil pour chaque type de données.
Voici une architecture que j’ai mise en place sur plusieurs projets et que je présente en cours :
- PostgreSQL pour les données métier critiques : utilisateurs, commandes, factures, comptabilité
- Redis pour le cache applicatif, les sessions et les files d’attente
- MongoDB ou Elasticsearch pour les logs, la recherche full-text et les données analytiques
- Neo4j pour les recommandations et l’analyse de graphes si nécessaire
Cette approche demande une certaine maturité technique. Il faut gérer la synchronisation entre les bases, la cohérence des données et la complexité opérationnelle supplémentaire. Pour un projet BTS SIO, je recommande de commencer avec une seule base et d’ajouter de la complexité uniquement si le besoin est avéré.
Un exemple concret : une plateforme e-commerce peut stocker ses produits et commandes dans PostgreSQL pour l’intégrité transactionnelle, utiliser Redis pour mettre en cache les pages produits les plus consultées (réduisant le temps de chargement de 300 ms à 5 ms), et Elasticsearch pour offrir une recherche produit rapide et pertinente avec des suggestions automatiques.
Pour déployer ce type d’architecture, la maîtrise de Linux et du versioning avec Git est indispensable. Vous pouvez même monter un homelab étudiant pour expérimenter cette architecture en conditions réelles.

Exemples pratiques et cas concrets BTS SIO
Pour ancrer ces concepts dans la réalité de votre formation, voici des scénarios que je propose régulièrement à mes étudiants :
Projet 1 : Application de gestion de tickets (GLPI-like). Base recommandée : MySQL ou PostgreSQL. Les tickets sont des entités structurées avec des relations claires (ticket, utilisateur, catégorie, historique). L’intégrité référentielle est cruciale. Si vous souhaitez approfondir ce type de projet, consultez notre guide sur l’installation et la configuration de GLPI.
Projet 2 : Agrégateur de flux RSS avec recherche. Base recommandée : MongoDB + Elasticsearch. Les articles proviennent de sources variées avec des structures différentes. MongoDB stocke les articles bruts, Elasticsearch indexe le contenu pour la recherche full-text.
Projet 3 : Dashboard de monitoring réseau. Base recommandée : InfluxDB (time-series NoSQL) + PostgreSQL. Les métriques réseau arrivent en flux continu à haute fréquence : une base time-series est optimisée pour ce cas. PostgreSQL gère la configuration et les utilisateurs. Ce type de projet s’intègre parfaitement dans un contexte de cybersécurité.
Projet 4 : API REST pour une application mobile. Base recommandée : PostgreSQL. Une API REST classique manipule des ressources structurées. PostgreSQL offre le meilleur compromis entre performance, fiabilité et simplicité. Couplé à un framework comme Django ou Flask en Python, vous obtenez un stack robuste et maintenable.
Pour chacun de ces projets, je recommande de documenter le choix technique dans le cahier des charges. Consultez notre guide sur le cahier des charges projet informatique pour structurer cette documentation.
Outils et ressources pour débuter
Pour commencer à pratiquer concrètement, voici les outils que je recommande à mes étudiants :
Pour SQL :
- PostgreSQL : installez-le localement ou via Docker. L’outil graphique pgAdmin facilite l’exploration des données
- MySQL Workbench : interface graphique complète pour MySQL/MariaDB, idéale pour la conception de schémas
- DBeaver : client universel gratuit compatible avec tous les SGBD relationnels
- SQLite : base embarquée sans serveur, parfaite pour les prototypes et les petits projets
Pour NoSQL :
- MongoDB Atlas : cluster gratuit dans le cloud pour débuter sans installation (tier M0 gratuit avec 512 Mo de stockage)
- MongoDB Compass : interface graphique pour explorer et manipuler vos collections
- Redis Cloud : instance Redis gratuite en ligne pour tester le cache applicatif
- Neo4j Aura : base graphe gratuite dans le cloud pour expérimenter les requêtes Cypher
Pour votre environnement de développement, vous pouvez utiliser la virtualisation pour isoler vos installations. Un serveur Linux maison est également une excellente solution pour héberger vos bases de données de test.
Je recommande aussi fortement de pratiquer sur des plateformes en ligne comme SQLZoo, HackerRank SQL et la MongoDB University qui propose des cours gratuits certifiants. Ces certifications sont un atout pour votre CV : découvrez d’autres certifications informatique gratuites pour compléter votre profil.
Pour travailler efficacement, choisissez un bon éditeur de code avec des extensions SQL comme SQLTools pour VS Code. Et n’oubliez pas de versionner vos scripts de migration de base de données avec Git.
À retenir
- Choisissez SQL (PostgreSQL ou MySQL) pour les données structurées avec des relations et des besoins d’intégrité transactionnelle
- Optez pour NoSQL (MongoDB, Redis) quand vos données sont non structurées, volumineuses ou nécessitent une scalabilité horizontale
- Commencez toujours par modéliser vos données avant de choisir la technologie : le schéma dicte l’outil, pas l’inverse
- En cas de doute, PostgreSQL est le choix par défaut le plus sûr grâce à son support natif du JSON et ses performances polyvalentes
- Documentez votre choix de base de données dans le cahier des charges en justifiant les critères techniques retenus
Questions fréquentes
Quelle est la principale différence entre SQL et NoSQL ?
La différence fondamentale réside dans la structure des données. Les bases SQL utilisent un schéma rigide avec des tables, des colonnes et des relations définies à l’avance. Les bases NoSQL adoptent un schéma flexible qui permet de stocker des données sous forme de documents, de paires clé-valeur, de colonnes ou de graphes. Les bases SQL garantissent les propriétés ACID pour l’intégrité des transactions, tandis que les bases NoSQL privilégient la disponibilité et la scalabilité horizontale avec un modèle de cohérence éventuelle.
MongoDB peut-il remplacer MySQL pour tous les projets ?
Non, MongoDB ne remplace pas MySQL dans tous les cas. MongoDB excelle pour les données non structurées, les schémas évolutifs et la scalabilité horizontale. En revanche, MySQL reste supérieur pour les applications nécessitant des transactions complexes, des jointures multiples et une intégrité référentielle stricte (applications bancaires, ERP, CRM). Depuis sa version 4.0, MongoDB supporte les transactions ACID multi-documents, mais ses performances dans ce domaine restent inférieures à celles d’un SGBD relationnel natif.
Quelle base de données choisir pour un projet BTS SIO ?
Pour la majorité des projets BTS SIO, je recommande PostgreSQL ou MySQL. Ces bases relationnelles couvrent les besoins classiques des projets de formation : gestion d’utilisateurs, CRUD, relations entre entités et requêtes analytiques. PostgreSQL offre un avantage supplémentaire avec son support natif du JSON (JSONB), ce qui permet d’expérimenter des concepts NoSQL sans changer de technologie. Si votre projet implique du cache ou des sessions temps réel, ajoutez Redis en complément.
Les bases NoSQL sont-elles plus rapides que les bases SQL ?
La vitesse dépend du cas d’usage, pas de la technologie en soi. Les bases NoSQL comme Redis sont effectivement plus rapides pour les lectures simples par clé (moins d’une milliseconde). Cependant, pour les requêtes complexes impliquant des jointures, des agrégations et du filtrage multicritère, les bases SQL optimisées avec des index appropriés sont souvent plus performantes. MongoDB peut traiter des millions de lectures simples par seconde sur un cluster, mais une requête équivalente à un JOIN SQL complexe sera généralement moins efficace.
Comment apprendre SQL et NoSQL gratuitement en 2026 ?
Plusieurs ressources gratuites de qualité existent. Pour SQL, commencez par SQLZoo et les exercices HackerRank SQL, puis installez PostgreSQL en local pour pratiquer. Pour NoSQL, la MongoDB University propose des cours certifiants gratuits couvrant les fondamentaux jusqu’à l’administration avancée. Redis University offre également des formations gratuites. Enfin, montez un homelab avec Docker pour déployer et administrer vos propres instances : c’est la méthode d’apprentissage la plus efficace pour maîtriser les deux technologies.
Peut-on utiliser SQL et NoSQL dans le même projet ?
Oui, c’est même une pratique courante appelée persistence polyglotte (polyglot persistence). Plus de 40 % des entreprises combinent plusieurs types de bases de données. Un exemple typique : PostgreSQL pour les données transactionnelles (comptes, commandes), Redis pour le cache et les sessions, et Elasticsearch pour la recherche full-text. Cette approche permet d’utiliser le meilleur outil pour chaque type de données, mais elle augmente la complexité opérationnelle. Pour un projet débutant, commencez avec une seule base et ajoutez de la complexité progressivement.
Formatrice IT indépendante depuis 2016, ancienne étudiante BTS SIO SLAM. 6 ans d'expérience en entreprise.