Introduction

Programme

Notions : Système de gestion de bases de données relationnelles.

Capacités attendues : Identifier les services rendus par un système de gestion de bases de données relationnelles : persistence des données, gestion des accès concurrents, efficacité de traitement des requètes, sécurisation des accès.

Remarques : Il s’agit de comprendre le rôle et les enjeux des différents services sans en détailler le fonctionnement.

Qu’est-ce qu’un SGBD ?

Définition

Un Système de Gestion de Bases de Données (SGBD) est un logiciel qui permet de :

Un SGBDR (Système de Gestion de Bases de Données Relationnelles) est un SGBD qui implémente le modèle relationnel.

Exemples de SGBDR

Quelques SGBDR largement utilisés :

Chacun a ses spécificités, mais tous respectent les principes du modèle relationnel et offrent des services similaires.

Exemples de SDGB non relationnels

Non-relationnel = on libère une partie des contraintes du modèle relationnel pour gagner en performance ou en flexibilité.

Quelques SGBD non relationnels (NoSQL) :

Les services rendus par un SGBDR

Vue d’ensemble

Un SGBDR rend quatre services essentiels :

  1. Persistance des données
  2. Gestion des accès concurrents
  3. Efficacité de traitement des requêtes
  4. Sécurisation des accès

Persistance des données

Persistance

Le SGBDR assure la persistance des données en les stockant sur un support durable (disque dur, SSD).

Garanties offertes :

Transactions et atomicité

Le SGBDR garantit que les modifications puissent être effectuées de manière atomique : soit elles réussissent toutes, soit aucune n’est appliquée.

Exemple : transfert d’argent entre deux comptes bancaires

Si une panne survient entre les deux opérations, on pourrait perdre 100€ ! Le SGBDR garantit que soit les deux opérations sont effectuées, soit aucune ne l’est.

Cela se fait via le concept de transaction :

DÉBUTER_TRANSACTION
  débiter(compte_A, 100)
  créditer(compte_B, 100)
VALIDER_TRANSACTION

Si une erreur survient, on peut annuler toutes les modifications en annulant la transaction.

Gestion des accès concurrents

Le problème

Dans un système réel, plusieurs utilisateurs ou processus accèdent simultanément à la base de données.

Exemple : bibliothèque avec un système de réservation en ligne

Autre exemple : compteur de vues sur un site web

1. Lire le compteur : 1000
2. Incrémenter : 1001
3. Écrire la nouvelle valeur : 1001

Si deux utilisateurs font cela simultanément, on risque de perdre un incrément1.

Solution : contrôle de concurrence

Le SGBDR implémente des mécanismes de contrôle de concurrence qui permettent de gérer les accès simultanés aux données.

Principaux mécanismes :

Responsabilité du développeur

Attention : le SGBDR ne peut garantir la cohérence que si le développeur conçoit correctement son application !

Exemple du compteur de vues :

# ❌ INCORRECT : le SGBDR ne peut rien faire
compteur = lire_compteur()      # 1. Lire : 1000
compteur = compteur + 1         # 2. Incrémenter en Python
écrire_compteur(compteur)       # 3. Écrire : 1001
# Si deux clients font ça en même temps, une vue est perdue !
# ✓ CORRECT : opération atomique dans la base
incrémenter_compteur_dans_la_base()
# Le SGBDR garantit que les deux incréments sont bien pris en compte

Le développeur doit utiliser les mécanismes du SGBDR (transactions, opérations atomiques) pour que celui-ci puisse assurer la cohérence.

Efficacité de traitement des requêtes

Le problème

Une base de données peut contenir des millions voire des milliards de n-uplets.

Sans optimisation, rechercher une information pourrait nécessiter de parcourir toute la base : inacceptable pour des applications réactives.

Exemple : rechercher un livre par son ISBN dans une base de 100 000 livres. Sans optimisation, il faudrait examiner jusqu’à 100 000 livres !

Solution : optimisation des requêtes

Le SGBDR implémente de nombreuses techniques pour accélérer les requêtes :

Avec un index sur l’ISBN, la recherche d’un livre se fait en temps logarithmique
log₂(100 000) ≈ 17 comparaisons au lieu de 100 000 !

Le développeur peut créer des index sur les attributs fréquemment recherchés :

créer_index(relation: Livres, attribut: isbn)

L’optimiseur de requêtes analyse chaque requête et choisit automatiquement la meilleure stratégie parmi plusieurs possibles.

Statistiques et analyse

Le SGBDR maintient des statistiques sur les données :

Ces statistiques permettent à l’optimiseur de prendre les bonnes décisions, comme choisir entre plusieurs index possibles ou décider de l’ordre des jointures.

Sécurisation des accès

Le problème

Une base de données contient souvent des informations sensibles :

Il faut pouvoir contrôler qui peut accéder à quelles données et faire quelles opérations. Exemple : un service qui calcule des statistiques de visites sur un site n’a pas besoin d’accéder aux informations de paiement des clients !

Solution : gestion des droits

Le SGBDR implémente un système de gestion des droits d’accès :

Les droits peuvent être définis de manière très fine :

Exercices

Rappel

Service Rôle
Efficacité Optimiser les temps de réponse
Persistance Conserver les données durablement
Sécurisation Contrôler les accès
Accès concurrents Gérer les accès simultanés

Exercice 1

Pour chacune des situations suivantes, identifier quel(s) service(s) du SGBDR est (sont) principalement sollicité(s) :

  1. Un utilisateur consulte son historique d’achats sur un site e-commerce
  2. 1000 personnes réservent simultanément des places pour un concert
  3. Une application mobile fonctionne hors ligne puis synchronise ses données
  4. Un programme génère des statistiques de fréquentation d’un site web à partir de 40 millions d’enregistrements de visites

Exercice 2

Expliquer pourquoi chacun des services suivants est indispensable pour une application bancaire :

Donner un exemple de problème qui pourrait survenir si l’un de ces services était défaillant.


  1. Les deux lisent 1000, les deux écrivent 1001, total 1001 au lieu de 1002 : une vue est “perdue”↩︎