Concepts génériques
Qu'est-ce qu'une base de données ?
Une base de données est un système organisé permettant de stocker, gérer et récupérer des données de manière structurée et efficace.
Contrairement à des fichiers texte ou CSV, une base de données offre :
- Structure organisée : Les données sont organisées selon un modèle défini
- Accès concurrent : Plusieurs utilisateurs peuvent lire et écrire simultanément
- Intégrité des données : Mécanismes de validation et de contraintes
- Performances : Indexation et optimisation des requêtes
- Sécurité : Gestion des droits d'accès et authentification
En 2025, plus de 90% des applications web et mobiles utilisent une base de données.
Les SGBD relationnels représentent environ 60% du marché, le NoSQL gagnant progressivement du terrain.
Le SGBD (Système de Gestion de Base de Données)
Un SGBD (ou DBMS en anglais pour Database Management System) est un logiciel qui permet de créer, gérer et interroger une base de données.
Le SGBD fait l'interface entre l'application (ou l'utilisateur) et les données stockées sur disque.
Dans ce cours, nous nous concentrerons sur les SGBD relationnels, notamment MySQL (et son fork MariaDB) ainsi que PostgreSQL.
Les deux grandes familles
Il existe deux grandes familles de bases de données :
Bases de données relationnelles (SQL)
Les bases de données relationnelles organisent les données sous forme de tables (aussi appelées relations).
Chaque table contient :
- Des colonnes (champs) définissant le type de données
- Des lignes (enregistrements) contenant les données
- Une clé primaire identifiant de manière unique chaque ligne
Les tables peuvent être reliées entre elles via des clés étrangères, permettant d'établir des relations.
On interroge ces bases avec le langage SQL (Structured Query Language).
Exemples de SGBD relationnels :
- MySQL / MariaDB : MySQL est l'un des SGBD les plus populaires. MariaDB en est un fork compatible, créé par les fondateurs originaux de MySQL.
- PostgreSQL : SGBD open-source réputé pour sa robustesse et ses fonctionnalités avancées.
Bases de données NoSQL
NoSQL signifie "Not Only SQL". Ces bases de données ne suivent pas le modèle relationnel classique.
Il existe plusieurs types de bases NoSQL :
- Bases documentaires : Stockent des documents JSON/XML (ex: MongoDB)
- Bases clé-valeur : Stockent des paires clé-valeur simples (ex: Redis)
- Bases orientées graphes : Optimisées pour les relations complexes (ex: Neo4j)
- Bases orientées colonnes : Stockent les données par colonnes plutôt que par lignes (ex: Cassandra)
Les bases NoSQL sont particulièrement adaptées aux données non structurées, aux gros volumes et à la scalabilité horizontale.
Relationnel vs NoSQL
Voici un comparatif entre les deux approches :
| Caractéristique | Relationnel (SQL) | NoSQL |
|---|---|---|
| Structure | Schéma fixe, tables avec colonnes définies | Schéma flexible, structure variable |
| Relations | Clés étrangères, jointures natives | Relations moins formelles |
| Langage | SQL standardisé | API spécifiques à chaque SGBD |
| Cas d'usage | Applications transactionnelles, données structurées | Big data, données non structurées, temps réel |
Quel type choisir ?
Le choix entre relationnel et NoSQL dépend du cas d'usage :
Choisir une base relationnelle (SQL) si :
- Les données sont structurées et les relations entre elles sont importantes
- L'intégrité des données est critique (banque, e-commerce, gestion)
- Les requêtes complexes avec jointures sont fréquentes
- Le schéma des données est stable
- Conformité ACID nécessaire
Choisir une base NoSQL si :
- Les données sont non structurées ou semi-structurées
- Le schéma évolue fréquemment
- Besoin de scalabilité horizontale massive
- Performance en lecture/écriture prioritaire sur la cohérence immédiate
- Traitement de gros volumes (Big Data, IoT, logs)
Dans ce cours, nous nous concentrons sur les bases de données relationnelles, qui restent le choix par défaut pour la majorité des applications web et métier.