27
IFT2821 Base de données Chapitre 8 Fonctions avancées

IFT2821 Base de données Chapitre 8 Fonctions avancées

Embed Size (px)

Citation preview

Page 1: IFT2821 Base de données Chapitre 8 Fonctions avancées

IFT2821Base de données

Chapitre 8Fonctions avancées

Page 2: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

2

Plan du cours

Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancés PL/SQL

Page 3: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

3

Introduction

En plus d'offrir la possibilité de définir et d'interroger une base de données, un SGBD relationnel, offre également des fonctionnalités avancées

Fonctions avancées– Gestion de la concurrence– Sécurité– Intégrité– Reprise après panne

Page 4: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

4

Introduction ExempleProgramme RÉSERVATION

Entrée : une séance s

nombre de places souhaité NbPlaces

client c

Début

Lire séance s

Si(nombre de places libre > NbPlaces)

Lire le compte du client c

Débiter le compte du client c

Soustraire le NbPlaces au nombre de places libres

Écrire la séance s

Écrire le compte du client c

FinSi

Fin

Page 5: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

5

Introduction Notation

- On notera lecture par : r

- On notera écriture par : w

- On notera une exécution du programme de réservation par : p

Une exécution du programme p :

r[s] r[c] w[c] w[s]

Page 6: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

6

Introduction Exécution concurrentes : sérialisabilité

– Solutions:

1- Exécution en série :–concurrence zéro (pas viable)

2- Bonne imbrication des opérations (sérilisable)

r1[s] r1[c1] r2[c2] w1[s] r2[s] w2[s] w1[c1] w2[c2]

Page 7: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

7

Introduction Exécution concurrentes : sérialisabilité

– Soit deux programmes p1(s,5,c1) et p2(s,10,c2) qui s’exécutent dans l’ordre ci-dessous sachant que le nombre de places libres est égale à 50

r1[s] r1[c1] r2[s] r2[c2]w2[s] w2[c2] w1[s] w1[c1]

– nombre de place libre est : 45 au lieu de 35 (incohérence)

– Problème : mauvaise imbrication des opérations

– Qu’en est-il de l’exécution suivante ?r1[s] r1[c1] w1[s] r2[s] r2[c2]w2[s] w1[c1] w2[c2] ?

Page 8: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

8

Transaction Transaction

– Problèmer1[s] r1[c1] w1[s] r2[s] r2[c2] w2[s] w1[c1] w2[c2]

– Solution• Annuler w1[s] (jusqu’ou il faut remonter dans les

annulations ?)• considérer un ensemble d’opérations indivisible

w1[s] w1[c1]

– Valider (commit): rendre les mise-à-jour permanentes– Annulation (rollback): annule les mise-à-jour

effectuées

Panne ou annulation par le programme

Page 9: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

9

Transaction Transaction

– Une transaction est l’ensemble des opérations séparant un rollback du commit ou du rollback et inversement.

Reconstitution (recouvrabilité)– Exécutions non reconstituables(dirty read)

r1[s] r1[c1] w1[s] r2[s] r2[c2] w2[s] w2[c2] commit2 w1[c1] rollback1

nombre de sièges réservé sera plus grand que le nombre de sièges effectif de clients ayant validé leurréservations.

Page 10: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

10

Transaction Reconstitution

– solution (annulation en cascade)

r1[s] r1[c1] w1[s] r2[s] r2[c2] w2[s] w2[c2] w1[c1] rollback1 annuler la transaction 2 sans la transaction n ’ait validé.

pas viable (pour la transaction 2). Il faut interdire les dirty read

Exécution non stricte (dirty write)

r1[s] r1[c1] r2[s] w1[s] w1[c1] r2[c2] w2[s] commit1 w2[c2] rollback2

– transaction 1 a validé après que transaction 2 ait écris dans s– lorsque transaction 2 est annulé le système doit annuler les

mise-à-jour de transaction 1(en ce qui concerne les données de transaction 1)

Page 11: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

11

Transaction Résumé

– Recouvrabilté: on ne doit pas avoir à annuler une transaction déjà validé

– Annulation en cascade : un rollback sur une transaction ne doit entraîner l ’annulation d’autres transactions

– Recouvrabilité stricte : deux transaction ne peuvent accéder simultanément en écriture à la même donnée.

Page 12: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

12

Transaction

– Propriétés• Atomicité

Tout ou rien

• Cohérence

mises-à-jours entre deux états cohérents

• Isolation

Les effets (lectures et écritures ) d'une transaction ne sont visible par les autres transaction qu'à sa fin

• Durabilité

Un fois terminée, ses effets sont durables. Ne peut être annulée

Page 13: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

13

Gestion de la concurrence

Contrôle de la concurrence (1) Consiste à ordonner les exécutions des

programmes de manière à éviter les anomalies présentées précédemment.

– Contrôle continu : vérifie au fur et à mesure de l’exécution que le critère de la sérialisabilté est respecté(approche pessimiste).

– Contrôle par certification : vérifie le critère de la sérialisabilité quant la transaction s’achève (approche optimiste).

Page 14: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

14

Gestion de la concurrence

Contrôle de la concurrence (2)– Mécanisme de verrouillage : on bloque l’accès à une

donnée lu ou écrite par une transaction («pose de verrou») et on libère cet accès quant cette transaction termine par Commit

ou Rollback. – Le blocage systématique est contraignant r1[s]

r1[c1] w1[s] r2[s] r2[c2]w2[s] w1[c1] w2[c2] bloquage inutile de la transaction 2.

– Solution plus souple• Granularité du verrouillage : uplet, table, page

• Degré des restriction :– Verrou partagé (en lecture)

– Verrou exclusif (en écriture)

Page 15: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

15

Gestion de la concurrence

Contrôle de la concurrence (3)1. Verrouillage à deux phases:

• rl ou wl: verrou en lecture ou écriture(read lock, write lock)

• ru ou wu: relâchement de verrou en lecture ou écriture (read unlock, write unlock)

• rli[x] : la transaction i pose un verrou en lecture sur la ressource x

• pli[x] : la transaction i pose un verrou en lecture ou en écriture sur la ressource x

– Définition : deux verroux pli[x] et qlk[y] sont en conflit si x=y et i k et pl ou ql est un verrou en lecture ou écriture.

Page 16: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

16

Gestion de la concurrence

Contrôle de la concurrence (4)– Algorithme(Scheduler):

1. Le scheduler reçoit pi[x] et consulte le verrou déjà posé su x, qlk[x] ,s ’il existe.

– si pli[x] est en conflit avec ql k[x], pi[x] est retardée et la transcation Ti est mise en attente.

– sinon, Ti obtient le verrou pli[x ] et l’opération pi[x] est exécutée.

2. Un verrou pi[x] n’est jamais relâché avant la confirmation de l’exécution par un autre module, le gestionnaire des données.

3. Dès que Ti relâche un verrou, elle ne peut plus obtenir un autre.

Page 17: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

17

Gestion de la concurrence

Contrôle de la concurrence (3)2. Contrôle par estampillage : consiste à fixer

,à priori, l’ordre de sérialisabilité des transactions soumises au scheduler. À chaque transaction on affecte une estampille. Les estampilles sont uniques et croissant (i.e., ordre totale des transaction).

Quand un conflit survient on vérifie si l’ordre des transaction résout le conflit(i.e., si i < k alors opérationi s ’exécute avant opérationk). Sinon on rejette la transaction responsable

conflit. Exemple : r1[s] w2[x] r3[x] r2[x] w1[x].

On rejette T1 au moment de l’exécution de w1(x).

Page 18: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

18

Gestion de la concurrence

Blocage– Situation où deux ou plusieurs transactions

sont mutuellement bloquées en attente d'un verrou

Solutions– Technique de l'examen du graphe d'attente – Technique du mécanisme de délai

Variantes– Rejouer la transaction– Signaler à l'application

Page 19: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

19

Reprise après panne

Journal (log)– Fichier disque (ou bande) dans lequel

sont écrites les modifications de la BD (valeurs concernées avant et après chaque requête élémentaire)

– Utiliser pour défaire une transaction– Problème: Comment garantir la

cohérence de la BD à l'intérieur d'une requête élémentaire ?

Page 20: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

20

Reprise après panne

Point de commit (syncpoint)– Point du programme dans lequel la BD est

dans un état cohérent– Début du programme et à la fin de chaque

transaction– Implications

• Toutes les mises à jour sont rendues permanentes

• Toutes les variables de positionnement sont détruites et tous les verrous sur les n-uplets effacés (cette implication s'applique également au ROLLBACK)

Page 21: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

21

Reprise après panne

Défaillance système (soft crash)– Affecte toutes les transactions courantes

sans endommager la BD physiquement– Si la mémoire centrale est effacé, lors du

redémarrage, • Les transactions courantes sont annulées

(ROLLBACK)• Certaines transactions terminées doivent être

rejouées (mémoires tampons non transférées sur disque)

• Comment le système sait quelles transactions annuler et quelles transactions rejouer ?

Page 22: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

22

Reprise après panne

Défaillance système (soft crash)– Point de contrôle

• A intervalle régulière, le système transfert le contenu des mémoires tampons dans la bases de données (physique) et produit un compte rendu dans le journal (physique)

T1

T2

T3

T4

T5

Temps tc tf

Défaillance du systèmePoint de contrôle

Page 23: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

23

Reprise après panne

Défaillance des supports (hard crash)– Destruction physique d'une partie de la

base de données.– Reprise après panne se fait en deux

étapes :• Restaurer la dernière sauvegarde de la base• Rejouer toutes les transactions terminées avec

succès depuis cette dernière sauvegarde

Page 24: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

24

Reprise après panne (Résumé)

DB État 2

DB État 1 DB État 2 DB État 3 DB État 4

Transaction 1 Transaction 2 Transaction 3

DB backup

Procédures de Mise à jour

Page 25: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

25

Reprise après panne

ServeurBases dedonnées

Log des transactionsLog des transactions

Enregistrement retrouvé

Opérer les mises

à jours

Obtenir enregistrement

Utilisateur

1: une transaction de Mise à jour8: message de notification

3: obtenir enregistrement2

45

6: Ecrire les mises à jours

7

9: backup périodique

Log image avant del ’enregistrement

Log image avant del ’enregistrement

Log image après del ’enregistrement

Log image après del ’enregistrement

Procédures de recouvrement

Page 26: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

26

Sécurité

Attribution des privilègesGRANT {liste_privilèges | ALL [PRIVILEGES]} [ liste_attribut ] ON

objet TO {liste_utilisateurs | PUBLIC}] [WITH GRANT OPTION] privilèges

– ALTER, DELETE, INSERT,SELECT, UPDATE, ...

objets– table, vue, ...

WITH GRANT OPTION – Permet à "l'autorisé" d'autoriser

Page 27: IFT2821 Base de données Chapitre 8 Fonctions avancées

IntroductionArchitectureModèles de donnéesModèle relationnelAlgèbre relationnelleSQLConceptionFonctions avancéesConcepts avancésModèle des objetsPL/SQL

27

Sécurité Retrait des privilèges

REVOKE {liste_privilèges | ALL [PRIVILEGES]} ON objet FROM

{liste_utilisateurs | PUBLIC}] [CASCADE CONSTRAINTS] Exemples

GRANT ALL PRIVILEGES ON EMPLOYE TO ALICE

GRANT UPDATE (SALAIRE) ON EMPLOYE TO TOD, NANCY

GRANT SELECT ON DEPARTMENT TO PUBLIC

GRANT SELECT,UPDATE , DELETE, INSERT ON PROJECT

TO ALICE

GRANT ALL PRIVILEGES ON EMPLOYE TO NED WITH GRANT OPTION

REVOKE UPDATE ON PROJECT TO ALICE

(CASCADE???)