Upload
pepin-nicolas
View
116
Download
1
Embed Size (px)
Citation preview
IFT2821Base de données
Chapitre 8Fonctions 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
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
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
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]
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]
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] ?
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
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.
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)
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.
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
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).
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)
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.
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.
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).
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
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 ?
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)
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 ?
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
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
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
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
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
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???)