Implémentation des bases de données solides Flashcards
0 - BDD - Introduction
Retracez succintement l’histoire des SGBD.
- Historiquement, les bases de données étaient des fichiers papier.
- 1970, Edgar F. Codd introduit la notion de modèle relationnel chez IBM.
- 1979, Oracle sort le premier SGBD.
- 1980-2000, De nombreux SGBD sont créés et SQL devient un langage standard.
1 - BDD - Transactions
De quoi est composée une base de données ?
- Un schéma, qui structure les données
- Du contenu, qui remplit la base de données
- Des contraintes d’intégrité qui assurent la cohérence de la BDD.
0 - BDD - Introduction
Quelles sont les qualités des SGBD modernes ?
- Ils sont fiables et très stables.
- Ils sont performants et permettent de gérer de gros volumes de données.
- Ils sont durables car ils assurent la qualité des données.
0 - BDD - Introduction
A quoit sert une contrainte d’intégrité ? Explicitez les différents types de contraintes.
Au moins 2
Les contraintes d’intégrité permettent de définir des limitations sur le contenu de la base de données.
- Contraintes explicites : elles sont stockées dans le SGBD et peuvent être vérifiées automatiquement à chaque modification du contenu.
- Contraintes implicites : elles sont dans la tête de l’administrateur de la base de données.
0 - BDD - Introduction
Qu’est-ce qu’une super-clé ?
Soit K un sous-ensemble de colonnes d’une table T.
K est une super-clé si elle permet d’identifier de manière unique au plus une seule ligne de T. C’est à dire si le nombre de ligne ayant les mêmes valeurs sur les colonnes de K est au plus un.
0 - BDD - Introduction
Qu’est-ce qu’une clé candidate ?
Soit K un sous-ensemble de colonnes d’une table T.
Une clé candidate, K, est une super-clé qui contient un nombre minimal de colonnes.
0 - BDD - Introduction
Qu’est-ce qu’une clé étrangère ?
Une clé étrangère est un ensemble de colonnes K d’une table faisant référence à la clé primaire d’une autre table. La clé étrangère est satisfaite si les tuples de valeurs présents sur les colonnes de K sont aussi présents sur les colonnes de la clé primaire
0 - BDD - Introduction
Qu’est-ce qu’une clé primaire ?
Soit K un sous-ensemble de colonnes d’une table T.
Une clé primaire est une clé candidate choisie pour identifier chaque ligne de T.
0 - BDD - Introduction
Qu’est-ce qu’une base de données cohérente ?
Une base de données est cohérente si son contenu vérifie à la fois les contraintes explicites et implicites.
1 - BDD - Transactions
Qu’est-ce qu’une transaction ?
Une transaction est un exécution d’un programme contenant plusieurs requêtes sur la base de données.
1 - BDD - Transactions
Quel est le principe des transactions ?
Si un transaction s’exécute en l’absence d’autres transactions ou d’erreurs sur une base de données cohérente, alors la base de données à la fin de l’exécution est aussi cohérente.
1 - BDD - Transactions
Qu’est-il nécessaire de mettre en place pour gérer les transactions ?
- Une gestion des interactions entre transactions.
- Une gestion des erreurs systèmes.
1 - BDD - Transactions
Que définissent les transactions ?
Les transactions définissent les transformations valides de la base de données.
1 - BDD - Transactions
Quand les contraintes d’intégrité sont-elles vérifiées ?
Par défaut, elles sont vérifiées à chaque requête à la BDD.
1 - BDD - Transactions
Définissez l’acronyme ACID.
Atomique, Cohérente, Isolée, Durable
1 - BDD - Transactions
Qu’est-ce que le principe d’atomicité d’une transaction ?
Une transaction est une suite d’opérations insécable. Elle ne peut avoir que trois états :
- Active : en cours d’exécution
- Validée (committed) : succès
- Annulée (aborted) : échec
1 - BDD - Transactions
Que se passe-t-il lorsqu’une transaction est annulée ?
Lorsqu’un transaction est annulée, il faut défaire les changements apportés à la base de données et à son contenu, on effectue un rollback
1 - BDD - Transactions
Décrivez le mécanisme de rollback.
Généralement, celui-c fonctionne sur le mécanisme de journalisation.
On journalise les données
1 - BDD - Transactions
Q’est-ce que le principe de cohérence d’une transaction ?
Quelle que soit l’exécution des transactions, la BDD doit rester cohérente.
1 - BDD - Transactions
Qu’est-ce que le principe d’irrévocabillité ?
L’irrévocabilité c’est le fait de ne pas pouvoir révoquer, dans notre cas, les décisions de commit
et de rollback
sont irrévocables. C’est à dire qu’une fois la transaction validée ou annulée, on ne peut plus changer son statut.
1 - BDD - Transactions
Quelles sont les opérations irrévocables au sein d’une transaction SQL ?
Les opérations de commit
et de rollback
sont irrévocables. Elles terminent un transaction.
Aussi, les écritures sont irrévocables une fois une transaction terminée. Elles sont donc révoquables tant que celle-ci est active.
1 - BDD - Transactions
Qu’est-ce que le principe de durabilité d’une transaction ?
Les effets d’une transaction validée sont persistants. Ils sont stockés sur le disque et persistants même en cas de panne 1ms après la validation de la transaction.
Cette propriété est garantie par la journalisation et permet une reprise après panne, sans pertes de données :
- Le journal est un fichier sur le disque.
- Le SGBD stocke toutes les modifications faites par les transactions.
- Les ordres de commit sont journalisées.
1 - BDD - Transactions
Pourquoi différer la validation des contraintes d’intégrité ?
Différer la validation des contraintes d’intégrité à la fin d’une transaction permet d’avoir un état incohérent de la base de données au sein de la transaction, mais cohérent une fois celle-ci validée, ou annulée le cas échéant.
1 - BDD - Transactions
Quels sont les différents moyens pour différer la validation des contraintes d’intégrité ?
-
NOT DEFERABLE
: la validation ne peut être différée. -
DEFERABLE INITIALLY IMMEDIATE
: différée si précisée. -
DEFERABLE INITIALLY DEFERED
: différée par défaut.
On ajoute ce mot clé à la suite d’une contrainte, comme : UNIQUE (id) DEFERABLE INITIALLY IMMEDIATE
1 - BDD - Transactions
Quest-ce qu’une lecture impropre ?
Une lecture impropre (dirty read) survient lorsqu’une transaction lit une donnée écrite par une autre transaction pas encore validée.
1 - BDD - Transactions
Quels sont les risques d’une lecture impropre ?
Le risque est que la transaction qui a écrit la donnée que l’on vient de lire peut être annulée ou ré-écrire la donnée. La transaction qui a lu cette donnée peut alors prendre des décisions qui ne sont pas cohérentes avec un état valide de la BDD.
1 - BDD - Transactions
Qu’est-ce que le principe d’isolation d’une transaction ?
Les transactions doivent modifier la base de données comme si elles étaient chacune exécutées seules.
- Une transaction ne doit pas révéler ses modifications aux autres transactions tant qu’elle est active.
- Les transactions exécutées en parallèle peuvent engendrer des problèmes de cohérence.
- Des conflits entre les transactions peuvent entraîner l’annulation de certaines transactions.
1 - BDD - Transactions
Qu’est-ce qu’une lecture non reproductible ?
Une lecture non reproductible ce sont en réalité deux lectures d’un état valide de la BDD qui vont retourner un résultat différent à cause d’une modification concurrente.
1 - BDD - Transactions
Quels sont les deux niveaux d’isolation ? Est-il possible que des lectures impropres surviennent ? Des lectures non reproductibles ?
-
READ COMMITED
: aucunes lectures impropres, mais les lectures non reproductibles peuvent arriver. -
SERIALIZABLE
: ni l’un, ni l’autre ne peuvent arriver.
On le définit à chaud dans la session avec : SET TRANSACTION ISOLATION LEVEL {READ COMMITED|SERIALIZABLE}
1 - BDD - Transactions
Quel est le niveau d’isolation par défaut de Oracle ?
READ COMMITED
2 - BDD - Gestion de la concurrence
Qu’est-ce qu’une exécution concurrente ?
Une exécution concurrente est une suite d’opérations effectuées par une ou plusieurs transactions.
2 - BDD - Gestion de la concurrence
Qu’est-ce qu’une exécution en série ?
Une exécution est en série si toutes les opérations de chaque transaction sont exécutées de manière consécutive.
2 - BDD - Gestion de la concurrence
Comment note-t-on l’exécution en série de deux transactions T1 et T2 ?
(T1, T2)
2 - BDD - Gestion de la concurrence
Que signifie que les transactions T1 et T2 sont équivalentes ?
Cela signifie qu’elles ont le même effet sur toutes les bases de données.
2 - BDD - Gestion de la concurrence
Qu’est-ce qu’une exécution sérialisable ?
Une exécution E est sérialisable s’il existe une exécution E’ en série telle que E et E’ sont équivalentes.
2 - BDD - Gestion de la concurrence
Qu’est-ce qu’un conflit ?
On parle de conflit entre deux opérations consécutives d’une exécution lorsque leur ordre ne peut être inversé sans changer l’effet de cette exécution.
2 - BDD - Gestion de la concurrence
Quelles sont les paires d’opérations qui ne présentent pas de conflit ? Il y en a trois.
Soient i et j deux entiers tels que i ≠ j et Ti et Tj deux transactions.
Il n’y a pas de conflit entre les opérations suivantes :
-
read
i(X) etread
j(X), même lorsque i = j ; -
read
i(X) etwrite
j(Y) si X ≠ Y ; -
write
i(Y) etwrite
j(X) si X ≠ Y ;
2 - BDD - Gestion de la concurrence
Que signifie pour deux transactions d’être équivalentes par conflit ?
Deux transactions sont équivalentes par conflit si on peut passer de l’une à l’autre en inversant des opérations consécutives.
2 - BDD - Gestion de la concurrence
Que signifie pour une exécution d’être sérialisable par conflit ?
Une exécution est sérialisable par conflit si elle est équivalente par conflit à une exécution en série.
Une exécution sérialisable par conflit est sérialisable.
2 - BDD - Gestion de la concurrence
Quelle est la définition de précédence ?
Formellement
Au sein d’une exécution E, une transaction Ti précède la transaction Tj si, pour deux opérations Oi ∈ Ti et Oi ∈ Tj on a :
- Oi précède Oj dans E.
- Oi et Oj concernent le même élément de la base de données.
- l’une ou l’autre est une écriture.
2 - BDD - Gestion de la concurrence
Expliquez le principe de précédence ? Qu’est-ce que cela veut réellement dire si l’on prend deux transactions Ti et Tj de E et que Ti précède Tj ?
Avec vos mots.
Si l’on sait que deux transactions Ti et Tj se précèdent au sein d’une exécution E, alors dans toute exécution en série équivalente par conflit à E, on est certain que Ti sera exécutée avant Tj.
2 - BDD - Gestion de la concurrence
Peut-on inverser deux opérations Oi et Oj dans une transaction E si l’on sait que : Ti ≺E Tj
Non puisque l’on sait que quelque soit l’exécution équivalente par conflit à E, Oi sera toujours avant Oj.
C’est bien le principe de précédence.
2 - BDD - Gestion de la concurrence
Qu’est-ce qu’un graphe de précédence ?
Avec vos mots.
Un graphe de précédence ordonne les transactions et permet de déterminer si un exécution est sérialisable par conflit.
Il s’agit d’un graphe orienté où :
- Les sommets du graphe sont les transactions de E.
- Il y a une arête entre deux transactions Ti et Tj si Ti précède Tj
Formellement, on a : G = {V = {Ti ∈ E}, E = {(Ti, Tj) ∈ E2 | Ti ≺E Tj}}
2 - BDD - Gestion de la concurrence
A partir d’un graphe de précédence G d’une exécution E, comment déterminer si cette exécution est sérialisable ?
Soit E un exécution et G son graphe de précédence.
L’exécution E est sérialisable par conflit si et seulement si son graphe de précédence G est acyclique.
2 - BDD - Gestion de la concurrence
Soit G un graphe acyclique et E un exécution dont le graphe de précédence est G.
Peut-on déterminer facilement un ensemble d’exécutions en série équivalentes par conflit à E ?
Soit G le graphe de précédence de l’exécution E.
E est équivalente à toute exécution en série de ses transactions dès lors que si (Ti, Tj) est une arête de G, alors Ti est exécutée avant Tj.
2 - BDD - Gestion de la concurrence
A quoi servent les verrous ?
Les verrous servent à différer certaines opérations pour conserver la sérialisabilité des transactions.
2 - BDD - Gestion de la concurrence
Quels sont les différents vérrous existants ?
- Verrou partagé (shared) : nécessaire pour lire un élément ;
- Verrou exclusif (exclusive) : néecessaire pour écrire un élément ;
De manière abstraite, on note :
- si(X) : la transaction Ti obtient un verrou partagé sur l’élément X.
- xi(X) : la transaction Ti obtient un verrou exclusif sur l’élément X.
- ui(X) : la transaction Ti relâche ses verrous sur l’élément X.
2 - BDD - Gestion de la concurrence
Comment assurer un bon usage des verrous ?
Sur chaque transaction Ti :
* Une lecture ri(X) ne peut être exécutée que si Ti a un verrou quelconque sur X.
* Une écriture wi(X) ne peut être exécutée que si Ti a un verrou exclusif sur X.
* Tous les verrous obtenus sont libérés avant la fin de la transaction.
Un élément X de la base de données peut être :
* Soit verouillé de manière exclusive par une unique transaction.
* Soit verouillé de manière partagée par plusieurs transactions.
2 - BDD - Gestion de la concurrence
Si l’on applique deux verrous, l’un partagé et l’autre exclusif, lequel primera ?
Le verrou exclusif.
2 - BDD - Gestion de la concurrence
Expliquez le protocole de Verouillage en deux phases.
- Aquisition des verrous ;
- Relachement des verrous ;
Tous les verrous sont déposés avant le relâchement du premier verrou.
2 - BDD - Gestion de la concurrence
Que se passe-t-il lorsqu’une transaction A verrouille un élément X et qu’un transaction B verrouille ensuite ce même élément X.
La transaction B n’obtient pas le verrou et attend le relâchement du verrou de la transaction A.
2 - BDD - Gestion de la concurrence
Quel est le risque du protocole 2PL ?
Donnez grossièrement un exemple.
Il y a un risque d’interblocage (deadlock), c’est à dire que des transactions sont forcées d’attendre indéfiniment un verrou obtenu par une autre transaction.
Exemple : Une transaction A verrouille un élément X1, puis une transaction B verrouille un élément X2. Si A demande un verrou sur X2 et B sur X1, alors c’est un deadlock.
2 - BDD - Gestion de la concurrence
Qu’est-ce qu’une exécution réparable ?
Une exécution est réparable si toutes les transactions sont validées après les transactions dont elle a lu les données modifiées.
2 - BDD - gestion de la concurrence
Qu’est-ce qu’une exécution sans annulation en cascade ?
Une exécution est sans annulation en cascade (SAC) si toute les transactions lisent des valeurs modifiées issues uniquement de transactions qui sont déjà validées.
2 - BDD - gestion de la concurrence
De quelles propriétés bénéficient les exécutions sans annulation en cascade.
Si une exécution est sans annulation en cascade, alors elle est réparable. La réciproque n’est pas vraie.
2 - BDD - gestion de la concurrence
Qu’est-ce qu’une exécution stricte ?
Une exécution avec verrous est stricte si dans chaque transaction, aucun verrou exclusif n’est relâché avant que la transaction ne soit validée ou annulée.
2 - BDD - gestion de la concurrence
De quelles propriétés bénéficient les exécutions strictes ?
Une exécution stricte est sérialisable et sans annulation en cascade.
2 - BDD - gestion de la concurrence
Faites un schéma ensembliste des classes d’exécutions.
En série ⊂ Stricte ⊂ SAC ⊂ Réparable
Une partie des SAC sont sérialisables.
Une partie des réparables sont sérialisables.