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
Q

1 - BDD - Transactions

Quest-ce qu’une lecture impropre ?

A

Une lecture impropre (dirty read) survient lorsqu’une transaction lit une donnée écrite par une autre transaction pas encore validée.

26
Q

1 - BDD - Transactions

Quels sont les risques d’une lecture impropre ?

A

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
Q

1 - BDD - Transactions

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

A

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
Q

1 - BDD - Transactions

Qu’est-ce qu’une lecture non reproductible ?

A

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
Q

1 - BDD - Transactions

Quels sont les deux niveaux d’isolation ? Est-il possible que des lectures impropres surviennent ? Des lectures non reproductibles ?

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

1 - BDD - Transactions

Quel est le niveau d’isolation par défaut de Oracle ?

A

READ COMMITED

31
Q

2 - BDD - Gestion de la concurrence

Qu’est-ce qu’une exécution concurrente ?

A

Une exécution concurrente est une suite d’opérations effectuées par une ou plusieurs transactions.

32
Q

2 - BDD - Gestion de la concurrence

Qu’est-ce qu’une exécution en série ?

A

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
Q

2 - BDD - Gestion de la concurrence

Comment note-t-on l’exécution en série de deux transactions T1 et T2 ?

A

(T1, T2)

34
Q

2 - BDD - Gestion de la concurrence

Que signifie que les transactions T1 et T2 sont équivalentes ?

A

Cela signifie qu’elles ont le même effet sur toutes les bases de données.

35
Q

2 - BDD - Gestion de la concurrence

Qu’est-ce qu’une exécution sérialisable ?

A

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
Q

2 - BDD - Gestion de la concurrence

Qu’est-ce qu’un conflit ?

A

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
Q

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.

A

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. readi(X) et readj(X), même lorsque i = j ;
  2. readi(X) et writej(Y) si X ≠ Y ;
  3. writei(Y) et writej(X) si X ≠ Y ;
38
Q

2 - BDD - Gestion de la concurrence

Que signifie pour deux transactions d’être équivalentes par conflit ?

A

Deux transactions sont équivalentes par conflit si on peut passer de l’une à l’autre en inversant des opérations consécutives.

39
Q

2 - BDD - Gestion de la concurrence

Que signifie pour une exécution d’être sérialisable par conflit ?

A

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
Q

2 - BDD - Gestion de la concurrence

Quelle est la définition de précédence ?

Formellement

A

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
Q

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.

A

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
Q

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

A

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
Q

2 - BDD - Gestion de la concurrence

Qu’est-ce qu’un graphe de précédence ?

Avec vos mots.

A

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
Q

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 ?

A

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
Q

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 ?

A

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
Q

2 - BDD - Gestion de la concurrence

A quoi servent les verrous ?

A

Les verrous servent à différer certaines opérations pour conserver la sérialisabilité des transactions.

47
Q

2 - BDD - Gestion de la concurrence

Quels sont les différents vérrous existants ?

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

2 - BDD - Gestion de la concurrence

Comment assurer un bon usage des verrous ?

A

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
Q

2 - BDD - Gestion de la concurrence

Si l’on applique deux verrous, l’un partagé et l’autre exclusif, lequel primera ?

A

Le verrou exclusif.

50
Q

2 - BDD - Gestion de la concurrence

Expliquez le protocole de Verouillage en deux phases.

A
  1. Aquisition des verrous ;
  2. Relachement des verrous ;

Tous les verrous sont déposés avant le relâchement du premier verrou.

51
Q

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.

A

La transaction B n’obtient pas le verrou et attend le relâchement du verrou de la transaction A.

52
Q

2 - BDD - Gestion de la concurrence

Quel est le risque du protocole 2PL ?

Donnez grossièrement un exemple.

A

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
Q

2 - BDD - Gestion de la concurrence

Qu’est-ce qu’une exécution réparable ?

A

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
Q

2 - BDD - gestion de la concurrence

Qu’est-ce qu’une exécution sans annulation en cascade ?

A

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
Q

2 - BDD - gestion de la concurrence

De quelles propriétés bénéficient les exécutions sans annulation en cascade.

A

Si une exécution est sans annulation en cascade, alors elle est réparable. La réciproque n’est pas vraie.

56
Q

2 - BDD - gestion de la concurrence

Qu’est-ce qu’une exécution stricte ?

A

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
Q

2 - BDD - gestion de la concurrence

De quelles propriétés bénéficient les exécutions strictes ?

A

Une exécution stricte est sérialisable et sans annulation en cascade.

58
Q

2 - BDD - gestion de la concurrence

Faites un schéma ensembliste des classes d’exécutions.

A

En série ⊂ Stricte ⊂ SAC ⊂ Réparable

Une partie des SAC sont sérialisables.
Une partie des réparables sont sérialisables.