Skip to main content

Bases de Données Relationnelles (SQL)

Les bases de données relationnelles stockent les données dans des tables composées de lignes et de colonnes. Les relations entre les différentes tables sont définies par des clés (primaires et étrangères), permettant de lier logiquement les informations. Elles utilisent le langage SQL (Structured Query Language) pour la définition, la manipulation et la requête des données. Concepts Clés : ACID Leur principal avantage réside dans la garantie des propriétés ACID (Atomicité, Cohérence, Isolation, Durabilité), assurant l’intégrité des données, même en cas d’erreurs ou de pannes.
  • Atomicité : Une transaction est tout ou rien (elle est entièrement exécutée, ou pas du tout).
  • Cohérence : Une transaction amène la base de données d’un état valide à un autre.
  • Isolation : L’exécution concurrente de transactions donne les mêmes résultats que si elles étaient exécutées séquentiellement.
  • Durabilité : Une fois qu’une transaction est commitée, elle persiste, même en cas de panne système.
Avantages
  • Intégrité des Données : Forte garantie grâce aux transactions ACID, aux contraintes de schéma et aux clés étrangères.
  • Flexibilité des Requêtes : SQL permet des requêtes complexes (Jointures, agrégations) pour relier différentes entités.
  • Maturité : Outils, documentation et expertise très développés.
Inconvénients
  • Scalabilité Verticale : Elles sont historiquement plus difficiles à scaler horizontalement (répartir la charge sur plusieurs serveurs) ; elles nécessitent souvent d’augmenter la puissance du serveur unique (scaling up).
  • Rigidité du Schéma : Les changements de schéma peuvent être coûteux et lents sur de grandes bases de données.
Exemples PostgreSQL, MySQL, Oracle, SQL Server.

Bases de Données NoSQL (Not Only SQL)

Les bases de données NoSQL ont été développées pour répondre aux limitations de scalabilité et de flexibilité des bases relationnelles, en particulier face aux grands volumes de données non structurées ou semi-structurées. Elles sacrifient souvent la garantie ACID complète au profit du modèle BASE. Concepts Clés : BASE
  • Basically Available : Le système est disponible la plupart du temps.
  • Soft state : L’état du système peut changer avec le temps, même sans aucune entrée.
  • Eventually Consistent : Les données finiront par être cohérentes entre tous les nœuds, mais cela prendra du temps.

Base de Données Orientée Document

Stocke les données dans des documents (souvent au format JSON ou BSON) qui regroupent toutes les informations d’une entité. Les documents sont auto-descriptifs et n’ont pas de schéma rigide, ce qui les rend très flexibles. Avantages
  • Flexibilité du Schéma : Facile à modifier et à itérer rapidement sur la structure des données.
  • Alignement avec le Code : Le format (JSON) correspond naturellement aux objets utilisés dans la programmation orientée objet.
  • Performance : Les requêtes sont rapides pour les documents complets (pas de jointures nécessaires).
Inconvénients
  • Relations Complexes : La gestion des relations entre documents (équivalent des jointures SQL) est plus complexe et doit être gérée au niveau de l’application.
  • Transactions Multi-Documents : Les garanties transactionnelles sont généralement limitées à un seul document.
Cas d’Usage Catalogues de produits, gestion de contenu, profils utilisateur, Microservices. Exemples MongoDB, Couchbase, Firestore.

Base de Données Clé-Valeur (Key-Value)

Le modèle le plus simple : chaque donnée (la valeur) est associée à une clé unique. Il est optimisé pour les opérations de lecture et d’écriture extrêmement rapides. Avantages
  • Vitesse Ultime : Extrêmement rapide pour l’accès et la récupération (simplement une recherche de clé).
  • Scalabilité Extrême : Facile à distribuer horizontalement.
Inconvénients
  • Requêtes Limitées : Impossible de faire des recherches basées sur le contenu de la valeur ou des requêtes complexes.
  • Faible Intégrité : Aucune garantie de schéma ou de relation.
Cas d’Usage Cache (stockage de sessions utilisateur), compteurs, gestion de paniers d’achat en ligne. Exemples Redis, Memcached, DynamoDB (mode Key-Value).

Base de Données Orientée Graph

Ce modèle se concentre sur les relations entre les données. Les données sont stockées sous forme de nœuds (entités) et d’arêtes (relations) qui décrivent comment les nœuds sont connectés. Avantages
  • Performance pour les Relations : Les requêtes impliquant des relations complexes (traversals) sont exécutées de manière exponentiellement plus rapide qu’avec des jointures SQL répétées.
  • Modélisation Naturelle : Idéal pour les données naturellement interconnectées.
Inconvénients
  • Moins de Maturité : Écosystème plus petit et moins d’outils que SQL.
  • Requêtes Lourdes : Pas adapté pour les agrégations massives et les analyses tabulaires.
Cas d’Usage Réseaux sociaux (qui est ami avec qui), moteurs de recommandation (les gens qui aiment ceci aiment aussi cela), détection de fraude. Exemples Neo4j, Amazon Neptune.

Tableau Récapitulatif

ModèleStructure de DonnéesScalabilité TypiqueGarantie d’IntégritéCas d’Usage Idéal
Relationnel (SQL)Tables, Lignes, ColonnesVerticale (Scaling Up)ACID (Fort)Systèmes financiers, ERP, tout ce qui nécessite des transactions complexes.
NoSQL (Document)Documents (JSON)HorizontaleBASE (Faible/Moyen)Gestion de contenu, catalogues flexibles, profils utilisateurs.
NoSQL (Clé-Valeur)Clé unique / ValeurHorizontale (Extrême)BASE (Faible)Caching, gestion des sessions, compteurs.
NoSQL (Graph)Nœuds et ArêtesHorizontaleBASE (Moyen)Moteurs de recommandation, réseaux sociaux, détection de fraude.