Implémentation des bases de données solides Flashcards

1
Q

0 - BDD - Introduction

Retracez succintement l’histoire des SGBD.

A
  1. Historiquement, les bases de données étaient des fichiers papier.
  2. 1970, Edgar F. Codd introduit la notion de modèle relationnel chez IBM.
  3. 1979, Oracle sort le premier SGBD.
  4. 1980-2000, De nombreux SGBD sont créés et SQL devient un langage standard.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

1 - BDD - Transactions

De quoi est composée une base de données ?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

0 - BDD - Introduction

Quelles sont les qualités des SGBD modernes ?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

0 - BDD - Introduction

A quoit sert une contrainte d’intégrité ? Explicitez les différents types de contraintes.

Au moins 2

A

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

0 - BDD - Introduction

Qu’est-ce qu’une super-clé ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

0 - BDD - Introduction

Qu’est-ce qu’une clé candidate ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

0 - BDD - Introduction

Qu’est-ce qu’une clé étrangère ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

0 - BDD - Introduction

Qu’est-ce qu’une clé primaire ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

0 - BDD - Introduction

Qu’est-ce qu’une base de données cohérente ?

A

Une base de données est cohérente si son contenu vérifie à la fois les contraintes explicites et implicites.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

1 - BDD - Transactions

Qu’est-ce qu’une transaction ?

A

Une transaction est un exécution d’un programme contenant plusieurs requêtes sur la base de données.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

1 - BDD - Transactions

Quel est le principe des transactions ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

1 - BDD - Transactions

Qu’est-il nécessaire de mettre en place pour gérer les transactions ?

A
  • Une gestion des interactions entre transactions.
  • Une gestion des erreurs systèmes.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

1 - BDD - Transactions

Que définissent les transactions ?

A

Les transactions définissent les transformations valides de la base de données.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

1 - BDD - Transactions

Quand les contraintes d’intégrité sont-elles vérifiées ?

A

Par défaut, elles sont vérifiées à chaque requête à la BDD.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

1 - BDD - Transactions

Définissez l’acronyme ACID.

A

Atomique, Cohérente, Isolée, Durable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

1 - BDD - Transactions

Qu’est-ce que le principe d’atomicité d’une transaction ?

A

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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

1 - BDD - Transactions

Que se passe-t-il lorsqu’une transaction est annulée ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

1 - BDD - Transactions

Décrivez le mécanisme de rollback.

A

Généralement, celui-c fonctionne sur le mécanisme de journalisation.

On journalise les données

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

1 - BDD - Transactions

Q’est-ce que le principe de cohérence d’une transaction ?

A

Quelle que soit l’exécution des transactions, la BDD doit rester cohérente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

1 - BDD - Transactions

Qu’est-ce que le principe d’irrévocabillité ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

1 - BDD - Transactions

Quelles sont les opérations irrévocables au sein d’une transaction SQL ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

1 - BDD - Transactions

Qu’est-ce que le principe de durabilité d’une transaction ?

A

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

1 - BDD - Transactions

Pourquoi différer la validation des contraintes d’intégrité ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

1 - BDD - Transactions

Quels sont les différents moyens pour différer la validation des contraintes d’intégrité ?

A
  • 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

25
# 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**.
26
# 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.
27
# 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**.
28
# 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**.
29
# 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}`
30
# 1 - BDD - Transactions Quel est **le niveau d'isolation par défaut de Oracle** ?
`READ COMMITED`
31
# 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**.
32
# 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**.
33
# 2 - BDD - Gestion de la concurrence Comment note-t-on **l'exécution en série de deux transactions** T1 et T2 ?
(T1, T2)
34
# 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**.
35
# 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**.
36
# 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.
37
# 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 : 1. `read`i(X) et `read`j(X), même lorsque i = j ; 2. `read`i(X) et `write`j(Y) si X ≠ Y ; 3. `write`i(Y) et `write`j(X) si X ≠ Y ;
38
# 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**.
39
# 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.**
40
# 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 : 1. Oi précède Oj dans E. 2. Oi et Oj concernent le même élément de la base de données. 3. l'une ou l'autre est une écriture.
41
# 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.
42
# 2 - BDD - Gestion de la concurrence Peut-on inverser deux opérations Oi et Oj dans une transaction E si l'on sait que : TiE 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**.
43
# 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ù : 1. Les sommets du graphe sont les transactions de E. 2. 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 | TiE Tj}}
44
# 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**.
45
# 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.
46
# 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.
47
# 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.
48
# 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**.
49
# 2 - BDD - Gestion de la concurrence Si l'on applique deux verrous, l'un **partagé** et l'autre **exclusif**, lequel primera ?
Le verrou **exclusif**.
50
# 2 - BDD - Gestion de la concurrence Expliquez le protocole de **Verouillage en deux phases**.
1. **Aquisition** des verrous ; 2. **Relachement** des verrous ; Tous les verrous sont déposés avant le relâchement du premier verrou.
51
# 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.
52
# 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*.
53
# 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.
54
# 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**.
55
# 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.
56
# 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.
57
# 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**.
58
# 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.