You are on page 1of 28

SIGL460 Bases de donnes avances

Chapitre 7
Fonctions avances

Universit de Yaound 1
Facult des Sciences
Dpartement dinformatique

Serge Mani, ing. PhD, CISA, CISM


smani@msecnet.com
1

Plan du cours

Introduction
Reprise aprs panne
Gestion de la concurrence
Scurit
Intgrit

Introduction
En plus d'offrir la possibilit de dfinir et
d'interroger une base de donnes, un
SGBD relationnel offre galement des
fonctionnalits avances.
Fonctions avances

Reprise aprs panne


Gestion de la concurrence
Scurit
Intgrit
3

Reprise aprs panne


Transaction
Une unit logique de travail
Exemple
EXEC SQL WHENEVER ERROR GOTO toto;
EXEC SQL UPDATE COMPTE SET solde = solde - 1000 WHERE
num = 8830702;
EXEC SQL UPDATE COMPTE SET solde = solde + 1000 WHERE
num = 6645501;
EXEC SQL COMMIT WORK;
return;
toto:
EXEC SQL ROLLBACK WORK;
4
return;

Reprise aprs panne


Transaction
Proprits
Atomicit : Tout ou rien
Cohrence : Au dbut et la fin d'une transaction,
mais pas forcment l'intrieur
Isolation : Les effets d'une transaction ne sont
visibles par les autres transactions qu' sa fin
Durabilit : Un fois termine, les effets sont
durables

Reprise aprs panne


Journal (log)
Fichier disque (ou bande) dans lequel sont
crites les modifications de la BD (valeurs
concernes avant et aprs chaque requte
lmentaire)
Utiliser pour dfaire une transaction
Problme : Comment garantir la cohrence
de la BD l'intrieur d'une requte
lmentaire ?
6

Reprise aprs panne


Point de commit (syncpoint)
Point du programme dans lequel la BD est
dans un tat cohrent
Dbut du programme et la fin de chaque
transaction
Implications
Toutes les mises jour sont rendues permanentes
Toutes les variables de positionnement sont
dtruites et tous les verrous sur les n-uplets
effacs (cette implication s'applique galement au
ROLLBACK)
7

Reprise aprs panne


Dfaillance systme (soft crash)
Affecte toutes les transactions courantes sans
endommager la BD physiquement
Si la mmoire centrale est effac, lors du
redmarrage :
Les transactions courantes sont annules (ROLLBACK)
Certaines transactions termines doivent tre rejoues
(mmoires tampons non transfres sur disque)
Comment le systme sait quelles transactions annuler et
quelles transactions rejouer ?
8

Reprise aprs panne


Dfaillance systme (soft crash)
Point de contrle
A intervalle rgulier, le systme transfert le contenu des
mmoires tampons dans la bases de donnes (physique) et
produit un compte rendu dans le journal (physique)

Reprise aprs panne


Dfaillance des supports (hard crash)
Destruction physique d'une partie de la base
de donnes.
Reprise aprs panne se fait en deux tapes :
Restaurer la dernire sauvegarde de la base
Rejouer toutes les transactions termines avec
succs depuis cette dernire sauvegarde

10

Gestion de la concurrence
Constat
Des transactions concurrentes peuvent travailler sur
les mmes parties d'une base de donnes
Principe de l'isolation
Principe de la cohrence

Consquences
Problme de la perte d'une mise jour
Problme des dpendances non valides
Problme de l'analyse incohrente
11

Gestion de la concurrence
Quelques dfinitions
Un ordonnancement est un scnario particulier dexcution dun
ensemble de transactions
Il est squentiel si les transactions sont excutes les unes
aprs les autres (non entrelaces)
Il est srialisable sil est quivalent un ordonnancement
squentiel (pas forcment tous les ordonnancement
squentiels possibles)
Deux oprations de lecture ou dcriture dans deux transactions
diffrentes sont dites non permutables si elles portent sur la
mme donne et quau moins une des deux est une criture
Un ordonnancement est srialisable par permutation si les
oprations non permutables sont effectues dans le mme ordre
relatif que dans un ordonnancement squentiel
12

Gestion de la concurrence
Principales stratgies de contrle
Verrouillage
Utilise un mcanisme de verrous

Estampillage
Se base sur lidentification unique des transactions et la
gestion de lordonnancement

Certification
Retarde les critures et la vrification des conflits la fin des
transactions (approche optimiste)

Multi-version
Utilise des versions diffrentes dun mme objet pour viter
les blocages
13

Gestion de la concurrence
Verrouillage
Mcanisme qui permet une transaction de
bloquer l'accs un objet dont elle a besoin
(habituellement un n-uplet) pour qu'il ne soit
modifi de manire imprvisible par les autres
transactions
Deux types de verrous
Verrous exclusifs (X locks)
Verrous d'criture

Verrous partags (S locks)


Verrous de lecture

14

Gestion de la concurrence
Verrouillage
Problme de la perte de mise jour
problme rsolu mais blocage

Problme des dpendances non valides


problme rsolu (dans les deux cas)

Problme de l'analyse incohrente


problme rsolu mais blocage

15

Gestion de la concurrence
Blocage
Situation o deux ou plusieurs transactions sont
mutuellement bloques en attente d'un verrou

Solutions
Technique de l'examen du graphe d'attente
Technique du mcanisme de dlai

Variantes
Rejouer la transaction
Signaler l'application
16

Scurit
Attribution des privilges
GRANT {liste_privilges | ALL [PRIVILEGES]} [ liste_attribut ] ON
objet TO {liste_utilisateurs | PUBLIC}] [WITH GRANT OPTION]

Privilges
ALTER, DELETE, INSERT,SELECT, UPDATE, REFERENCES
Objets
table, vue, ...
WITH GRANT OPTION
Permet l'autoris d'autoriser
17

Scurit
Retrait des privilges
REVOKE {liste_privilges | ALL [PRIVILEGES]} ON objet FROM
{liste_utilisateurs | PUBLIC}] [CASCADE CONSTRAINTS]

Privilges et objets
idem
CASCADE CONSTRAINTS
Supprime les contraintes introduites par l'utilisateur
(fonctionne avec REFERENCES et ALL
PRIVILEGES)

18

Intgrit
Contrainte d'intgrit statique
Respecte pour chacun des tats de la BD
Mcanismes dclaratifs
PRIMARY KEY, UNIQUE, NOT NULL, DOMAIN, FOREIGN
KEY, CHECK, ASSERTION

Procdural
TRIGGER (SQL3)

Contrainte d'intgrit dynamique


Contrainte sur changements d'tats
Rfrence aux tats successifs
TRIGGER
19

Intgrit
CHECK intra-ligne
Plusieurs colonnes de la mme ligne
Les Articles dont le noArticle est suprieur
90 ont un prix suprieur $15.00

20

Intgrit
Check inter-lignes d'une mme table
Concerne plusieurs lignes
Le prixUnitaire d'un Article ne peut dpasser le prix
moyen de plus de $40.00

N.B. Non support par Oracle

21

Intgrit
Check inter-tables

N.B. : Non support par Oracle

22

Intgrit
Assertions
Le prixUnitaire moyen d'un Article ne peut
dpasser $25.00
CREATE ASSERTION assertionPrixMoyenMaximal
CHECK (25 >= SELECT AVG(prixUnitaire)
FROM Article)

Toujours valide par opposition au CHECK


N.B. : Non support par Oracle

23

Intgrit
Assertion inter-tables
La somme des quantits livres pour une ligne de
commande ne peut dpasser la quantit commande

24

Intgrit
Trigger
Opration (procdurale)
Dclenche par vnement pr-dtermin
Excute au niveau serveur de BD
Sapplique aussi bien aux contraintes
statiques que dynamiques
Exemple
Lorsqu'une augmentation du prixUnitaire d'un
Article est tente, il faut limiter l'augmentation
10% du prix en cours
25

Intgrit
Trigger

26

Intgrit
Trigger
UPDATE
Article
SET
prixUnitaire = 15.99
WHERE
noArticle = 10

27

Intgrit
Trigger
Empcher une augmentation du prix unitaire
d'un Article au del de 10% du prix en cours

28

You might also like