Bases des bases de données

Lors de la mise à jour des données, de nombreux SGBD enregistrent les modifications dans un journal (log) et écrivent ce journal sur un support de stockage non volatil avant la base de données elle-même (WAL : journalisation à écriture anticipée, write-ahead logging). Quelle est la principale raison de cette approche ?

  1. AMême si une panne survient, le journal permet de rejouer les mises à jour validées et d'annuler celles qui ne l'étaient pas, ce qui restaure un état correct
  2. BÉcrire d'abord le journal réduit la taille de la base de données elle-même
  3. CLe journal peut servir d'index pour les recherches des instructions SELECT
Afficher la réponse et l'explication

Réponse : A. Même si une panne survient, le journal permet de rejouer les mises à jour validées et d'annuler celles qui ne l'étaient pas, ce qui restaure un état correct

Pour des raisons de performances, les pages de la base de données sont mises à jour dans des tampons en mémoire et écrites sur le support de stockage un peu plus tard. Au moment d'une panne, le stockage peut donc contenir un mélange de mises à jour validées pas encore écrites et de mises à jour non validées déjà écrites. Si les valeurs avant et après chaque mise à jour sont enregistrées dans un journal et que le journal est écrit avant la base de données elle-même, on peut, après une panne, utiliser le journal pour rejouer les mises à jour validées (rollforward, REDO) et annuler celles qui ne l'étaient pas (rollback, UNDO), ce qui restaure un état correct. Une validation peut être considérée comme terminée dès que l'enregistrement de validation de la transaction est écrit dans le journal ; il n'est donc pas nécessaire d'écrire immédiatement les pages de la base à chaque fois, ce qui préserve les performances. Ce mécanisme sous-tend l'atomicité et la durabilité des propriétés ACID.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases des bases de données

  1. On considère les transactions T1 à T5 ; un point de contrôle (checkpoint) a été pris une fois avant qu'une panne ne survienne. T1 a démarré et a été validée avant le point de contrôle. T2 et T3 ont démarré avant le point de contrôle ; T2 a été validée après le point de contrôle mais avant la panne, et T3 n'était pas validée au moment de la panne. T4 et T5 ont démarré après le point de contrôle ; T4 a été validée avant la panne, et T5 ne l'était pas. Lors de la reprise après la panne, quelles transactions faut-il rejouer (rollforward) à l'aide du journal ?
  2. On a créé un index en arbre B+ sur la colonne NumMembre d'une table Membre de 1 million de lignes. Quelle combinaison associe correctement l'effet que l'on peut généralement attendre et son coût ?
  3. Pour une table Membre de 1 million de lignes, on envisage de créer un index en arbre B+ sur chacune des colonnes NumMembre (toutes différentes), Prefecture (47 valeurs) et Sexe (2 valeurs, réparties à peu près à moitié). Lors d'une recherche qui précise dans la clause WHERE la valeur d'une seule colonne, sur quelle colonne un index sera-t-il probablement le moins efficace ?
  4. Parmi les bases de données dites NoSQL, quelle description des caractéristiques d'une base clé-valeur est généralement correcte ?
  5. Quelle description du théorème CAP est appropriée pour une base de données distribuée qui conserve des copies des données sur plusieurs serveurs ?