SGBD Flashcards

1
Q

C’est quoi le schéma ?

A

C’est la structure des tables/relations

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

C’est quoi un contenu ?

A

Ce sont les lignes stocké dans chaque table

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

A quoi servent les contraintes d’intégrité ?

A

A assurer la cohérence des données

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

C’est quoi une contrainte d’intégrité explicite?

A

Stocké dans le SGBD et qui peuvent être vérifier automatiquement à chaque modification du contenu (Ex : Produit.prix >= 0)

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

C’est quoi une contraine d’intégrité implicite ?

A

Qui sont dans la tête de l’administrateur de la base de données uniquement. (Ex : Le total d’un pannier est la somme des prix des objets qu’il contient)

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

C’est quoi une base de donné cohérante ?

A

Si son contenu vérifie toutes les contraintes

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

C’est quoi une clef ?

A

Sous ensemble de colonne d’une table

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

C’est quoi une super clef ?

A

Ensemble de colonnes qui vérifient : “Il y a au plus une ligne qui à les même valeur dans ces colonnes”

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

C’est quoi une clef candidate ?

A

Super clé qui contient un nombre minimal de colonnes (Dans la super-clef on peut prendre trop de colonnes)

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

C’est quoi une clef primaire ?

A

Clé candidate choisie pour identifier chaque ligne

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

C’est quoi un clef étrangère ?

A

Ensemble de colonnes d’une table faisant référence à la clef primaire d’un autre table.

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

C’est quoi un transaction ? Que cela permet -il de faire ?

A

Une transaction est un ensemble de requêtes qui permet de gérer des opérations élémentaires que les requêtes simple ne peuvent pas faire.

La notion de transaction permet de vérifier la coherence uniquement à la fin de l’execution de toutes les requêtes SI ON LE PRECISE.

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

Que veut dire ACID ?

A

Atomicité
Cohérence
Isolation
Durabilité

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

Définir l’Atomicité pour ACID

A

Soit la transaction est complètement réalisée, soit rien du tout

Une transaction n’a que trois états :

Active > En Cours d’exécution
Validée/Committed > Terminé par un succès
Annulée/Aborted > Terminé par un échec

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

C’est quoi l’auto-commit ?

A

Chaque requête est automatiquement une transaction.

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

C’est quoi la Journalisation ? Qui l’utilise ? Que permet-il d’avoir ?

A

Le rollback utilise la journalisation (On stocke les données avant et après modification.)

Le journal est un fichier sur le disque où sont stockées toutes les modifications faites par les transactions.

L’ordre des commit est aussi journalisé

Permet d’avoir de la reprise après panne

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

C’est quoi la cohérence pour ACID ?

A

Quelque soit l’exécution des transactions, la base de données reste cohérente

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

C’est quoi l’Isolation pour ACID ?

A

Les transactions doivent modifier la base comme si elles étaient chacune exécutée seule

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

Ce qu’implique l’Isolation :
- Sur ses modifications par rapport aux autres transaction ?
- Sur l’exécution parallèle ?
- Sur les conflits entre transaction ?
- Sur conflits de transaction qui ne font que lire ?
- Su la concurrence ?
- Sur le point de vue de celui qui envoie la transaction ?

A

Une transaction ne doit pas révéler ses modifications aux autres transactions tant qu’elle n’a pas été validée.

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

Il n’y pas de problème d’isolation, si toutes les transaction lisent uniquement les données

L’isolation des transactions permet d’avoir une concurrence élevée.

Gestion transparente du point de vue de celui qui envoie la transaction

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

C’est quoi la Durabilité pour ACID ?

A

Les modifications d’une transaction sur la base de données ne sont jamais perdues

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

Comment définir un niveau d’isolation en SQL ?

A

SET TRANSACTION ISOLATION LEVEL {Niveau d’isolation};

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

Quels sont les niveaux d’isolation d’une transaction et leur impacts sur les lectures impropre et non reproductible ?

A

READ COMMITED (Par défaut) (Voit les modifications faites avant le début NON VALIDE)
- Lecture impropre impossible
- Lecture non reproductible possible

READ ONLY (Voit les modifcations faites avant le debut VALIDée) peut pas modif
- Lecture impropre impossible
- Lecture non reproductible impossible

SERIALIZABLE (Voit les modifcations faites avant le debut VALIDée) peut modif
- Lecture impropre impossible
- Lecture non reproductible impossible

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

C’est quoi une lecture impropre ? C’est quoi en anglais ? Pourquoi c’est pas bien ?

A

(Dirty read)

Il s’agit d’une lecture d’une donnée écrite par une transaction qui n’est pas encore validée. Risqué car la transaction peut être annulé ou modifier la donnée.

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

C’est quoi une lecture non reproductible ?

A

Relecture par une requête de données qui ont été modifiées par une autre depuis la première lecture

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

Comment différer la vérification des contraintes en SQL ?

A

En définissant la table :

CONSTRAINT nom_fk FOREIGN KEY vise REFERENCES Impasse (tireur) {option};

Après l’avoir fait

SET CONSTRAINTS nom_fk {Option} ;

SET CONSTRAINTS ALL {Option};

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

Quels sont les différents niveau de différation de la vérification des contraintes en SQL?

A

NOT DIFERABLE > Ne peut pas être différée (option par défaut)

DEFERABLE INITIALLY IMMEDIATE > Différé si on le précise

DEFERABLE INITIALLY DEFERED > Différé par défaut

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

C’est quoi une exécution concurrentes ?

A

Une exécution concurrente est une suite d’opérations prises par une ou plusieurs transactions en même temps

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

C’est quoi une exécution en série ?

A

On dit qu’une exécution est en série si toutes les opérations de chaque transaction sont exécutées de manière consécutives.

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

De quoi dépendent les exécution en série ?

A

Elles dépendent de l’ordre des transactions

30
Q

Pourquoi on souhaite avoir des exécution sérialisable ?

A

Car ce sont des exécution qui garantissent la préservation de la cohérence de données

31
Q

Comment savoir si un exécution est sérialisable ? (Définition théorique)

A

Une exécution E est sérialisables s’il existe une exécution E’ en série telles que E et E’ sont équivalentes et qu’elles ont le même effet sur toutes les bases de données. (Fait les mêmes opérations dans n’importe qu’elle BDD avec le bon schéma)

32
Q

C’est quoi un conflit entre opréation consécutive ?

A

On parle de conflit entre deux opérations consécutives d’une exécutions lorsque leur ordre ne peut être inversé sans changer l’effet de cette exécution.

33
Q

Dans quel cas il y a un conflit entre opération consécutive ?

A
  • Deux opérations qui sont dans la même transaction

De transaction différentes :
- Deux écriture de la même donnée
- Lecture/Ecriture de la même donnée

34
Q

Dans quel cas on peut inverser deux opérations consécutive ?

A

Dans deux transactions différentes :
- Deux lecture même sur le même élement
- Une écriture/lecture sur un élement différent

35
Q

C’est quoi deux exécution équivalente par conflit ?

A

On dit que deux exécutions sont équivalentes par conflit si on peut passer de l’une à l’autre en inversant des opérations consécutives sans conflits.

36
Q

C’est quoi une exécution sérialisable par conflit ?

A

On dit qu’une exécution est sérialisables par conflit si elle est équivalente par conflit à une exécution en série

(Il suffit donc de faire des inversions en respectant les règles d’équivalence par conflit de montrer que les deux transactions peuvent s’exécuter à la suite sans problème)

37
Q

Qu’implique la sérialisabilité par conflit d’une exécution ?

A

Sa séralisibilité

38
Q

Comment savoir si Ti précède Tj dans une exécution E ? (Ti <E Tj)

A

Si il existe deux opération Oi et Oj dans E tel que :

  • Oi précède Oj dans E
  • Oi et Oj s’applique sur le même élement
  • Oi ou Oj est une opération d’écriture
39
Q

Supposons que Ti <E Tj, que cela implique t-il ?

A

On sait que les Oi et Oj choisit sont en conflit et qu’on ne pourra donc pas les inverser sans conflit

40
Q

Supposons que E est sérialisable et que Ti <E Tj par conflit, que cela implique t-il ?

A

Dans toute exécution en série équivalentes par conflit à E :

Ti apparaitra nécessairement avant Tj

41
Q

Comment est défini le graphe de précédence d’une exécution ?

A

Les noeuds sont les transactions de E

Il y une arrête de Ti vers Tj si Ti <E Tj

42
Q

Qu’implique le fait que E est sérialisable par conflit en plus d’avoir un graphe de précédence ?

A

E est équivalente par conflit à toute exécution en série des transactions E où Ti précède Tj dès qu’il existe une arrête de Ti vers Tj dans le graphe de précédence de E.

43
Q

https://media.discordapp.net/attachments/509074684797648926/1101069350791806976/3vyyasV.png?width=201&height=410

A quoi quelle exécution en série E est équivalente par conflit avec ce graphe de précédence ?

A

(T2, T3, T1)

(T2, T1)

44
Q

A quoi servent les verrous ?

A

On ne cherche plus à savoir si l’exécution dans cette ordre est sérialisable mais on cherche à différer certaines opérations (un minimum) pour conserver la sérialisibilité.

45
Q

Quels sont les deux types de verrous ? Quand sont ils nécessaire ?

A

Verrou partagé (Shared lock) nécessaire pour lire un element

Verrou exclusif (Exclusive lock) nécessaire pour écrire un element

46
Q

Quels sont les opérations pour obtenir un verrou partagé/exclusif et relaché un verrou en algèbre relationnelle?

A

Si(X) Ti obtient un verrou partagé sur X
Xi(X) Ti obtient un verrou exclusif sur X
Ui(X) Ti relache son verrou sur X

47
Q

Quels sont les contraintes sur les lectures/ecriture par rapport au verrou que possède une transaction Ti ?

A

Une lecture est effectué uniquement quand Ti à un verrou partagé OU exclusif sur X

Une écriture est effectué uniquement quand Ti à un verrou exclusif sur X

48
Q

Combien de transaction peuvent avoir de :
- Verrou partagé ?
- Verrou exclusif ?
- Les deux ?

A

A tout moment un élement de la base :

  • Vérouillé exclusif par une UNIQUE transaction
  • Vérouillé partagé par PLUSIEURS transactions

Mais jamais les deux pour un même élement

49
Q

C’est quoi une perte de mise à jour ?

A

Cela se produit quand deux transaction essaye de modifer une même donné et ne commit qu’a la fin

50
Q

Quels sont les exécutions qui ne sont jamais sérialisable ?

A

Celle avec une lecture impropre / perte de mise à jour

51
Q

C’est quoi une procédure ?

A

Une procédure agit comme une fonction dans une BDD (Prend des arguments et effectue des traitements potentiellement conditionnelle)

52
Q

Comment savoir quand une exécution est sérialisable ? (3 points)

A
  • Quand on trouve un exemple d’execution en série équivalente
  • Quand elle est sérialisable par conflit
  • Quand elle est stricte
53
Q

Que ce passe t’il si on veut un verrou exclusif sur une donné déjà verouillé de manière partagé par une autre transaction ?

A

On va attendre

54
Q

Comment obtenir la sérialibilité par conflit avec les verroux ?

A

Avec le verrouillage en deux phases (2 Phase Locking 2PL)

55
Q

Que se passe-t-il si un même transaction veut un verrou exclusif sur une donné dont elle à déjà un verrou partagé ?

A

Le verrou exclusif prend le pas du verrou partagé (Le remplace)

56
Q

Quelle est la règle du verrouillage en deux phase ?

A

On ne peut plus prendre de verrou quand on a commencé a en relacher dans une même transaction

57
Q

Que fait le SELECT … FOR UPDATE ?

A

Pose implictement un verrou row share :
Les lignes selectionné sont verrouillé en écriture

58
Q

Que fait le LOCK TABLE … IN SHARE MODE ?

A

Permet d’obtenir un verrou partagé

59
Q

Que fait le LOCK TABLE .. IN EXCLUSIVE MODE

A

Permet d’obtenir un verrou exclusif

60
Q

Que fait le LOCK TABLE .. IN SHARE/EXCLUSIVE MODE NOWAIT

A

Plutôt que de bloquer l’exécution si la table est déjà verrouillée, Oracle abandonne
l’instruction.

61
Q

Quel pose implicite fait le INSERT/DELETE/UPDATE ?

A

Row exclusive > Pose un verrou exclusif (Bloque les lecture ET ecriture) des lignes concerné

62
Q

Quels sont les deux phases du 2PL ?

A
  • Accisitions des verrous
  • Relachement des verrous
63
Q

Quel est le risque du 2PL ?

A

L’interblocage (Dead lock)

64
Q

C’est quoi l’interblocage (Dead lock) ?

A

C’est un structure d’exécution où des transactions sont forcées d’attendre indéfiniment un verrou obtenu par une autre transaction.

65
Q

C’est quoi une execution réparable ?

A

Une exécution est reparable si chaque transaction est validées après la transaction dont elle a lu des données modifiées.

w1(A)w1(B)w2(A)r2(B)c1c2 Réparable

66
Q

C’est quoi une exécution sans annulation en cassacade (SAC) ?

A

Une exécution est sans annulation en cascade (SAC) si toutes les transactions lisent des valeurs modifié issues uniquement de transactions déjà validé.

w1(A)w1(B)w2(A)r2(B)c1c2 Non SAC

67
Q

Quels propriétés on les SAC ?

A
  • Jamais de lecture impropre
  • Réparable
68
Q

C’est quoi un exécution stricte ?

A

Une exécution AVEC VERROU est STRICTE si dans chaque transaction, aucun verrou exclusif n’est relaché avant que la transaction soit annulé ou validé.

69
Q

Quel est la propriété des exécutions stricte ?

A

Elle sont sérialisable

70
Q

C’est quoi deux éxéciton équivalente ?

A

Deux éxécution qui ont le même effet sur la BDD.

71
Q

Pourquoi est il souhaitable pour une exécution d’être réparable ?

A

En cas d’annulation d’une transaction dont une autre lit les données modifiées non validée, on peut aussi annuler l’autre. Sinon c’est “trop tard”.

w1(A)w1(B)w2(A)r2(B)c1c2 Réparable

w1(A)w1(B)w2(A)r2(B)c2c1 Non réparable