Академический Документы
Профессиональный Документы
Культура Документы
Odile PAPINI
Plan du cours
Introduction
D eclencheurs
Transactions
Odile PAPINI
Bibliographie
Livres : G. Gardarin : Bases de donn ees objet et relationnel. Eyrolles ed. 1999. C. J. Date : Introduction aux bases de donn ees. (8i` eme edition). Vuibert ed. 2004. H. Garcia-Molina, J. D. Ullman, J. Widow : Database systems, the complete book. Prentice Hall ed. 2002. Supports de cours : Support de cours : J. Le Maitre : http ://lemaitre.univ-tln.fr/cours.htm Support de cours : C. Sabatier, Universit e de la M editerran ee. Support de cours : N. Durand, ESIL, Dpt INTERNET Support de cours : A. Cornu ejols : www.lri.fr/ antoine
Odile PAPINI Bases de donn ees
D eclencheurs
D enition Un d eclencheur est une r` egle, dite active, de la forme : ev` enement-condition-action Trigger : proc edure stock ee qui est d eclench ee automatiquement par des ev enements sp eci es par le programmeur et ne sex ecutant que lorsquune condition est satisfaite D eclencheur ou Trigger est activ e par une requ ete de mise ` a jour
Odile PAPINI
D eclencheurs
il permet : La possibilit e d eviter les risques dincoh erence dus a ` la pr esence de redondance Lenregistrement automatique de certains ev enements La sp ecication de contraintes li ees ` a l evolution de donn ees (ex : un salaire ne peut quaugmenter) De d enir toutes r` egles complexes li ees ` a lenvironnement dex ecution (ex : restrictions sur des horaires, des utilisateurs)
Odile PAPINI Bases de donn ees
D eclencheurs
Principe dun d eclencheur S equence ev enement-Condition-Action : Trigger d eclench e par un ev enement, sp eci e par le programmeur Insertion, destruction, modication sur une table Le trigger teste une condition : si cette derni` ere nest pas v eri ee, alors lex ecution sarr ete Laction est r ealis ee (toutes op erations sur la base de donn ees)
Odile PAPINI
D eclencheurs
Caract eristiques dun d eclencheur Concernant laspect action : SQL nest pas proc edural Les SGBD fournissent une extension du langage SQL instructions de branchement conditionnel, instructions de r ep etition, aectations, Langage imp eratif permettant de cr eer des v eritables proc edures (proc edures stock ees) :
PL/SQL pour ORACLE T-SQL pour SQL Server norme SQL2003 pour DB2 et MySQL5
Odile PAPINI Bases de donn ees
D eclencheurs
Caract eristiques dun d eclencheur Concernant laspect action : Manipulation simultan ee de lancienne et de la nouvelle valeur dun attribut (permet tests sur l evolution) Un trigger peut etre ex ecut e:
Une fois pour un seul ordre SQL Ou ` a chaque ligne concern ee par cet ordre
Odile PAPINI
D eclencheurs
Caract eristiques dun d eclencheur Il ne peut y avoir quun seul trigger par ev enement sur une table Les triggers permettent de rendre une base de donn ees dynamique
Une op eration peut en d eclencher dautres, qui elles-m emes peuvent entraner en cascade dautres triggers
Odile PAPINI
D eclencheurs
Cr eation dun d eclencheur (1) Sp ecier l ev enement qui d eclenche laction en indiquant le type de la mise ` a jour (INSERT, UPDATE, DELETE), le nom de la table et eventuellement le nom des attributs mis ` a jour Indiquer si laction est r ealis ee avant ou apr` es eventuellement, donner un nom ` a lancien et au nouveau n-uplet (uniquement le nouveau en cas dinsertion et uniquement lancien en cas de suppression)
Odile PAPINI
D eclencheurs
Cr eation dun d eclencheur (2) D ecrire la condition sous laquelle se d eclenche l ev enement sous la forme dune expression SQL bool eenne, c.-` a-d. une expression pouvant etre plac ee dans une clause WHERE D ecrire laction ` a r ealiser sous la forme dune proc edure Indiquer si laction est r ealis ee pour chaque n-uplet mis ` a jour ou une seule fois pour la requ ete
Odile PAPINI
D eclencheurs
CREATE TRIGGER nom trigger BEFORE | AFTER INSERT | DELETE | UPDATE [OF col,...,col] [OR INSERT | DELETE | UPDATE [OF col, ,col] ] ON nom table [[REFERENCING [OLD [AS] old] [NEW [AS] new ]] FOR EACH ROW [WHEN (condition pl/sql)]] bloc pl/sql ;
Odile PAPINI
D eclencheurs
Cr eation dun d eclencheur : exemple V erication quun prix ne peut baisser CREATE OR REPLACE TRIGGER prixNePeutDiminuer BEFORE UPDATE OF prixUnitaire ON Article FOR EACH ROW WHEN (OLD.prixUnitaire > NEW.prixUnitaire) BEGIN raise application error(-20100, le prix dun produit ne peut diminuer) ; END ;
Odile PAPINI
D eclencheurs
Cr eation dun d eclencheur : exemple D eclencheur ins erant un enregistrement ` a lint erieur dune seconde table table2 lorsquune op eration dinsertion sest accomplie dans une premi` ere table table1. il v erie aussi si le nouveau n-uplet poss` ede un attribut attr1 sup erieur ou egal ` a 10 CREATE TRIGGER declencheur1 AFTER INSERT ON table1 FOR EACH ROW WHEN (NEW.attr1 >= 10) BEGIN INSERT INTOtable2 VALUES( :NEW.attr1, :NEW.attr2) ; END ;
Odile PAPINI Bases de donn ees
Transactions : introduction
contraintes de temps r eel Comment eviter les int eractions n egatives entre les utilisateurs et garantir la coh erence de la base de donn ees ?
Odile PAPINI
Transactions
Transaction s equence dinstructions SQL souvent d elimit ee par des instructions de d ebut et de n de transaction Op erations el ementaires dacc` es ` a la base de donn ees : read x : lecture dune donn ee lit un el` ement x et le stocke dans une variable du programme
write x : ecriture dune donn ee ecrit la valeur de la variable de programme x et le stocke dans el` ement de donn ees x
Odile PAPINI Bases de donn ees
Transactions
Exemple de transaction : transfert dune somme S dun compte A vers un compte B T start read A A=A-S write A read B B=B+S write B commit
Odile PAPINI
Transactions
transactions concurrentes Plusieurs transactions peuvent se d erouler en m eme temps Un SGBD doit assurer que toute transaction poss` ede les propri et es suivantes (ACID) propri et es ACID Atomicit e : une transaction est une unit e atomique de traitement Coh erence : une transaction pr eserve la coh erence de la BD Isolation : les ex ecutions des transactions ne doivent pas interf erer les unes avec les autres Durabilit e : les changements appliqu es ` a la BD par une transaction valid ee doivent persister (m eme suite ` a une d efaillance)
Odile PAPINI Bases de donn ees
Odile PAPINI
read A A = A - 50 write A read A read B display A +B (150 est ach e) read B B = B + 50 write B
A = 70
B = 130
T1 est coh erente MAIS T2 devrait acher la valeur 200 : lordre des op erations est tel que T2 ache 150
Odile PAPINI Bases de donn ees
T1 a lu une valeur de A incorrecte : tout doit se passer comme si T2 navait jamais chang eA
Odile PAPINI Bases de donn ees
Odile PAPINI
Odile PAPINI
Un ensemble de transactions concurrentes est correctement synchronis e si leur ex ecution s equentielle g en` ere un etat de la BD identique ` a celui qui serait obtenu si elles etaient ex ecut ees ind ependamment (par un seul utilisateur)
Odile PAPINI
D enition de de la s eriabilit e
Une ex ecution concurrente dun ensemble de transactions est dite s erialisable ssi il existe une ex ecution en s erie equivalente
Odile PAPINI
Odile PAPINI
read A
Odile PAPINI
Odile PAPINI
Odile PAPINI
Le verrouillage est la technique la plus classique pour r esoudre les probl` emes dus ` a la concurrence : Avant de lire ou ecrire une donn ee une transaction peut demander un verrou sur cette donn ee pour interdire aux autres transactions dy acc eder Si ce verrou ne peut etre obtenu, parce quune autre transaction en poss` ede un, la transaction demandeuse est mise en attente
Odile PAPINI
An de limiter les temps dattente, on peut jouer sur : la granularit e du verrouillage : pour restreindre la taille de la donn ee verrouill ee le mode de verrouillage : pour restreindre les op erations interdites sur la donn ee verrouill ee
Odile PAPINI
Odile PAPINI
Deux op erations atomiques sont utilis ees pour manipuler les verrous : lock m (A) : demande dun verrou en mode m sur la donn ee A avec m :
X pour exclusif S pour shared
Odile PAPINI
Odile PAPINI
Odile PAPINI
A = 70
Odile PAPINI
lock X A read A A = A - 50 write A lock X B read B B = B + 50 write B unlock A unlock B lock S B read B display A +B (200 est ach e)
Odile PAPINI Bases de donn ees
B = 130
A=70 A = 50
Odile PAPINI
T1
BD A = 10
Odile PAPINI
INSERT INTO livre VALUES(Les BD, 203) COMMIT SELECT COUNT(*) FROM livre WHERE ann ee = 2003 ; (r` eponse n+1) COMMIT
Odile PAPINI Bases de donn ees
lock X livre attente attente attente attente attente INSERT INTO livre VALUES(Les BD, 203) COMMIT
Bases de donn ees
Odile PAPINI
Odile PAPINI
Odile PAPINI
timeout : annulation dune transaction qui attend un lock depuis un temps x e par le syst` eme
Odile PAPINI
Reprise ` a chaud : apr` es un abandon de transaction ou une panne dordinateur, peut etre r ealis ee automatiquement et rapidement, en sappuyant sur la tenue dun journal qui garde en m emoire tous les ev enements dune transaction Reprise ` a froid : apr` es une panne de disque est plus longue ` a mettre en oeuvre. Elle n ecessite de r ealiser des copies r eguli` eres de la BD et un archivage des mises ` a jour entre deux copies.
Odile PAPINI Bases de donn ees
Odile PAPINI
Odile PAPINI
exemple de journalisation Ev` enement ( T start) (T D a n) (T commit) (check point) Signicatio La transaction T a commen c e La transaction T a mis ` a jour ladonn ee D savaleur est pass ee de a ` an La transaction T a et e conrm e point de reprise
Odile PAPINI
(T1 A 15 14)
(T2 start)
Odile PAPINI