Qu'est-ce qu'une base de données ?
Une base de données est un ensemble organisé de données stocké sur un ordinateur pour que des programmes puissent les retrouver, les ajouter, les modifier et les supprimer rapidement et en toute sécurité. Elle est gérée par un logiciel appelé système de gestion de base de données (SGBD), comme PostgreSQL, MySQL, SQLite ou MongoDB.
Mis à jour le 24 septembre 2026
Quand tu te connectes à un site web, le site doit trouver ton compte parmi des millions d'autres, vérifier ton mot de passe et charger tes réglages, le tout en quelques millisecondes. Il n'ouvre pas un fichier texte pour le lire ligne par ligne. Il envoie une requête comme SELECT * FROM users WHERE email = 'ana@example.com' à une base de données, et la base de données saute directement à la bonne ligne grâce à un index, un peu comme l'index à la fin d'un livre.
Comment fonctionne une base de données
Deux éléments travaillent ensemble. La base de données, ce sont les données, organisées selon une structure fixe. Le système de gestion de base de données (SGBD, ou DBMS en anglais) est le programme qui stocke ces données dans des fichiers, les garde cohérentes et répond aux requêtes. PostgreSQL, MySQL et SQLite sont des SGBD ; ta liste de clients est la base de données.
Dans une base de données relationnelle, les données vivent dans des tables. Chaque table a des colonnes (nom, pays, points) et des lignes (une par utilisateur). Une requête passe par ces étapes :
- Ton programme envoie une requête, généralement écrite en SQL (Structured Query Language, langage de requête structuré).
- Le SGBD analyse la requête et prévoit comment y répondre : quelles tables lire et si un index permet de sauter la plupart des lignes.
- Il lit les données sur le disque par pages de taille fixe (4 096 octets par défaut dans SQLite, 8 Ko dans PostgreSQL), en gardant en mémoire les pages souvent utilisées.
- Il filtre, trie et combine les lignes, puis renvoie le résultat.
Python est livré avec SQLite, donc tu peux faire tourner une vraie base de données ici même :
Kenji 340
Omar 340
Ana 120
users: 4 average points: 222.5
Le programme ne dit jamais comment chercher. Il décrit le résultat qu'il veut, et le SGBD décide comment l'obtenir. C'est la principale différence entre interroger une base de données et écrire une boucle sur une liste.
Les types de bases de données
| Type | Stocke les données sous forme de | Exemples | Usage typique |
|---|---|---|---|
| Relationnelle (SQL) | Tables de lignes et de colonnes, reliées par des clés | PostgreSQL, MySQL, SQLite, Oracle, SQL Server | Utilisateurs, commandes, paiements : la plupart des applications |
| Orientée documents | Documents proches du JSON | MongoDB, Firestore, CouchDB | Enregistrements dont les champs varient de l'un à l'autre |
| Clé-valeur | Une valeur retrouvée par une clé | Redis, DynamoDB | Caches, sessions, compteurs |
| Orientée colonnes | Lignes aux colonnes flexibles réparties sur de nombreux serveurs | Cassandra, HBase | Très gros volumes d'écriture |
| Orientée graphes | Des nœuds et les relations entre eux | Neo4j | Réseaux sociaux, recommandations |
| Séries temporelles | Mesures indexées par le temps | InfluxDB, TimescaleDB | Métriques, relevés de capteurs |
| Vectorielle | Listes de nombres (embeddings) | pgvector, Pinecone, Milvus | Recherche par similarité pour les fonctions d'IA |
Tout ce qui n'est pas relationnel est souvent regroupé sous le nom de NoSQL. Les bases relationnelles restent le choix par défaut de la plupart des applications, car les tables, les contraintes et le SQL couvrent bien un large éventail de problèmes. Beaucoup de produits combinent aussi plusieurs types : PostgreSQL stocke des documents JSON, et pgvector lui ajoute la recherche vectorielle.
Les transactions : tout ou rien
Transférer de l'argent d'Ana à Ben demande deux modifications : ajouter à Ben, retirer à Ana. Si le programme plante entre les deux, de l'argent apparaît de nulle part. Une transaction regroupe des modifications pour qu'elles soient soit toutes enregistrées, soit aucune. Ici, la seconde modification enfreint une règle (un solde ne peut pas passer sous zéro), donc la base de données annule aussi la première :
transfer 30 done
{'ana': 20, 'ben': 30}
transfer 40 failed: CHECK constraint failed: balance >= 0
{'ana': 20, 'ben': 30}
Les 40 de Ben ont été ajoutés puis retirés, donc les totaux restent justes. Les bases relationnelles garantissent quatre propriétés pour les transactions, appelées ACID : atomicité (tout ou rien), cohérence (des règles comme CHECK sont toujours respectées), isolation (deux utilisateurs qui exécutent des transactions en même temps ne voient pas le travail à moitié fini de l'autre) et durabilité (une fois enregistrée, une modification survit à un plantage ou à une coupure de courant).
Base de données, tableur ou fichier
| Fichier texte ou CSV | Tableur | Base de données | |
|---|---|---|---|
| Taille | Ce que ton programme peut charger | 1 048 576 lignes par feuille dans Excel | Des milliards de lignes |
| Plusieurs écritures simultanées | Non | Limité | Oui, avec des verrous et des transactions |
| Trouver un enregistrement | Lire tout le fichier | Filtrer ou chercher | Recherche par index |
| Règles sur les données | Aucune | Validation facultative | Types, contraintes, clés étrangères |
| Poser des questions | Écrire ton propre code | Formules | SQL ou une API de requêtes |
Un tableur est un bon outil pour une personne qui consulte quelques milliers de lignes. Dès que plusieurs programmes ou utilisateurs écrivent des données en même temps, ou que les données doivent respecter des règles, la base de données est le bon outil.
Comment les bases de données protègent les données
Un SGBD écrit chaque modification dans un journal avant de toucher aux fichiers de données (le journal d'écriture anticipée, ou write-ahead log), donc après un plantage, il peut rejouer ou annuler le travail inachevé. PostgreSQL peut stocker un checksum sur chaque page de 8 Ko et signaler un échec de checksum quand un disque défaillant renvoie des données abîmées. Les utilisateurs et les permissions décident qui peut lire ou modifier quelles tables, et la réplication garde des copies sur d'autres serveurs. Les programmes doivent aussi passer les entrées des utilisateurs en paramètres, comme les marqueurs ? ci-dessus, et jamais en les collant dans le texte SQL, car c'est ainsi que se produisent les attaques par injection SQL.
Idées reçues
- « SQL est une base de données. » SQL est le langage. PostgreSQL, MySQL et SQLite sont des bases de données qui le comprennent.
- « NoSQL veut dire pas de SQL du tout. » Le terme se lit généralement comme « not only SQL » (pas seulement SQL), et plusieurs bases NoSQL ont des langages de requête qui ressemblent au SQL, comme le CQL de Cassandra.
- « Une base de données, c'est toujours un gros serveur. » SQLite est un simple fichier qu'un programme ouvre directement, sans aucun serveur. Il tourne dans chaque téléphone Android et iOS.
- « Les données d'une base de données sont à l'abri pour toujours. » Une base de données protège contre les plantages, pas contre quelqu'un qui lance un
DELETEpar erreur. Les sauvegardes restent nécessaires.
Pour aller plus loin
Le cours SQL enseigne les requêtes à partir du premier SELECT. La documentation SQLite couvre les étapes suivantes : ce qu'est SQLite, créer une table, les index et se protéger de l'injection SQL. Pour voir comment les données sont organisées sur le disque, lis qu'est-ce qu'un octet, et la page checksum explique comment les pages abîmées sont détectées.