Vous êtes sur la page 1sur 84

261125034.

doc
______________________________________________________________________________

COURS DE
BASE DE DONNEES
Cycle Probatoire

CNAM BORDEAUX 1999-2000


___________________________________________________________________
DI GALLO Frdric

Page 1

20/02/2015

261125034.doc
______________________________________________________________________________

INTRODUCTION
I. HISTORIQUE...................................................................................................................6
II. FONCTIONNALITS D'UN SGBD........................................................................................6
2.1) Niveau dabstraction des donnes...............................................................................6
2.2) Instance et schma.......................................................................................................7
III. PRINCIPES DE BASE............................................................................................................7
3.1) Modle de donnes......................................................................................................7
IV. ARCHITECTURE FONCTIONNELLE D'UN SGBD..................................................................8
V. UTILISATEURS D'UN SGBD...............................................................................................8
VI. CONCEPTION D'UNE BD.....................................................................................................8
6.1) Architecture d'un SGBD..............................................................................................9
6.2) Bibliographie...............................................................................................................9

MODLE RELATIONNEL
I.

STRUCTURE DUNE B.D. RELATIONNELLE......................................................................12


1.1) Schma de relation....................................................................................................12
1.2) Instance de relation...................................................................................................12
1.3) Langages de requte..................................................................................................13
II. ALGEBRE RELATIONNELLE.....................................................................................13
2.1) Projection..................................................................................................................13
2.2) Slection....................................................................................................................14
2.3) Union, Diffrence et Intersection..............................................................................14
2.4) Produit cartsien.......................................................................................................15
2.5) Renommage...............................................................................................................15
2.6) Composition des oprateurs......................................................................................16
2.7) Jointure......................................................................................................................16
III. CALCUL RELATIONNEL PAR N-UPLET.......................................................................17
3.1) Rappel sur le calcul des prdicats.............................................................................17
3.2) Exemples de requtes.................................................................................................17
3.3) Expressions "non saines"...........................................................................................18
3.4) Calcul relationnel par domaine.................................................................................18
3.5) Relation entre les 3 langages.....................................................................................18
IV. LE LANGAGE SQL.......................................................................................................19
4.1) Structure de base.......................................................................................................19
4.2) Oprateurs ensemblistes............................................................................................20
4.3) Les fonctions dagrgats............................................................................................21
4.4) Requtes imbriques..................................................................................................22
4.5) Les vues.....................................................................................................................23
4.6) Modification des relations.........................................................................................24
V. SQL EN TANT QUE LDD.............................................................................................25
5.1) Domaines...................................................................................................................25
5.2) Cration des tables....................................................................................................25
5.3) Mcanisme des droits................................................................................................28
VI. EXERCICES : REQUETES SQL...................................................................................30
6.1) Exercice 1: Base Cinma...........................................................................................30
6.2) Exercice 2: Base Enseignement.................................................................................30

___________________________________________________________________
DI GALLO Frdric

Page 2

20/02/2015

261125034.doc
______________________________________________________________________________

FICHIERS ET DISQUES
I. STRUCTURE FONCTIONNELLE D'UN SGBD......................................................................33
II. LES DISQUES................................................................................................................34
2.1) Paramtres d'un disque.............................................................................................34
2.2) Placement des pages sur disque................................................................................35
III. GESTIONNAIRE DE TAMPON...................................................................................35
3.1) Principes....................................................................................................................35
3.2) Critre de remplacement des pages :........................................................................36
IV. FORMATS D'ENREGISTREMENTS...........................................................................36
4.1) Taille fixe...................................................................................................................36
4.2) Taille variable............................................................................................................36
V. FORMAT DES PAGES...................................................................................................37
5.1) Enregistrements de taille fixe....................................................................................37
5.2) Enregistrements de taille variable.............................................................................37
VI. FICHIERS NON TRIES (TAS).......................................................................................38
VII.LES INDEX....................................................................................................................38
VIII. LE CATALOGUE DU SYSTEME..........................................................................39
IX. CONCLUSION...............................................................................................................39

ORGANISATION DES FICHIERS ET INDEX


I.

ORGANISATION DES FICHIERS...............................................................................42


1.1) Modle de cot...........................................................................................................42
1.2) Oprations et Organisations considres..................................................................42
II. LES INDEX....................................................................................................................46
2.1) Index ISAM................................................................................................................47
2.2) Arbres B+...................................................................................................................48
2.3) Tri externe..................................................................................................................54
III. EXERCICES...................................................................................................................57
3.1) Soit l'arbre B+ d'ordre 1 suivant :.............................................................................57
3.2) Insertion d'une cl dans un autre arbre.....................................................................58
3.3) Cot de cration dun arbre B+................................................................................59

TRANSACTIONS
IV. LE CONCEPT DE TRANSACTION.............................................................................62
V. LES ETATS D'UNE TRANSACTION...........................................................................63
VI. EXECUTIONS CONCURRENTES...............................................................................64
3.1) Ordonnancement........................................................................................................64

Reprise sur pannes


Dpendances fonctionnelles
Implmentation des oprateurs relationnels
Bases de Donnes distribues
Systmes d'aide la dcision
Le modle conceptuel Entit - Association
___________________________________________________________________
DI GALLO Frdric

Page 3

20/02/2015

261125034.doc
______________________________________________________________________________

INTRODUCTION
AUX
BASES
DE
DONNEES

___________________________________________________________________
DI GALLO Frdric

Page 4

20/02/2015

261125034.doc
______________________________________________________________________________

INTRODUCTION
I. HISTORIQUE.................................................................................................................. 6
II. FONCTIONNALITS D'UN SGBD....................................................................................... 6
2.1) Niveau dabstraction des donnes.............................................................................. 6
2.2) Instance et schma...................................................................................................... 7
III. PRINCIPES DE BASE........................................................................................................... 7
3.1) Modle de donnes..................................................................................................... 7
IV. ARCHITECTURE FONCTIONNELLE D'UN SGBD................................................................. 8
V. UTILISATEURS D'UN SGBD.............................................................................................. 8
VI. CONCEPTION D'UNE BD.................................................................................................... 8
6.1) Architecture d'un SGBD............................................................................................. 9
6.2) Bibliographie.............................................................................................................. 9

___________________________________________________________________
DI GALLO Frdric

Page 5

20/02/2015

261125034.doc
______________________________________________________________________________

BASE DE DONNES CNAM BORDEAUX 1999-2000

INTRODUCTION
1. HISTORIQUE
Ds le dbut de l'informatique, on a voulu construire des systmes pour effectuer des calculs
(quations diffrentielles, calcul matriciel, ... ). Aujourdhui, la tendance actuelle est la gestion
de grandes quantits d'informations. Cela revient stocker des donnes et manipuler ces
donnes. Notons que les donnes peuvent tre de natures diverses et les oprations plus ou
moins compliques.

Exemples d'applications :
Applications de gestion (paye, stock, ...), applications transactionnelles (banque,
rservation...), applications de documentation (bibliothque, cartographie, ... ), Gnie logiciel
(ateliers de gnie logiciel ), Ingnierie (PAO, CAO, ... ).

2. Fonctionnalits d'un SGBD


Les problmes sont de stocker des donnes (BD) et de manipuler des donnes (SGBD).
Gestion du stockage : faire face des tailles normes de donnes.
Persistance: Les donnes survivent aux programmes qui les crent.
Fiabilit : Mcanismes de reprise sur pannes (logiciel ou matriel)
Scurit - Confidentialit : Droits d'accs aux donnes
Cohrence : Contraintes d'intgrit contrle de concurrence: Conflits d'accs.
Rpercussions sur la cohrence
Interfaces homme machine : Convivialit + diffrents types d'utilisateurs
Distribution : Donnes stockes sur diffrents sites
Optimisation : Transferts MC-MS

2.1) Niveau dabstraction des donnes


Vue 1

Vue 2

Vue n

Niveau logique
Niveau physique

Niveau externe :
Nom, Prnom

Nom, Prnom, Adresse, Salaire


Taille Nom : 20 Octets
Taille Prnom 20 Octets
Taille Adresse 40 Octets
Taille Salaire 4 Octets

___________________________________________________________________
DI GALLO Frdric

Page 6

20/02/2015

261125034.doc
______________________________________________________________________________

2.2) Instance et schma


Cest tout comme les notions de type et de variable dans les langages de
programmation standard.
Schma: Cest la structure logique de la base de donnes.
Exemples : Ensembles de clients, de produits et de fournisseurs.

Instance : Cest le contenu effectif de la base de donnes un instant donn.

3. Principes de base
Indpendance physique: Les applications manipulant la base au niveau logique ne doivent
pas tre rcrites si la structure physique est modifie.

Indpendance logique : Une modification au niveau logique nimplique pas forcement une
modification des applications utilisant le niveau externe.

3.1) Modle de donnes


Cest un ensemble doutils permettant de dfinir les schmas et instances, et de dfinir les
oprations possibles sur les instances (et les schmas).
Le modle relationnel permet une description tabulaire des donnes :
CLIENT
Nom
Jean Dupont
Robert Martin

Adresse
1, rue neuve
5, Bd de la vieille

Num_Cte
1215
3456

Solde
23000
25000

Num_Cte
1215
3456

COMPTE

Le modle Entit-Association permet une description graphique :


NSS

Num

Nom

Solde

Adresse

CLIENT

TITULAIR
E

COMPTE

___________________________________________________________________
DI GALLO Frdric

Page 7

20/02/2015

261125034.doc
______________________________________________________________________________

4. Architecture fonctionnelle d'un SGBD


Niveau physique
Gestion de MS, de concurrence, de la fiabilit, transferts MG-MS, structure d'index,
excution des programmes objet, optimiseur de requtes

Niveau logique
Scurit (confidentialit), Intgrit (en partie)

Niveau externe
Environnement de programmation, Interfaces graphiques

5. Utilisateurs d'un SGBD


Le SGBD offre deux types de langages :
LDD: Dfinition des donnes (schma)
LMD: Manipulation des donnes (requte et mise jour)

Administrateur:
Dfinition du schma logique, dfinition des structures de stockage et des mthodes d'accs,
autorisations, spcifications des contraintes, maintenance de la performance

Concepteur et programmeur d'applications


Gnralement, il est informaticien, il connat bien le SGBD et il connat au moins le LMD et
un ou plusieurs langages de programmation.

Utilisateur "naf"
Secrtaire, caissire, ...

6. Conception d'une BD
On peut la dcouper en plusieurs tapes :
1. Analyse des besoins
2. Description conceptuelle
3. Conception logique (schma logique)
4. Conception physique
A savoir que les 2 premires phases sont indpendantes du SGBD et que le passage de la phase
2 la phase 3 peut tre en partie automatis.

___________________________________________________________________
DI GALLO Frdric

Page 8

20/02/2015

261125034.doc
______________________________________________________________________________

6.1) Architecture d'un SGBD


Requtes
Optimisation et excution des requtes
Oprateurs relationnel
Fichiers et mthodes d'accs
Gestionnaire du tampon
Gestionnaires des disques

Ces 3 modules tiennent


compte de la concurrence
et de la reprise sur panne

BD

6.2) Bibliographie
Bases de donnes relationnelles (Les systmes et leurs langages).
G. Gardarin - Eyrolles
Bases de donnes et systmes relationnels.
C. Delobel et M. Adiba - Dunod
Systmes de gestion de bases de donnes.
H. Korth et A. Silberschatz - Mac Graw-Hill
The principles of databases and knowledge base systems. Volumes I et Il.
J.D. Uliman - Computer Science Press
Database management systems.
R. Ramakrishnan - McGraw-Hill

___________________________________________________________________
DI GALLO Frdric

Page 9

20/02/2015

261125034.doc
______________________________________________________________________________

INTRODUCTION
AU
MODELE
RELATIONNEL

___________________________________________________________________
DI GALLO Frdric

Page 10

20/02/2015

261125034.doc
______________________________________________________________________________

MODLE RELATIONNEL
I.

STRUCTURE DUNE B.D. RELATIONNELLE..................................................................... 12


1.1) Schma de relation................................................................................................... 12
1.2) Instance de relation.................................................................................................. 12
1.3) Langages de requte................................................................................................. 13
II. ALGEBRE RELATIONNELLE.................................................................................... 13
2.1) Projection................................................................................................................. 13
2.2) Slection................................................................................................................... 14
2.3) Union, Diffrence et Intersection............................................................................. 14
2.4) Produit cartsien...................................................................................................... 15
2.5) Renommage.............................................................................................................. 15
2.6) Composition des oprateurs..................................................................................... 16
2.7) Jointure..................................................................................................................... 16
III. CALCUL RELATIONNEL PAR N-UPLET...................................................................... 17
3.1) Rappel sur le calcul des prdicats............................................................................ 17
3.2) Exemples de requtes................................................................................................ 17
3.3) Expressions "non saines".......................................................................................... 18
3.4) Calcul relationnel par domaine................................................................................ 18
3.5) Relation entre les 3 langages.................................................................................... 18
IV. LE LANGAGE SQL...................................................................................................... 19
4.1) Structure de base...................................................................................................... 19
4.2) Oprateurs ensemblistes........................................................................................... 20
4.3) Les fonctions dagrgats........................................................................................... 21
4.4) Requtes imbriques................................................................................................. 22
4.5) Les vues.................................................................................................................... 23
4.6) Modification des relations........................................................................................ 24
V. SQL EN TANT QUE LDD............................................................................................ 25
5.1) Domaines.................................................................................................................. 25
5.2) Cration des tables................................................................................................... 25
5.3) Mcanisme des droits............................................................................................... 28
VI. EXERCICES : REQUETES SQL.................................................................................. 30
6.1) Exercice 1: Base Cinma.......................................................................................... 30
6.2) Exercice 2: Base Enseignement................................................................................ 30

___________________________________________________________________
DI GALLO Frdric

Page 11

20/02/2015

261125034.doc
______________________________________________________________________________

BASE DE DONNES CNAM BORDEAUX 1999-2000

MODLE RELATIONNEL
I.

Structure dune B.D. Relationnelle

Les donnes sont structures en tables (relations) Etant donns les ensembles A1,, An ,une
relation r est un sous ensemble de A1 x A2 x ... x An.. Une relation est un ensemble de n-uplets
(ou tuples) de la forme <a1,... an> avec ai Ai.
Exemple : On a trois ensembles : Nom, Num_Cte et Rue avec
Nom = {Durand, Dupont, Dupond}
Num_Cte = {123, 124, 235 , 226}
Rue = {Neuve, vieille, Courte }
Alors
{< Dupont, 123, Neuve >,
<Dupont, 124, Neuve>,
<Dupond, 235, Neuve >,
<Durand, 123, Vieille> }
est une relation sur Nom x Num_Cte x Rue

1.1) Schma de relation


Une table est une relation (au sens mathmatique) qui a un nom
A1,,. ,An sont des attributs
R(A1,,... ,An) est un schma de relation.
(R est le nom du schma de la relation)
On note Att (R) pour dsigner l'ensemble des attributs de R. L'arit de R est la cardinalit
de Att(R). Le domaine de Ai (not dom(Ai)) est l'ensemble des valeurs associes Ai. Cet
ensemble peut tre fini ou non

1.2) Instance de relation


Emp

Nom
Dupont
Dupond
Durand

Num_Cte
124
235
123

Rue
Neuve
Neuve
Vieille

Att(Emp) = {Nom, Num_Cte Rue}


Arit(Emp) = 3
Dom(Num_Cte) = les entiers naturels (infini)
Dom(Nom) = chanes de moins de 20 caractres (fini)

___________________________________________________________________
DI GALLO Frdric

Page 12

20/02/2015

261125034.doc
______________________________________________________________________________

1.3) Langages de requte


Ce sont les langages qui permettent d'interroger la BD.

Langages relationnels "purs"


Algbre relationnelle
Calcul relationnel par n-uplet
Calcul relationnel par domaine

Langages pratiques

SQL (Structured Query Language)


QUEL (Query Language)
SEQUEL (Structured English as a Query Language)
QBE (Query By Example)

2. ALGEBRE RELATIONNELLE
On peut la dfinir en six oprations de base dont certaines sont unaires, d'autres sont binaires :
1.
2.
3.
4.
5.
6.

Projection
Slection
Union
Diffrence
Produit cartsien
Renommage

2.1) Projection
Notation : A1 ,...,Ak (r) o r est le nom de relation et 1 i k Ai Att(r).
Le rsultat de cette opration est une relation avec k colonnes

Exemple de projection :
On veut extraire les noms des employs de la relation Emp ci-dessous :
Emp

Nom (Emp) =

Nom
Dupont
Dupont
Durand

Num_Cte
124
235
123

Rue
Neuve
Neuve
Vieille

Dupont, Durand

___________________________________________________________________
DI GALLO Frdric

Page 13

20/02/2015

261125034.doc
______________________________________________________________________________

2.2) Slection
Notation : Cond (r) o r est le nom d'une relation et Cond est une condition de la forme
1. Atti Attj ou Atti constante avec {< , , =, , >, }, ou bien
2. une conjonction () ou une disjonction (V) de conditions
Le rsultat est une relation qui contient tous les n-uplets de r qui satisfont la condition Cond

Exemple de slection :
On veut avoir les informations concernant les employs dont le nom est Dupont
Emp

Nom
Dupont
Dupont
Durand

Num_Cte
124
235
123

Rue
Neuve
Neuve
Vieille

(Nom=Dupont) =
Nom
Dupont
Dupont

Num_Cte Rue
124
Neuve
235
Neuve

2.3) Union, Diffrence et Intersection

Oprations ensemblistes classiques


Notation : r U s; r - s; r s
r U s = {t | t r ou t s}
r - s = {t | t r et t s}
r s = {t | t r et t s}
Oprations binaires
Il faut que Att(r) = Att(s)
r

r-s=

B
1
1

B
1
2
1

s A

rs= A

B
1
2
1

B
2
3

rs= A

B
2

___________________________________________________________________
DI GALLO Frdric

Page 14

20/02/2015

261125034.doc
______________________________________________________________________________

___________________________________________________________________
DI GALLO Frdric

Page 15

20/02/2015

261125034.doc
______________________________________________________________________________

2.4) Produit cartsien


Notation : r x s

avec r x s = { tv | t r et v s }

O tv est la concatnation des tuples t et v.


Cette opration n'est pas dfinie si Att(r) Att(s) 0.
Att(r x s) = Att(r) U Att(s)

Exemple de Produit cartsien :


r

B
1
2

rxs

s C

D E
10 +
10 -

B C D E
1 10 +
1 10 2 10 +
2 10 -

2.5) Renommage
Notation : Atti Att'i (r) .
Ceci permet de renommer l'attribut Atti par Atti.
Le rsultat est la relation r avec un nouveau schma

Exemple de Renommage :
r

A
10
20

AB (r) =

B
10
20

___________________________________________________________________
DI GALLO Frdric

Page 16

20/02/2015

261125034.doc
______________________________________________________________________________

2.6) Composition des oprateurs


On peut appliquer un oprateur de l'algbre au rsultat d'une autre opration.
Exemple : A ( B=20(r)). On dit que l'algbre relationnelle est un langage ferm car chaque
opration prend une ou deux relations et retourne une relation.
Soient les schmas de relation Tit(Id, Nom, Adresse) et Cte(Num, Solde, Id_Tit). Le compte
de numro Num appartient au client identifi par Id_Tit. On veut avoir (1) le numro, (2) le
solde et (3) le nom du titulaire de chaque compte dbiteur.
Id
A25
B212
1.
2.

Tit
Nom
Dupont
Durand

Adresse
Rue neuve
Rue vieille

Cte
Solde
25234.24
-100
230

Num
120
135
275

Id_Tit
A25
A25
B212

Cte x Tit retourne une relation qui associe chaque tuple de Cte, tous les tuples de Tit.
Id=Id_Tit (Cte x Tit) limine les tuples o le compte n'est pas associ au bon titulaire.

So1de < 0 ( Id=Id_Tit(Cte x Tit)) retient les comptes dbiteurs


4. Nom, Num, Solde ( Solde<0 ( Id=Id_Tit (Cte x Tit))) limine les attributs non demands
3

Comment aurait-on pu faire si dans Cte on avait Id au lieu de Id_Tit comme nom d'attribut ?

2.7) Jointure
Notation : r ixi s
Att(r ixi s) = Att(r) U Att(s)
Rsultat : Soient tr r et ts s. trts r ixi s SSI A Att(r) Att(s) tr.A = ts.A

Exemple de Jointure
r

A B
10
15
1
r ixi s =

s B
10
1

B
10
1

C
+
-

C
+
-

Noter que le mme rsultat peut tre obtenu comme suit


1. temp1 := BB1(s)
2. temp2 := r x temp1
3. temp3 := B=B1 (temp2)
4.

res := A,B,C(temp3)

___________________________________________________________________
DI GALLO Frdric

Page 17

20/02/2015

261125034.doc
______________________________________________________________________________
La jointure n'est pas une opration de base de l'algbre relationnelle

___________________________________________________________________
DI GALLO Frdric

Page 18

20/02/2015

261125034.doc
______________________________________________________________________________

3. CALCUL RELATIONNEL par n-uplet

Les requtes sont de la forme {t | P(t)} .


C'est l'ensemble des n-uplets tels que le prdicat P(t) est vrai pour t.
t est une variable n-uplet et t [A] dsigne la valeur de l'attribut A dans t
t r signifie que t est un n-uplet de r
P est une formule de la logique de premier ordre

3.1) Rappel sur le calcul des prdicats


Des ensembles d'attributs, de constantes, de comparateurs {<, }
Les connecteurs logiques 'et' , 'ou' V et la ngation
Les quantificateurs et
- t r (Q(t)) : Il existe un tuple t de r tel que Q est vrai
- t r(Q(t)) : Q est vrai pour tout t de r

3.2) Exemples de requtes


Considrons les schmas de relations suivants :
Film (Titre, Ralisateur, Acteur) instance f
Programme (Nomcin, Titre, Horaire) instance p
f contient des infos sur tous les films et p concerne le programme Bordeaux
Les films raliss par Bergman
{t | t f t [Ralisateur] = "Bergman" }
Les films o Jugnot et Lhermite jouent ensembles
{ t | t f s f (t[Titre] = s[Titre] t[Acteur] = "Jugnot" s[Acteur] = "Lhermite") }
Les titres des films programms Bordeaux
{t | s p (t[Titre] = s[Titre]) }
Les films programms l'UGC mais pas au Trianon
{t | s p ( s[Titre] = t[Titre] s[NomCin] = "UGC"
u p ( u[NomCin] = "Trianon" u[Titre] = t[Titre] )) }
Les titres de films qui passent l'UGC ainsi que leurs ralisateurs
{ t | s p ( u f (s[NomCin] = 'UGC"
s[Titre] = u[Titre] = t[Titre] t[Ral] = u[Ral])) }

___________________________________________________________________
DI GALLO Frdric

Page 19

20/02/2015

261125034.doc
______________________________________________________________________________

3.3) Expressions "non saines"


Il est possible d'crire des requtes en calcul qui retournent une relation infinie.
Exemple : Soit NumCte(Num) avec l'instance n et la requte {t | t n} i.e les numros de
compte non recenss. Si on considre que le Dom(Num) = N, alors la rponse cette requte
est infinie.
Une requte est saine si quelle que soit l'instance de la base dans laquelle on l'value, elle
retourne une rponse finie. Dpendance du domaine.

3.4) Calcul relationnel par domaine


Les requtes sont de la forme : { < x1,,xn > | P(x1,,..., xn )}
Les xi reprsentent des variables de domaine.
P(x1 ,... , xn) est une formule similaire celles qu'on trouve dans la logique des prdicats.
Exemple : Les titres de films programms l'UGC de Bordeaux
{<t> | <nc, t, h> p( nc = "UGC") }

3.5) Relation entre les 3 langages

Toute requte exprime en algbre peut tre exprime par le calcul.

Toute requte "saine" du calcul peut tre exprime par une requte de l'algbre.

Les 3 langages sont donc quivalents d'un point de vue puissance d'expression.

L'algbre est un langage procdurale (quoi et comment) alors que le calcul ne l'est
pas (seulement quoi).

___________________________________________________________________
DI GALLO Frdric

Page 20

20/02/2015

261125034.doc
______________________________________________________________________________

4. LE LANGAGE SQL
C'est un langage fourni avec tout SGBD relationnel commercialis. C'est un standard
reconnu par l'IS0 depuis 87 (standard donc portabilit). On en est la version 2 (SQL92) et la
version 3 est annonce pour bientt. SQL est un LDD et un LMD. Il est aussi utilis pour
dfinir des vues, les droits d'accs, manipulation de schma physique

4.1) Structure de base


Une requte SQL typique est de la forme
SELECT A1,, ... , An
FROM r1,... ,rm
WHERE P
Les Ai sont des attributs, les rj sont des noms de relations et P est un prdicat.
Cette requte est quivalente A1 ,, An ( P(r1 x x rm))

La clause SELECT
La clause SELECT correspond la projection de l'algbre.
Les titres des films :
SELECT Titre
FROM
film
L'utilisation de l'astrisque permet de slectionner tous les attributs :
SELECT *
FROM
film
SQL autorise par dfaut les doublons. Pour le forcer les liminer, on utilise la clause
DISTINCT :
SELECT DISTINCT Titre
FROM
film
SELECT peut contenir des expressions arithmtiques ainsi que le renommage d'attributs :
SELECT
Prix_HT * 1.206 AS Prix TTC
FROM
produit

La clause WHERE
Elle correspond au prdicat de slection dans l'algbre. La condition porte sur des attributs
des relations qui apparaissent dans la clause FROM
SELECT DISTINCT
FROM
WHERE

Titre
film
Ralisateur "Bergman" AND Acteur = "Stewart"

SQL utilise les connecteurs AND, OR et NOT. Pour simplifier la clause WHERE, on peut
utiliser la clause BETWEEN.
SELECT Num
FROM
compte
WHERE Solde BETWEEN 0 AND 10000

___________________________________________________________________
DI GALLO Frdric

Page 21

20/02/2015

261125034.doc
______________________________________________________________________________

La clause FROM
Elle correspond au produit cartsien de l'algbre.
Le titre et le ralisateur des films programms l'UGC de Bordeaux.
SELECT Titre, Ralisateur
FROM film, programme
WHERE film.titre = programme.titre AND programme.NomCin = "UGC"

Les variables n-uplets


Elles sont dfinies dans la clause FROM
SELECT Titre, Ralisateur
FROM
film AS f, programme AS p
WHERE f.titre = p.titre AND p.NomCin = "UGC"
Soit Emp (Id, Nom, Id_chef)
SELECT el.Nom, e2.Nom AS Nom_Chef
FROM
emp el, emp e2
WHERE el.Id_chef = e2.Id

La clause ORDER BY
SQL permet de trier les rsultats de requte
SELECT *
FROM
programme
WHERE NomCin="UGC"
ORDER BY
Horaire ASC, Titre DESC

4.2) Oprateurs ensemblistes


SELECT ...

UNION/ INTERSECT/ EXCEPT


SELECT ...
Attention : Ces oprations liminent les doublons, pour pouvoir les garder, utiliser la place
INTERSECT ALL... Si t apparat m fois dans r et n fois dans s alors il apparat :
m + n fois dans r UNION ALL s
min(m, n) fois dans r INTERSECT ALL s
max(0, m - n) fois dans r EXCEPT ALL s

___________________________________________________________________
DI GALLO Frdric

Page 22

20/02/2015

261125034.doc
______________________________________________________________________________

4.3) Les fonctions dagrgats


Ce sont des fonctions qui agissent sur des ensembles (multi-ensembles) de valeurs :
AVG :
la valeur moyenne de l'ensemble
MIN :
la valeur minimale
MAX :
la valeur maximale
SUM :
le total des valeurs de l'ensemble
COUNT : le nombre de valeur dans l'ensemble
SELECT COUNT(Titre) FROM Programme
Cette requte retourne le nombre de films programms Bordeaux.
Attention : Un mme titre peut tre compt plusieurs fois s'il est programm des heures
diffrentes et dans des salles diffrentes.
SELECT COUNT( DISTINCT Titre) FROM Programme

Agrgats et GROUP BY
Le nombre de films programms dans chaque salle :
SELECT NomCin, COUNT (DISTINCT Titre)
FROM
Programme
GROUP BY NomCin
Les attributs qui apparaissant dans la clause SELECT en dehors des agrgats doivent tre
associs la clause GROUP BY

Agrgats et la clause HAVING


Les salles o sont programms plus de 3 films :
SELECT NomCin, COUNT(DISTINCT Titre)
FROM
Programme
GROUP BY NomCin
HAVING COUNT (DISTINCT Titre) > 3
Le prdicat associ la clause HAVING est test aprs la formation des groupes dfinis
dans la clause GROUP BY.

___________________________________________________________________
DI GALLO Frdric

Page 23

20/02/2015

261125034.doc
______________________________________________________________________________

4.4) Requtes imbriques


SQL fournit un mcanisme qui permet d'imbriquer les requtes. Une sous requte est une
requte SQL (SELECT-FROM-WHERE) qui est incluse dans une autre requte. Elle apparat
au niveau de la clause WHERE de la premire requte.
Les films programms l'UGC non programms au Trianon
SELECT Titre
FROM
Programme
WHERE NomCin="UGC" and Titre NOT IN (
SELECT Titre
FROM
Programme
WHERE NomCin ="Trianon" )
Trouver les comptes dont les soldes sont suprieurs aux soldes des comptes de Durand :
Compte (Num, Solde, NomTit)
SELECT *
FROM
Compte
WHERE Solde > ALL (
SELECT Solde
FROM
Compte
WHERE NomTit = "Durand" )
En remplaant ALL par SOME, on obtient les comptes dont les soldes sont suprieur au
solde d'au moins un compte de Durand.
Les cinmas qui passent tous les films programms l'UGC
SELECT NomCin
FROM
programme pi
WHERE NOT EXISTS (
(SELECT DISTINCT Titre
FROM
programme
WHERE NomCin-"UGC")
EXCEPT
(SELECT DISTINCT Titre
FROM programme p2
WHERE pl.NomCin = p2.NomCin))

Test d'absence de doublons


La clause UNIQUE permet de tester Si une sous requte contient des doublons.
Les titres de films programms dans une seule salle et un seul horaire :
SELECT p.Titre
FROM
programme p
WHERE UNIQUE (
SELECT pl.Titre
FROM
programme p1
WHERE p.Titre = pl Titre)

___________________________________________________________________
DI GALLO Frdric

Page 24

20/02/2015

261125034.doc
______________________________________________________________________________

Les relations drives


Titulaire (Nom, Adresse)
Compte (Num, Solde, NomTit)
Donner le solde moyen des comptes de chaque personne ayant un solde moyen > 1000
SELECT NomTit, SoldeMoyen
FROM (
SELECT NomTit, AVG(Solde)
FROM
Compte
GROUP BY NomTit )
AS Result (NomTit, SoldeMoyen)
WHERE SoldeMoyen > 1000
Noter qu'on aurait pu exprimer cette requte en utilisant la clause HAVING

4.5) Les vues


Equivalent une requte Access. Une vue peut tre considre comme une relation
quelconque lors de lexpression des requtes. Une vue est une relation virtuelle dans le sens o
elle ne contient pas effectivement des tuples . Elles permettent de dfinir des relations
virtuelles dans le but de :
Cacher certaines informations des utilisateurs,
Faciliter l'expression de certaines requtes,
Amliorer la prsentation de certaines donnes.
Une vue est dfinie par une expression de la forme :
CREATE VIEW V AS requte
Requte est une expression quelconque de requte et V est le nom de la vue.
Emp (NumE, Salaire, Dept, Adresse)
CREATE VIEW EmpGen AS (
SELECT NumE, Dept, Adresse
FROM Emp )
Toutes les informations concernant les employs du dpartement 5 :
SELECT *
FROM
EmpGen
WHERE Dept = 5

___________________________________________________________________
DI GALLO Frdric

Page 25

20/02/2015

261125034.doc
______________________________________________________________________________

4.6) Modification des relations


Suppression :
Supprimer tous les employs du dpartement 5 : DELETE FROM Emp
WHERE Dept = 5
Supprimer du programme tous les films programms l'UGC o un des acteurs est DiCaprio :
DELETE FROM programme
WHERE NomCin = "UGC' AND EXISTS (
SELECT Titre
FROM
film
WHERE programme.Tite = film.Titre AND film.Acteur = "DiCaprio" )
Supprimer les comptes dont le solde est < la moyenne des soldes de tous les comptes :
DELETE FROM compte
WHERE Solde < (SELECT AVG (Solde) FROM compte)
Problme : Si les n-uplets sont supprims un un de la relation compte, alors chaque
suppression, on a une nouvelle valeur de AVG (Solde). La solution de SQL est de d'abord,
calculer AVG(Solde) et ensuite de supprimer les tuples satisfaisant le test sans recalculer
chaque fois la nouvelle valeur de AVG (Solde).

Insertion
Insrer un n-uplet dans la relation "compte" :
INSERT INTO compte (Num, Solde, NomTit) VALUES (511,1000, "Dupont")
ou bien
INSERT INTO compte VALUES (511,1000, Dupont")
Insre un n-uplet avec un solde inconnu.
INSERT INTO compte VALUES (511, NULL, "Dupont")
ou bien
INSERT INTO compte(Num, NomTit) VALUES (511, "Dupont")
Les 2 dernires MAJ sont quivalentes sauf si une valeur par dfaut du Solde a t spcifie
lors de la dfinition de la table compte.
Supposons qu'on a cre une relation TitMoy (NomTit, Moyenne) qui doit contenir le nom
des clients de la banque ainsi que la moyenne des soldes de leurs comptes.
INSERT INTO TitMoy (NomTit, Moyenne)
SELECT NomTit, AVG(Solde)
FROM
compte
GROUP BY NomTit

Update
Rajouter 1% tous les comptes dont le solde est infrieur 500 :
UPDATE compte
SET Solde = Solde * 1.01
WHERE Solde 500
La condition qui suit la clause WHERE peut tre une requte SQL.

___________________________________________________________________
DI GALLO Frdric

Page 26

20/02/2015

261125034.doc
______________________________________________________________________________

5. SQL EN TANT QUE LDD

Le schma des relations


Les domaines des attributs
Les contraintes d'intgrit
La gestion des autorisations
La gestion du stockage physique
Les index associs chaque relation

5.1) Domaines

char(n) : chane de caractres de taille fixe n


varchar(n) : chane de caractres de taille variable mais infrieure n
int : Entier (un sous ensemble fini des entiers, dpend de la machine)
smallint : Entier. Sous ensemble de int
numeric(p,d) : Rel cod sur p digits et max d digits pour partie droite de la dcimale.
real : Un rel flottant.
date : YYYY-MM-DD (anne, mois, jours)
time : HH :MM :SS (heure, minute, seconde)

Les valeurs nulles (NULL) sont possibles dans tous les domaines. Pour dclarer qu'un
attribut ne doit pas tre nul, il faut rajouter NOT NULL
CREATE DOMAIN nom-client char(20)

5.2) Cration des tables


On utilise la clause CREATE TABLE
CREATE TABLE compte (
Num int NOT NULL,
Solde int,
NomTit varchar( 20))
Rajout de contraintes
CREATE TABLE compte (
Num int NOT NULL,
Solde int DEFAULT 0,
NomTit varchar(20),
PRIMARY KEY (Num),
CHECK (Num > 1) )
En SQL92, si un attribut est cl alors il est diffrent de NULL.

___________________________________________________________________
DI GALLO Frdric

Page 27

20/02/2015

261125034.doc
______________________________________________________________________________

Manipulation de schma
La commande DROP TABLE permet de supprimer une table.
Ex:
DROP TABLE compte.
Si une vue est dfinie sur la table compte alors il faut utiliser
DROP TABLE compte CASCADE
La commande ALTER TABLE permet de modifier le schma d'une relation.
Exemple : ALTER TABLE compte ADD Date_ouverture
date
ALTER TABLE compte DROP Solde CASCADE

Cl trangre
Soient Personne (NSS, Nom) et Voiture (Matricule, modle, Proprio).
Proprio correspond au NSS du propritaire. C'est une cl trangre dans le schma
Voiture car c'est une cl dans un autre schma.
CREATE TABLE Voiture (
Matricule CHAR(8),
Modele CHAR(10),
Proprio CHAR(3),
PRIMARY KEY(Matricule),
FOREIGN KEY(Proprio) REFERENCES Personne
ON [DELETE | UPDATE] CASCADE |
RESTRICT |
SET NULL
)
CASCADE: Si une personne est supprime, alors les voitures qu'elle possde sont supprimes.
RESTRICT : Le systme refuse la suppression d'une personne s'il y a des voitures qui lui sont
rattaches. C'est l'option par dfaut.
SET NULL: Si une personne est supprime, alors l'attribut Proprio prend la valeur NULL.
L'insertion d'une voiture ne peut se faire que si le proprio existe dans Personne (ou bien
valeur nulle).

___________________________________________________________________
DI GALLO Frdric

Page 28

20/02/2015

261125034.doc
______________________________________________________________________________

Va1eurs nu11es
Employ

Nom
Dupont
Martin

Salaire
10 000
NULL

SELECT *
FROM
Employ
WHERE Salaire > 12000
Ne retourne aucun tuple.
Pareil si la condition est WHERE Salaire < 8000
SELECT SUM (Salaire) FROM Employ;

Retourne 10000

SELECT COUNT (Salaire) FROM Employ;

Retourne 2

SELECT AVG (Salaire) FROM Employ;


Retourne 10000
Trs diffrent de SELECT SUM (Salaire) / COUNT (Salaire) FROM Employ car
COUNT prend en compte la valeur NULL donc cela fera 10000/2=5000.
En fait cest quivalent :SELECT SUM (Salaire) / COUNT (Salaire) FROM Employ
WHERE Salaire IS NOT NULL
SELECT COUNT(*) FROM Employ
WHERE Salaire IS NOT NULL;

Retourne 1

Mise jour des vues


Personne (Nom, Salaire). Supposons que la table Personne est vide.
CREATE VIEW Gros_Salaire AS
SELECT *
FROM Personne
WHERE Salaire > 10000
INSERT INTO Gros_Salaire VALUES("Martin", 5000)
L'effet de cette commande est d'insrer dans la table Personne le tuple < "Martin", 5000>.
Noter que si l'on fait :
SELECT * FROM Gros Salaire; on n'obtient aucun tuple.
Si la cration de la vue on rajoute loption :
WITH CHECK OPTION alors l'insertion est refuse.
Les mises jours des vues sont traduites en des mises jours des tables sous-jacente. La
traduction n'est pas toujours unique. Quand nous avons plusieurs manires de traduire une
mise jour alors celle-ci est rejete. Certaines vues ne permettent pas des mises jour. Il
faut une relation biunivoque entre la mise jour de la vue et la mise jour de la table.

___________________________________________________________________
DI GALLO Frdric

Page 29

20/02/2015

261125034.doc
______________________________________________________________________________

Jointure externe
Si on fait : Personne IXI Voiture, on n'aura que les personnes qui ont une(des) voiture(s) qui
sont dans le rsultat.
SELECT *
FROM Personne P Left Outer Join Voiture V
ON P.NSS = V.Proprio
Cette requte retourne aussi les personnes n'ayant pas de voiture. Ces tuples auront des
valeurs nulles pour les champs provenant de Voiture. Si on met juste Outer Join alors on aura
les personnes sans voitures et les voitures sans Propritaire.
La jointure est exprime par : T1 Inner Join T2 On Condition
Dans l'exemple, si l'on veut joindre Personne et Voiture alors
SELECT *
FROM
Personne P Inner Join Voiture V
ON P.NSS = V.Proprio
Si lon mets Right la place de Left dans la jointure, alors on aura les voitures sans les
personnes. Si on ne mets ni Left ni Right, on aura les voitures et les personnes qui ne sont pas
dans la jointure.

5.3) Mcanisme des droits


Soit la table pers (Num, Nom, Adr, Num_Serv, Salaire)
1.
2.
3.
4.
5.
6.
7.

Dupont ne peut pas accder Pers.


Dupont peut lire une partie de Pers mais ne peut rien modifier.
Dupont Peut lire un seul tuple (celui le concernant) sans pouvoir le modifier.
Dupont peut en plus modifier l'attribut Adr.
Dupont peut accder l'attribut salaire mais seulement entre 9h et 17h partir du
terminal 25.
Dupont peut modifier salaire si celui-ci est infrieur 8000.
Dupont peut modifier la relation sil est responsable du Num_Serv du tuple qu'il
veut modifier.

Les droits dpendent du contenant, du contexte et/ou du contenu.

Les droits dans SQL


SELECT: privilge qu'il faut possder pour lire une table
INSERT, DELETE, UPDATE: privilges ncessaires pour mettre jour une table.
INSERT(X), UPDATE(X): privilge ncessaire pour insrer, mettre jour l'attribut X.

___________________________________________________________________
DI GALLO Frdric

Page 30

20/02/2015

261125034.doc
______________________________________________________________________________

Octroi et retrait de privilges


GRANT privilge ON objet TO utilisateur [WITH GRANT OPTION]
REVOKE [GRANT OPTION FOR] privilge ON objet FROM utilisateur
RESTRICT | CASCADE
Exemples :
GRANT ALL ON TABLE rsultat TO directeur WITH GRANT OPTION;
GRANT INSERT ON TABLE rsultat TO sec_1;
GRANT SELECT, UPDATE(points) ON TABLE resultat TO prof_1;
Remarque : Un utilisateur peut recevoir le mme privilge de plusieurs sources. Cela est utile
quand l'une d'elles veut le lui retirer.
Exemple : soit la squence
A: GRANT SELECT ON TABLE T TOBWITH GRANT OPTION
B: GRANT SELECT ON TABLE T TOCWITH GRANT OPTION
C: GRANT SELECT ON TABLE T TODWITH GRANT OPTION
A: REVOKE SELECT ON TABLE T FROM B
Ni B ni C ne pourront lire T

Utilisation des vues


CREATE VIEW Informations_Perso
AS SELECT *
FROM Employ
WHERE nom = USER;
GRANT SELECT, UPDATE(adresse)
ON Informations_Perso
TO PUBLIC

___________________________________________________________________
DI GALLO Frdric

Page 31

20/02/2015

261125034.doc
______________________________________________________________________________

6. EXERCICES : REQUETES SQL


6.1) Exercice 1: Base Cinma
Soit la base Cinma ayant le schma Cinma (Film, Lieu, Pgme_hebdo). Les schmas de
relation sont les suivants
Films(Titre, Ralisateur, Acteur), Lieu(Salle, Adresse, Tel) et Pgme_hebdo(Salle, Titre, jour,
horaire). Exprimer les requtes suivantes en SQL
1.
Qui est le ralisateur de "The big Lebowsky" ?
2.
Dans quelles salles passe le film "Cris et chuchotements" (On veut le nom de la salle
ainsi que son adresse) ?
3.
Quels sont les ralisateurs qui jouent dans leurs propres films
4.
Donner les paires de personnes (Pi, P2) telles que Pi a dirig P2 dans un film et P2 a
dirig Pi dans un autre.
5.
Quelles sont les salles o je pourrais voir un film de o joue "J.P Bacri"'?
6.
Quelles sont les salles qui programment tous les films de o joue "J.P Bacri"?
7.
On veut pour chaque ralisateur, le nombre de ses films qui sont programms,
condition que ce nombre soit suprieur 3.
8.
Quels sont les ralisateurs qui ont dirig le plus d'acteurs.
9.
Quels sont les ralisateurs qui ont dirig plus d'acteurs que Bergman et Hitchcok

6.2) Exercice 2: Base Enseignement


Soit la base Enseignement(Etudiant, Cours, Inscrit, Enseignant) o les schmas des relations
sont respectivement
Etudiant(NumE, NomE, AgeE)
Cours(NomC, HoraireC, SalleC, EnsC)
Inscrit(NumE, NomC)
Enseignant(NumEn, NomEn, NumDept)
Exprimer les requtes suivantes en SQL
1.
Quels sont les cours ayant lieu en salle 123?
2.
Quels sont les cours pour lesquels il y a plus de 5 inscrits ?
3.
Quels sont les noms des tudiants inscrits au moins deux cours prvus aux mmes
horaires ?
4.
Quels sont les enseignants qui ont moins de 20 tudiants (en considrant tous les cours
qu'ils assurent) ?
5.
Quels sont les noms des tudiants ayant le plus d'inscriptions ?
6.
Quels sont les tudiants qui ne sont inscrits aucun cours ?

___________________________________________________________________
DI GALLO Frdric

Page 32

20/02/2015

261125034.doc
______________________________________________________________________________

FICHIERS
ET
DISQUES

___________________________________________________________________
DI GALLO Frdric

Page 33

20/02/2015

261125034.doc
______________________________________________________________________________

FICHIERS ET DISQUES
I. STRUCTURE FONCTIONNELLE D'UN SGBD..................................................................... 33
II. LES DISQUES............................................................................................................... 34
2.1) Paramtres d'un disque............................................................................................ 34
2.2) Placement des pages sur disque............................................................................... 35
III. GESTIONNAIRE DE TAMPON.................................................................................. 35
3.1) Principes................................................................................................................... 35
3.2) Critre de remplacement des pages :....................................................................... 36
IV. FORMATS D'ENREGISTREMENTS.......................................................................... 36
4.1) Taille fixe.................................................................................................................. 36
4.2) Taille variable........................................................................................................... 36
V. FORMAT DES PAGES.................................................................................................. 37
5.1) Enregistrements de taille fixe................................................................................... 37
5.2) Enregistrements de taille variable............................................................................ 37
VI. FICHIERS NON TRIES (TAS)...................................................................................... 38
VII.LES INDEX................................................................................................................... 38
VIII. LE CATALOGUE DU SYSTEME......................................................................... 39
IX. CONCLUSION.............................................................................................................. 39

___________________________________________________________________
DI GALLO Frdric

Page 34

20/02/2015

261125034.doc
______________________________________________________________________________

BASE DE DONNES CNAM BORDEAUX 1999-2000

FICHIERS ET DISQUES

I.

Structure fonctionnelle d'un SGBD


Requtes
Optimisateur de requtes
Oprateurs relationnel
Mthodes d'accs
Gestion de tampon
Gestion de disque

BD

Fichiers et Disques
Lecture : Transfert des donnes du disque vers la mmoire centrale.
Ecriture : Transfert de la RAM vers le disque.
Ces 2 oprations sont relativement coteuses par rapport a d'autres oprations qui sont
effectues en RAM. Mais alors, pourquoi ne pas tout garder en RAM ? Il faut savoir quavec
1200 Frs, on a 128Mb de RAM ou 7.5Go de disque. Il faut aussi prendre en compte la volatilit
de la RAM, la hirarchie de stockage RAM pour les donnes en cours d'utilisation.
On en dduit quil vaut donc mieux utiliser des disques durs pour stocker toute la BD, et des
bandes magntiques ou des CD ROM pour les archives.

___________________________________________________________________
DI GALLO Frdric

Page 35

20/02/2015

261125034.doc
______________________________________________________________________________

2. LES DISQUES
Le principal avantage des disques est laccs direct aux donnes contre un accs squentiel
pour les bandes. Les donnes sont stockes et donc accdes par blocs ou pages entires.
Contrairement aux RAM, le temps d'accs aux donnes sur les disques dpend de
l'emplacement. Il faut donc bien placer les donnes pour optimiser les transferts.

Les disques ont une vitesse de rotation (ex: 90 tr/s).


Les pistes de mme diamtre forment un cylindre.
Une seule tte peut lire ou crire.
La taille d'un bloc est un multiple de la taille d'un secteur.

2.1) Paramtres d'un disque


Temps d'accs a un bloc (TAB):
Temps de positionnement (TP): temps ncessaire pour positionner la tte de L/E sur la
bonne piste. Il varie entre 1 et 10 ms.
Latence de rotation (LR): temps ncessaire pour positionner la tte de L/E au bon endroit
sur la piste. Cest tour de disque en moyenne. Il dpend donc de la vitesse de rotation
du disque (exemple pour 90 tr/s : LR= 1/90 /2= 0.0056). Varie entre 0 et 10 ms.
Temps de transfert (TT): temps du transfert du disque la RAM (ou inversement). Le dbit
du transfert est de lordre de 5 Mo/ms.
Pour optimiser les transferts, il faut optimiser TP et LR en placant correctement les donnes
sur le disque.
Exemple de caractristiques de disques durs :
Seagate Hawk 2XL : 2,l5Go. TR = 5.55 ms. TP = 9 ms. Passer d'une piste a une piste voisine
= l ms. Le temps de positionnement maximum = 22 ms. 512 octets par secteur. 4559 cylindres.
4 disques double face. Le dbit du transfert TT = 5 Mo/s.
High performance Barracuda : 9 Go. TR = 4.l ms. TP = 8.5 ms. TT = lO Mo/s.

___________________________________________________________________
DI GALLO Frdric

Page 36

20/02/2015

261125034.doc
______________________________________________________________________________

2.2) Placement des pages sur disque


Le concept du bloc "suivant" :
1.
2.
3.

Mettre les blocs (successifs) sur la mme piste,


blocs sur le mme cylindre, ensuite
blocs sur le cylindre adjacent

Les blocs d'un fichier doivent tre stocks squentiellement sur le disque ("suivant") pour
minimiser TP et LR. Lorsque l'on veut faire un balayage squentiel d'un fichier, le fait de
pouvoir prparer (pr-fetch) plusieurs pages a la fois reprsente un gain considrable.
L'arrangement des fichiers sur les disques est une tache supporte par une couche basse du
SGBD (en collaboration avec le systme d'exploitation). Elle communique avec la couche juste
au dessus par des appels de pages.
1
6
7
.
2
5
.
.
3
4
.
.
Zone Id (identificateur de la zone du tampon)
< 3, 1 > : Page Id (adresse de la page sur le disque)
Page ou bloc : gnralement, cela correspond un secteur (ou alors un multiple de secteurs).
Au niveau du disque : Page Id < n plateau, face, n piste, n secteur >

3. GESTIONNAIRE DE TAMPON
3.1) Principes
On a une table de < zoneId, pageId>
Si une page n'est pas disponible, le
gestionnaire de tampon (GT) met une
demande au gestionnaire de disque. Au retour,
sil n'y a plus de zone libre, le GT choisit une
zone occupe par une page pour y mettre la
nouvelle page. Le critre du choix de la page
remplacer a un effet sur l'optimisation des
transferts.
Si les demandes de pages peuvent tre prdites, alors on peut charger plusieurs d'une passe
(ex: scan squentiel). Si la page remplacer a t modifie, alors il faudra rcrire sa nouvelle
version sur le disque. On utilise un bit pour marquer les zones modifies.

___________________________________________________________________
DI GALLO Frdric

Page 37

20/02/2015

261125034.doc
______________________________________________________________________________

3.2) Critre de remplacement des pages :


Si le tampon est rempli et on veut charger une nouvelle page alors il faut en choisir une quil
faudra remplacer par la nouvelle (de prfrence, une qui na pas t modifie car on na pas la
rcrire sur le disque). Aprs pour choisir entre celles qui nont pas t modifies, on utilise
plusieurs techniques: LRU (Least Recently Used), MRU (Most Recently Used) FIFO (First In
First Out), LIFO (Last In First Out).

4. FORMATS D'ENREGISTREMENTS
Les enregistrements sont de taille fixe ou de taille variable. Notons au pralable que le
SGBD gre un catalogue qui permet de stocker des informations sur les fichiers (ex: le nom des
champs, leurs tailles, ).

4.1) Taille fixe


Dans ce cas, tant donne l'adresse d'un enregistrement, on peut accder directement a un
champ particulier.
L'adresse d'un enregistrement est
spcifie par le num plateau, num
piste, num bloc, num Secteur

Exemple : 20 caractres pour le nom... Il suffit alors que d'avoir juste le dbut de
l'enregistrement (tuple = enregistrement). Personne, F1 Taille tuple = 40 octets (taille nom : 20
et taille prnom : 20).
Adresse d'un enregistrement < adresse de page , offset > (connaissance de la position de
chaque champs) :

4.2) Taille variable


Deux alternatives :
1. On lit jusquau sparateur $ puis
encore au $ puison arrivera C3.
2. On utilise des pointeurs vers le
dbut et la fin des champs.
La 2me alternative est plus intressante surtout pour la gestion des valeurs Nulles : Si un
champ est NULL alors les pointeurs de dbut et de fin associes ce champ sont gaux (2
champs = 3 pointeurs).

___________________________________________________________________
DI GALLO Frdric

Page 38

20/02/2015

261125034.doc
______________________________________________________________________________

5. FORMAT DES PAGES


5.1) Enregistrements de taille fixe

Organisation contigu : Le problme est den cas de suppression, il faut rorganiser toute la
page. Mais il suffit de consulter N (nbre de pages) pour savoir sil y a de lespace libre.
Organisation dynamique : en cas de suppression, on a de la place libre mais il faut crire les
en-ttes (compteur M sur le nombre denregistrement). Et pour savoir sil y a de lespace
libre, on doit donc lire le tableau.

5.2) Enregistrements de taille variable

On ne connat pas la taille de la liste des pointeurs

___________________________________________________________________
DI GALLO Frdric

Page 39

20/02/2015

261125034.doc
______________________________________________________________________________

6. FICHIERS NON TRIES (Tas)


Cest la structure de fichier la plus simple. La taille varie au gr des insertions et
suppressions des enregistrements. Les pages (blocs) sont alloues / dsalloues en
consquence. Pour pouvoir grer les oprations sur les enregistrements, nous devons garder :
les rfrences des pages du fichier,
l'espace libre dans chaque page,
l'emplacement des enregistrements dans chaque page.

L'entre de chaque page peut aussi


contenir le nombre d'octets libres dans
chaque page.

7. LES INDEX
Les fichiers tas permettent de retrouver un enregistrement en :
spcifiant le IdE,
(avec IdE : identificateur denregistrement)
ou en balayant tout le fichier.
Gnralement en BD, on recherche par valeur. Souvent, on veut les enregistrements selon la
valeur de certains champs. Pour ce type de recherche, les fichiers tas ne sont pas adquats. Les
index sont des fichiers "annexes" permettant de rpondre efficacement aux recherches bases
sur des valeurs.

___________________________________________________________________
DI GALLO Frdric

Page 40

20/02/2015

261125034.doc
______________________________________________________________________________

8. LE CATALOGUE DU SYSTEME
Il fait partie de la base et il est gr comme le reste. Pour avoir la liste des champs de la
base, il suffit de faire : SELECT *
FROM cat_att
(avec cat_att une table du catalogue)
Pour chaque index, il contient sa structure (ex: arbre B+) ainsi que sa cl.
Pour chaque relation, il contient :
(1) son nom,
(2) le fichier associ,
(3) la structure de fichier (index ou tas),
(4) le type et le nom des attributs,
(5) le nom de(s) l'index,
(6) les contraintes d'intgrit.
Pour chaque vue, (1) son nom et (2) sa dfinition.
Des statistiques, les droits d'accs, la taille de la zone tampon,
Att_Cat(att_name, rel_name, type, position)
Att_name
att_name
Rel_name
type
position
NumE
Nom

Rel_name
att_name
att_name
att_name
att_name
Etudiants
Etudiants
dots

type
char (20)
char (20)
char (20)
INTEGER
INTEGER
varchar (20)

position
1
2
3
4
1
2

9. CONCLUSION
Le gestionnaire de tampon charge les pages dans la RAM. Les pages restent dans le tampon
jusqu' ce qu'il n'y ait aucun processus qui ne les utilise. Elles sont rcrites sur le disque aprs
qu'elles soient libres et quand la zone qu'elles occupent est choisie pour un remplacement. Le
choix de la zone librer est dicte par diffrentes techniques possibles (LRU, ... ). Les
enregistrements a taille variable permettent de bien grer les valeurs nulles.
Le gestionnaire de fichier est charg de la gestion des pages pour chaque fichier. Les index
permettent de faire des recherches bass sur des valeurs. Le catalogue contient la description de
la structure physique des relations, attributs, fichiers, index, ...
Les transferts se font donc par page (ou par bloc).

___________________________________________________________________
DI GALLO Frdric

Page 41

20/02/2015

261125034.doc
______________________________________________________________________________

ORGANISATION
DES
FICHIERS
ET
INDEX

___________________________________________________________________
DI GALLO Frdric

Page 42

20/02/2015

261125034.doc
______________________________________________________________________________

ORGANISATION DES FICHIERS ET INDEX


I.

ORGANISATION DES FICHIERS............................... ERREUR ! SIGNET NON DFINI.


1.1) Modle de cot................................................................. Erreur ! Signet non dfini.
1.2) Oprations et Organisations considres........................ Erreur ! Signet non dfini.
II. LES INDEX.................................................................... ERREUR ! SIGNET NON DFINI.
2.1) Index ISAM....................................................................... Erreur ! Signet non dfini.
2.2) Arbres B+.......................................................................... Erreur ! Signet non dfini.
2.3) Tri externe........................................................................ Erreur ! Signet non dfini.
III. EXERCICES................................................................... ERREUR ! SIGNET NON DFINI.
3.1) Soit l'arbre B+ d'ordre 1 suivant...................................... Erreur ! Signet non dfini.
3.2) Insertion d'une cl dans un autre arbre........................... Erreur ! Signet non dfini.

___________________________________________________________________
DI GALLO Frdric

Page 43

20/02/2015

261125034.doc
______________________________________________________________________________

BASE DE DONNES CNAM BORDEAUX 1999-2000

ORGANISATION DES FICHIERS ET INDEX


I.

ORGANISATION DES FICHIERS


E

Une organisation de fichier est une manire de disposer les enregistrements dans un fichier
stock sur le disque. Un fichier peut tre accd et modifi de diffrentes faons, et une
organisation de fichier peut tre bonne pour un type d'accs et mauvaise pour un autre type.
Un fichier tri sur le nom des employs n'est pas une bonne organisation quand on veut avoir
les employs ayant un salaire suprieur 100. Un SGBD offre plusieurs organisations
possibles. C'est a l'administrateur que revient le choix de l'organisation adquate. Les fichiers
tris sont meilleurs pour les requtes mais la mise jour est plus complique grer.

1.1) Modle de cot


Pour pouvoir comparer diffrentes organisations, il nous faut un modle de cot. Pour cela,
on va considrer les paramtres :
P: Le nombre de pages contenant des donnes,
E: Le nombre d'enregistrements par page,
T: Le temps "moyen" pour lire ou crire une page,
Ainsi le cot d'une opration est exprime en fonction de ses paramtres.
Dans ce modle simplifi, on ne considre pas le cot C des traitements en unit centrale
(typiquement C = T/25)

1.2) Oprations et Organisations considres


Balayage : (Scan) parcourir tout le fichier.
Recherche avec galit : On cherche les enregistrements ayant un champs X gal a une
valeur particulire.
recherche avec intervalle : On cherche les enregistrements ayant un champs X compris
dans un intervalle particulier.
Insertion : (1) On doit identifier la page qui doit contenir l'enregistrement a insrer (2) la
modifier en zone tampon (mmoire) et (3) la rcrire sur disque.
Suppression : Suppression d'un enregistrement identifi par son IdE. (1) ramener la
page correspondant en mmoire, (2) la modifier ensuite la rcrire sur disque.

___________________________________________________________________
DI GALLO Frdric

Page 44

20/02/2015

261125034.doc
______________________________________________________________________________

Fichiers hachs
Un fichier hach est caractris par :
1. un champ particulier appel cl de recherche (Rien voir avec la notion de "cl" dans une table).
2. une fonction de hachage h qui associe a chaque valeur de la cl de recherche un entier.
Exemple:
h: String
N. h(X) = ASCII(X) modulo(100).
L'entier associe a une valeur correspond au numro de la page o l'enregistrement
correspondant doit se trouver. Plusieurs valeurs de la cl peuvent tre associes au mme entier.
Nous avons donc une zone de dbordement.
Exemple :
h(abc) = h(bca).
0
1

Zone de dbordement

99

Fichier tas
Balayage : cote .B x T.. Il faut transfrer toutes les pages en mmoire.
Recherche avec galit :

1. Si on sait qu'il y a un seul enregistrement, alors en moyenne, on lit la moiti du fichier


le cot est .P x T / 2.
2. Si l'on ne sait pas le nombre d'enregistrements, alors le cot est .P x T.. Cest le pire
des cas car on balaye tout le fichier ! Dans le meilleurs des cas, la premire page lue
contient linformation recherche donc le cot est : T.
Recherche avec intervalle : On doit balayer tout le fichier : le cot est .B x T.
Insertion : On suppose que l'insertion se fait a la fin du fichier.
1. On lit la dernire page (1er transfert), puis
2. On la modifie en mmoire et on la rcrit sur disque (2me transfert).
le cot est .2 x T.
Suppression : On cherche d'abord l'enregistrement, donc charger sa page (1 transfert),
ensuite, on fait la modification en mmoire et on rcrit la page le cot est .2 x T..
Si la suppression se fait par valeur (ex : supprimer tous ceux dont le nom est toto) :
- balayer tout le fichier (PxT) ;
- sil y a n personnes rpondant au nom toto n P ;
- si chacune se trouve dans une page distincte, il nous faut alors modifier n pages,
puis les rcrire n x T donc le cot est : .(P x n) x T.
On a suppos que les pages ne sont pas compactes. Et on donne plutt que l'IdE, une
condition sur le(s) enregistrement(s) supprimer ?

___________________________________________________________________
DI GALLO Frdric

Page 45

20/02/2015

261125034.doc
______________________________________________________________________________

Fichiers tris
Balayage : Le cot est P x T.
Recherche avec galit :

1. Mme cot que le fichier tas, si le champs de recherche n'est pas celui du tri.
2. Sinon, avec une recherche dichotomique, on peut retrouver l'enregistrement en
log2(P) transferts le cot est .log2(P) x T.
Ici, on a considr qu'un seul enregistrement trouv.
Dans le pire des cas, par une recherche dichotomique :
1.
on se place au milieu du fichier (lire page P/2). On restreint le fichier P/2 pages.
2.
on se place 3P/4 donc P/22
n. il reste P/2n pages = 1 P/2n = 1 P = 2n log P = log 2n log2 P = n
Recherche avec intervalle : On fait d'abord une recherche dichotomique jusqu' trouver
une valeur dans l'intervalle spcifi ; le cot est log2(P) x T. L aussi, on a considr
qu'un seule valeur. S'il y a x enregistrements, alors il nous faudra transfrer au maximum
(X/R + 1) autres pages. Le cot est majore par .(log2(P) + X/R + i) x T.
Chaque page contient E enregistrements donc X/E.
X/E + 1 page o X est le nombre denregistrements qui satisfont la condition. La
recherche se fait en deux parties :
1. Trouver la valeur dans lintervalle (ex : les valeurs entre 15 et 25 ans). Au pire des
cas, on fait log2(P) x T. Au meilleur des cas, on ne fera quune seule lecture (la
page du milieu contient une valeur comprise dans lintervalle).
2. Ensuite, on recherche les x valeurs restantes. Celles-ci se trouvent sur au
maximum X/E pages : on doit donc lire X/E pages.
Insertion : Il faut d'abord chercher la bonne page o le placer. Ceci peut se retrouver en
lisant log2(P) pages. On peut supposer qu'en moyenne la page intressante se trouve au
milieu du fichier. Comme on risque d'avoir besoin d'avancer tous les enregistrements
dans les pages suivantes P/2, on doit donc toutes les lire et les rcrire. Ce qui donne un
cot global approximatif de .(log2(P) +2 x P/2) x T. Le cot est donc .(log2(P)+P) x T.
Suppression : On retrouve la page de l'enregistrement en un transfert. Ensuite on charge
les pages suivantes pour tasser les enregistrements. Ce qui fait un cot global
approximatif de (1 + P/2) x 2 x T. En fait cela dpend du nombre de page (pair ou
impair). Le cot est P x T
1

On supprime lenregistrement 8
IdE < 2, 4 >
n page

nenregistrement ds la page

Si lon veut compacter, il faut placer le 9 la place du 8 (cot supplmentaire). Donner une
estimation du cot si on veut avoir une organisation compact. On suppose que la suppression
se fait dans la page du milieu.
1. On lit la page du milieu, (T) puis celle qui vient juste aprs. P/2 et P/2 + 1
2. A partir de la page du milieu jusqu la dernire page, chacune sera lue et crite
une fois do un cot de (P/2) x (Tx2) P x T
Nombre de page lues

chaque page sera lue et crite

___________________________________________________________________
DI GALLO Frdric

Page 46

20/02/2015

261125034.doc
______________________________________________________________________________
Dans lestimation de ce cot, on na pas tenu compte du temps de la rorganisation des
pages au niveau de la zone tampon.
7

Fichiers hachs
On suppose qu'il n'y a pas de dbordement
Balayage : Pareil que pour le fichier tas le cot est donc P x T
Recherche avec galit :

1. Si X est la valeur recherch, alors on peut savoir la page en calculant h(X) et on fait
un accs direct : le cot est .T.
2. S'il y a plusieurs enregistrements, comme on a suppos qu'il n'y a pas de
dbordement, alors tous les autres enregistrements sont dans la mme page.
Recherche avec intervalle : On est oblig de balayer tout le fichier le cot est P x T
Insertion : Le cot est 2T on accde directement la page
Suppression : On lit la page puis on la rcrit le cot est donc 2T

Conclusion
Il n'y a pas une organisation meilleure que toutes les autres pour tous les types d'oprations.
Pour le balayage, cest pareil, et pour la recherche, mieux vaut des fichiers hachs (ne tiens pas
compte de dbordement).

Balayage
Recherche =
Recherche []
Insertion
Suppression

Tas

Tri

Hach

PxT
0.5 (P x T)
PxT

PxT

PxT
T
PxT

2xT
[(P+1) x T] /2

Log2 (P) x T
Log2 (P) x T
(Log2 (P) + P) x T

PxT

2T
2T

___________________________________________________________________
DI GALLO Frdric

Page 47

20/02/2015

261125034.doc
______________________________________________________________________________

2. LES INDEX
Un index est une structure annexe un fichier. Cest trs pratique pour la recherche mais il
est difficile de faire les mises jour lorsque lon a beaucoup dindex.
Index :
Fichiers
Donnes
Il est caractris par une cl de recherche K,
Il contient un ensemble d'entres que l'on notera K*.

Les entres d'un index


Un enregistrement dans l'index constitue une entre K* permettant de retrouver efficacement
le(s) enregistrement(s) ayant la valeur K. Trois structures possibles pour les entres :
1. Enregistrement ayant la mme structure que les enregistrements du fichier de donnes.
2. Une paire < K, IdE >
3. Une paire < K, liste_IdE >
Si la structure de l'index est 1 alors pas besoin d'avoir en plus un fichier de donnes spar.

___________________________________________________________________
DI GALLO Frdric

Page 48

20/02/2015

261125034.doc
______________________________________________________________________________

Proprits des index


Dense vs clairsem

2.1) Index ISAM


Indexed Sequential Access Method

___________________________________________________________________
DI GALLO Frdric

Page 49

20/02/2015

261125034.doc
______________________________________________________________________________

2.2) Arbres B+
Appel B comme Balanc (quilibr en fait).Un arbre-B+ est caractris par sa
dimension d qui est le nombre minimal de cls devant se trouver dans chaque nud. d est la
moiti du nombre maximal de cls qu'un nud peut contenir. La structure des nuds
"feuille" est diffrente de celle des nuds internes.

Les nuds non terminaux sont des pointeurs vers des feuilles index et les feuilles sont
des pointeurs vers les donnes. Les feuilles sont lies entres elles. La structure dun nud
interne est :
Ptr0 cl1 Ptr1 cl2 Ptrn
Si t est la taille dun couple < Ptr, cl > et si T est la taille dune page de lindex alors on
prend gnralement d=T/2t (chaque nud doit tre moiti rempli) sauf pour la racine.

Cot dune recherche dans un fichier index par un arbre B+


Comme larbre est quilibr, si h est la profondeur de larbre (le nombre de niveaux), le
nombre de lectures quon doit faire avant datteindre une feuille cest h. Ensuite, on accde
directement la page de donnes. Do un cot total de cls dans le fichier de donnes. Au
maximum, ces N cls sont stocks sur N/d feuilles.
Avec chaque feuille contient 2xd cls au maximum et d cls au min. Le niveau h contient
N/d feuilles au maximum et le niveau h- 1 contient (N/d)/d nuds au maximum. On a N/d
pointeurs au niveau h - 1 donc N/d paires <cl, Ptr>. Ces N/d paires sont rparties au
maximum sur (N/d)/d nuds. Le niveau h-2 contient N/d3 nuds au maximum.
Le niveau 1 contient un seul nud au maximum.
h-1
d =N (h-1) log d = log N h-1 = logd N h= logd N+1.
Le cot de la recherche avec galit en utilisant un arbre B+ est de lordre de log d N avec d
qui est lordre de lindex et N le nombre de pages dans le fichier de donnes.

___________________________________________________________________
DI GALLO Frdric

Page 50

20/02/2015

261125034.doc
______________________________________________________________________________

Exemple d'un arbre B+

Chaque nud de l'index contient au moins 100 paires <cl, pointeur>. La recherche dun
enregistrement ncessite le parcours en profondeur de l'index.
logd N lectures = log 1000 / log 100 = 3/2 2
L'clatement d'une feuille implique une remonte de la plus petite cl se trouvant dans la
nouvelle feuille (dans l'exemple, c'est la cl 5). L'clatement d'un nud interne provoque le
dplacement de la plus petite clef du nouveau nud vers le nud parents (dans l'exemple, la cl
17 a t dplace vers un nud parent).

Insertion de 8

___________________________________________________________________
DI GALLO Frdric

Page 51

20/02/2015

261125034.doc
______________________________________________________________________________

Suppression de 19

Suppression de 20

Le nud f n'tant pas moiti plein:


1) 24 est ramen de fi vers f
2) L'entre index 21 pointant vers fi
remplace l'entre 24 pointant vers fi

Dans cet exemple, la redistribution est possible car un des nuds adjacents contient plus de
d lments.

___________________________________________________________________
DI GALLO Frdric

Page 52

20/02/2015

261125034.doc
______________________________________________________________________________

Suppression de 24
Le voisin de f ne contient que 2 lments, il
n'est pas possible de faire de redistribution.
1)f est fusionn avec fi: 27* et 29* sont
ramenes vers f
2) L'entre index 27 pointant vers fi est
supprime du nud m
Quand la fusion se fait avec le voisin droite,
ce sont les cls du voisin qui viennent dans f et
l'entre pointant vers fi est supprime du nud
parent. Quand la fusion se fait avec le voisin
gauche, ce Sont les cls de f qui Sont ramenes
vers fi et l'entre pointant vers f est supprime
du noeud parent.

Insertion
La dimension du B-arbre est d
1. Trouver la feuille f o k doit tre insre.
2. Si f n'est pas pleine alors y insrer k

___________________________________________________________________
DI GALLO Frdric

Page 53

20/02/2015

261125034.doc
______________________________________________________________________________
Sinon /* f est remplace par f et f1 */
mettre d entres dans f et d+ 1 entres dans f1
insrer la d + 1re cl dans le noeud m parent de f (appel rcursif)
le fils gauche pointe vers f
le fils droit pointe vers f1 Finsi
3. Au niveau du nud index m, si m est plein alors remplacer m par m et m1
Soit k1,.. . ,kd,kd+1,kd+2,. . . ,k2d,k2d+1
mettre k1,... ,kd dans m
d

mettre kd+2,. .. ,k2d+1 dans m1


d

insrer kd+1 dans le noeud parent de m

Suppression
1.
2.
3.
4.

Soit f la feuille o k se trouve


Supprimer k de f
Si f contient au moins d cls, alors FIN
Sinon
Si la redistribution avec les nuds adjacents (le mme parent) est possible, alors
faire la redistribution
Finsi
Sinon /* redistribution pas possible */
fusionner f avec un des nuds adjacents
Supprimer du parent m de f un cl /*appel rcursif */
Finsi

Cration d'un arbre B+


Nous avons un fichier F pour lequel on veut crer un index sur la cl K. La premire
manire de procder est de parcourir F et utiliser l'algorithme d'insertion dans un arbre B+ pour
chaque cl lue. Le cot approximatif de ce procd est le cot du parcours de F (i.e N/d' avec d'
le nombre d'enregistrements qu'on peut mettre dans une page), plus le cot de l'insertion de
chaque cl.
Soit h la hauteur de l'arbre B+, l'insertion d'une cl consiste parcourir l'arbre partir de la
racine jusqu' une feuille (i.e h lectures), ensuite l'criture dans une feuille et sa recopie sur le
disque (1 criture). S'il y a clatement, on est oblig de remonter d'un niveau et au pire, on doit
remonter jusqu'a la racine, i.e 3h critures. Le cot global est donc major par N/d'+(N*3*h).
Une autre manire de procder consiste :
1.
2.

d'abord trier les cls insrer,


insrer un pointeur dans la racine vers la page la plus gauche,

___________________________________________________________________
DI GALLO Frdric

Page 54

20/02/2015

261125034.doc
______________________________________________________________________________

La suite de la procdure est explique sur l'exemple

Les pages du fichier tries sont les feuilles de l'arbre. Elles sont rentres de gauche droite,
et l'insertion d une telle feuille conduit l'insertion d'une cl dans le niveau suprieur de l'arbre.
Cette dernire insertion peut tre suivie d'un clatement d'un nud et l'augmentation d'un
niveau de l'arbre.
Cette mthode est plus rapide que les insertions rptes.

2.3) Tri externe


C'est une opration trs utile

ORDER BY
Le tri est utilis lors de la cration d'arbres B+
Elimination de doublons (voir prochains cours)
Des algorithmes de jointures l'utilisent (voir prochains cours)

Par exemple, pour trier un fichier de 10 Go quand on a une RAM de l00 Mo

___________________________________________________________________
DI GALLO Frdric

Page 55

20/02/2015

261125034.doc
______________________________________________________________________________

Tri par fusion simple


Utilise 3 zones tampons

1.
2.

premire tape: lire une page, la trier, et le rcrire (une seule zone tampon est utilise)
Les tapes suivantes : les 3 zones tampons sont utilises

A chaque tape, nous


lisons et crivons chaque
page du fichier.

Si N est le nombre de
pages, alors le nombre
d'tapes est gal a [log2N] + 1

ainsi, le cot total est de


2N ( [log2 N] + 1)

Tri par fusion gnral


Utiliser plus de 3 zones tampon (ce qui est gnralement possible) pour trier un fichier a N
pages quand on a B zones tampons.
1. tape 1 : utiliser les B zones ce qui donne en sortie [N/B] "sous fichiers" tris et
chacun ayant B pages (sauf peut tre le dernier qui en contiendra moins).
2. tapes suivantes, on fusionne B - 1 "sous fichiers".

___________________________________________________________________
DI GALLO Frdric

Page 56

20/02/2015

261125034.doc
______________________________________________________________________________

Cot du tri par fusion gnral


Nombre d'tapes : 1+ [log B-l N].

Le cot est donc 2N* nombre d'tapes.

Par exemple, avec 5 tampons et un fichier de 108 pages :


1. 1re tape : [108/5] 22 "sous fichiers" tris de 5 pages chacun (le dernier en contient 3).
2. 2me tape : [22/4] 6 "sous-fichiers" de 20 pages chacun (le dernier en contient 8).
3. 3me tape : 2 sous fichiers, un de 80 pages et l'autre ayant 28.
4. 4me tape : 1 fichier tri de 108 pages.

Nombre dtapes pour diffrentes valeurs de N et B :


N
B=3 B=5 B=9 B=17 B=129 B=257
100
7
4
3
2
1
1
1000
10
5
4
3
2
2
10000
13
7
5
4
2
2
100000
17
9
6
5
3
3
1000000
20
10
7
5
3
3
10000000
23
12
8
6
4
3
100000000
26
14
9
7
4
4
1000000000 30
15
10
8
5
4

Pour obtenir le cot, il suffit de multiplier le nombre d'tapes par 2N

___________________________________________________________________
DI GALLO Frdric

Page 57

20/02/2015

261125034.doc
______________________________________________________________________________

3. EXERCICES
3.1) Soit l'arbre B+ d'ordre 1 suivant :
Donner les configurations conscutives
de l'arbre aprs :
1. l'insertion de la cl 23 puis
2. la suppression de la cl 10.
1.
a) rpartition des cls {21, 22, 23} (ici d=1). Les d premires, on les garde dans
lancienne feuille f. Les d+1 suivantes dans la nouvelle feuille f1.
d = (nombre max de cl par feuille) / 2

b) Remonte de 22 (plus petite cl se trouvant dans f1).


c)
Pointeur gauche : <
20
11

pointeur droit :

22

10

15 17 21
22 23
f
f1
Les cls prsentes au niveau du fichier donnes sont toutes prsentes au niveau des feuilles
de lindex. Les cls se trouvant dans les nuds internes de lindex ne sont pas ncessairement
prsentes dans le fichier des donnes. Dans lexercice, nous avons 11 qui apparat dans un
nud interne mais pas au niveau des feuilles : on peut en conclure qu un certain moment, 11
a t insr puis supprim.
2. f contient moins de d cls. On va essayer de faire une rpartition avec les feuilles
adjacentes qui est f1. La rpartition est possible : on dplace 15 vers f, on remplace 11 par 17.
(on vite de supprimer des feuilles).
20
17
15
f

22
17
f1

21

22 23

___________________________________________________________________
DI GALLO Frdric

Page 58

20/02/2015

261125034.doc
______________________________________________________________________________

3.2) Insertion d'une cl dans un autre arbre


L'arbre B+ ci-dessous a t obtenu suite l'insertion d'une cl dans un autre arbre. On nous
dit aussi que la dite insertion a provoqu l'c1atement d'un nud de l'arbre.

Donner une configuration possible de l'arbre d'origine avec la cl qui y aurait t insre.
Cette configuration est-elle unique ? Si ce n'est pas le cas, alors donner toutes les configurations
possibles de l'arbre d'origine.
La valeur quon a insr doit se trouver au niveau des feuilles : {1, 10, 15, 17, 19 ou 20}.
Comme il y a eu un clatement, on en dduit une remonte dune clef se trouvant au niveau des
feuilles {19}. On en conclut aussi que cest la feuille f qui a t clate en deux. Lors de
linsertion, on sest retrouv avec les cls {17, 19, 20}. Initialement dans f, on aurait pu avoir
1. 17 et 19 et insertion 20
8 16
1

10 15

17 19

2. 19 et 20 et insertion 17
8 16
1

10 15

17 20

3. 17 et 20 et insertion 19
8 16
1

10 15

19 20

___________________________________________________________________
DI GALLO Frdric

Page 59

20/02/2015

261125034.doc
______________________________________________________________________________

3.3) Cot de cration dun arbre B+


Donner un estimation du cot de cration dun arbre B+ en fonction de N, de B et de M
sachant que le cot comprend le cot de cration et le cot du tri : 2M [1+ logB-1 (M/B)].
N : nombre denregistrements,
B : nombre de zones tampons,
M : nombre de pages du fichier.
La hauteur de larbre principal est donne par logd N o d est la dimension. Larbre final
contient un nombre total de nuds qui est approximativement gal :
Nombre de nuds feuilles = N/2d (toutes les feuilles sont pleines).
Nombre de nuds au niveau suprieur (sachant que lon a besoin de N/2d pointeurs et que
chaque nud contient au minimum d+1 pointeurs) = (N/2d) / (d+1).
Nombre de nuds au niveau suprieur = (N/2d) / (d+1)
Le nombre total de nuds :
h

(N/2d) 1/(d+1)i
i=1

___________________________________________________________________
DI GALLO Frdric

Page 60

20/02/2015

261125034.doc
______________________________________________________________________________

TRANSACTIONS

___________________________________________________________________
DI GALLO Frdric

Page 61

20/02/2015

261125034.doc
______________________________________________________________________________

TRANSACTIONS
I. LE CONCEPT DE TRANSACTION............................................................................ 62
II. LES ETATS D'UNE TRANSACTION.......................................................................... 63
III. EXECUTIONS CONCURRENTES.............................................................................. 64
3.1) Ordonnancement....................................................................................................... 64

___________________________________________________________________
DI GALLO Frdric

Page 62

20/02/2015

261125034.doc
______________________________________________________________________________

BASE DE DONNES CNAM BORDEAUX 1999-2000

TRANSACTIONS
I.

LE CONCEPT DE TRANSACTION
E

Une transaction est unit de programme qui accde aux donnes de la base en lecture et/ou
criture. Une transaction accde un tat cohrent de la base. Durant l'excution d'une
transaction, l'tat de la base peut ne pas tre cohrent. Quand une transaction est valide
(commit), l'tat de la base doit tre cohrent.
Deux types de problmes :
problmes systmes (rcuprabilit)
excutions concurrentes de plusieurs transactions (sralisabilit)
En fait , la seule condition est qu la fin de la transaction, la base soit cohrente. Cest la
rcuprabilit (crash system, erreurs = tat incohrent : comment revenir un tat cohrent ?).

Proprits
Pour prserver l'intgrit des donnes, le systme doit garantir :
Atomicit : Soit toutes les oprations de la transaction sont valides, ou bien aucune
opration ne l'est.
Cohrence : L'excution d'une transaction prserve la cohrence de la base (cest
lutilisateur de vrifier).
Isolation : Mme si plusieurs transactions peuvent tre excutes en concurrence, aucune
n'est cense prendre en compte les autres transactions i.e pour chaque paire de transactions
Ti, Tj, pour Ti tout se passe comme si Tj s'est termine avant le dbut de Ti ou bien qu'elle a
commenc aprs la fin de Ti (les rsultats intermdiaires de Tj ne lui sont pas apparents).
Durabilit : Si une transaction est valide, alors tous les changements qu'elle a faits sont
persistants (mme s'il y a un crash).
Ce sont les proprits ACID (Atomicit, Cohrence,)

___________________________________________________________________
DI GALLO Frdric

Page 63

20/02/2015

261125034.doc
______________________________________________________________________________

Exemple
Une transaction qui transfre 1000 Frs du compte A vers le compte B
Il faut essayer dexcuter le maximum de transactions en mme temps, tout en conservant la
proprit disolation.
1. Lire(A)
2. A:=A-1000
3. Ecrire(A)
4. Lire(B)
5. B:=B+1000
6. Ecrire(B)
La base est cohrente si la somme A + B ne change pas suite a l'excution de la transaction
(cohrence). Si la transaction "choue" aprs l'tape 3, alors le systme doit s'assurer que les
modifications de A ne soient pas persistantes (atomicit). Une fois que l'utilisateur est inform
que la transaction est valide, il n'a plus s'inquiter du sort de son transfert (durabilit).
Si entre les tapes 3 et 6, une autre transaction est autorise a accder a la base, alors elle
"verra" un tat incohrent (A + B est infrieur ce qu'elle doit tre). L'isolation n'est pas
assure. La solution triviale consiste a excuter les transactions en squence.

2. LES ETATS D'UNE TRANSACTION


Active : la transaction reste dans cet tat durant son excution.
Partiellement valide : juste aprs l'excution de la dernire opration.
Echec : aprs avoir dcouvert qu'une excution "normale" ne peut pas avoir lieu.
Avorte : Aprs que toutes les modifications faites par la transaction soient annules
(Poli back). Deux options :
- R-excuter la transaction
- Tuer la transaction
Valide : aprs l'excution avec succs de la dernire opration

___________________________________________________________________
DI GALLO Frdric

Page 64

20/02/2015

261125034.doc
______________________________________________________________________________

Implmentation de l'atomicit
Approche nave : c'est le mcanisme de reprise sur panne.
La notion de copie (shadow database) :
- On suppose qu'une seule transaction peut s'excute en mme temps.
- Un pointeur pointeur_bd pointe vers la version cohrente courante de la base.
- Toutes les mises a jour sont excutes sur une copie. Pointeur_db ne pointera sur la
copie que si la transaction est valide.
- Si la transaction choue, alors la copie est supprime. Si la transaction est valide, on
garde la nouvelle sinon le pointeur repasse sur lancienne version.

Inefficace si la base est volumineuse !

3. EXECUTIONS CONCURRENTES
Plusieurs transactions peuvent tre excutes en concurrence pour :
une meilleure utilisation du processeur (une transaction peut utiliser le processeur
pendant qu'une autre accde au disque)
la rduction du temps de rponse aux transactions (une transaction courte n'a pas
attendre la fin d'une longue transaction)
Le contrle de la concurrence est un mcanisme permettant l'interaction entre transactions
tout en assurant l'intgrit de la base.

3.1) Ordonnancement
En anglais : Schedule. En fait, cest une squence chronologique spcifiant l'ordre
d'excution d'oprations de plusieurs transactions.

___________________________________________________________________
DI GALLO Frdric

Page 65

20/02/2015

261125034.doc
______________________________________________________________________________

Exemple
T1

T2

Lire(A)
A := A - 1000
Ecrire(A)
Lire(B)
B := B + 1000
Ecrire(B)
Lire(A)
Temp := A * 0,1
Ecrire(A)
A := A - Temp
Ecrire(A)
Lire(B)
B := B + Temp
Ecrire(B)

C'est un ordonnancement "en srie" de T1 et T2. On l'appellera O1.

L' ordonnancement 03 reprsente une excution "entrelace" de T1 et T2. Il est quivalent a <T1,T2>.

j Srialisabilit I
Dans la suite, on ne va considrer que les opraL'ordonnancement suivant (04) ne prserve pas la valeur de A + B.
T1
T2
tions de lecture et d'criture.
e
Hypothse Chaque transaction prise a part prserve la cohrence de la base.
LireA)
A := A - 1000

Ecrire(A)
Lire(B)
B := B + 1000

___________________________________________________________________
DI GALLO Frdric

Page 66

20/02/2015

261125034.doc
______________________________________________________________________________
Ecrire(B)
Lire (A)
Temp A * 0, 1
A := A - Temp
Ecrire(A)
Lire(B)
e Ainsi, l'excution en srie prserve la cohrence.
Un ordonnancement entrelac est srialisable s'il est quivalent a un ordonnancement en srie.
Difrrentes dfinitions d'quivalence
B := B + Temp
- c-srialisabilit (Srialisabilit de conflit)
Ecrire(B)
- v-srialisabilit (Srialisabilit de vue)

13

I c-srialisabilit I
Les instructions f~ et des transactions T~ et Tj sont en conflit s'il existe un objet Q accd par
t~ et et l'une d'elles crit Q. Si t~ Lire(Q) et = Lire(Q) alors il n'y a pas de conflit.
Si un ordonnancement O peut tre transform en 0' par une srie de remplacements (swaps)
d'instructions non conflictuelles, alors O et 0' sont c-quivalents.
14

___________________________________________________________________
DI GALLO Frdric

Page 67

20/02/2015

261125034.doc
______________________________________________________________________________

I c-srialisablit I
L'ordonnancement 03 ci-dessous peut tre transform en O~. Il
est donc c-srialisable.
T1
T2
Lire(A)
O est c-srialisable s'il est c-quivalent a un ordon
Ecrire(A)
nancement en srie.
Lire(A)
Eerire(A)

lire(B)
Ecrire(B)

b L'ordonnancement ci-dessous n'est pas

lire(B)
c-sria lisable
Bcrire(B)
T3
Lire(Q)

1T4
Ecrire(Q)

Bcrire(Q)
15
j v-srialisabilit
j v-srialisabilit I
O et O' sont "v-quivalents en vue" Si
Pour chaque objet Q, Si dans O, ~ lit la valeur initiale de Q alors ~ lit la valeur initiale de Q dans
O'.
Pour chaque Q, Si dans O, ~ lit une valeur de Q
produite par ~, alors dans O', cette lecture doit aussi
correspondre a une valeur produite par ~.
Pour chaque Q, Si dans O, ~ est la dernire a excuter Ecrire(Q), alors elle est aussi la
dernire a l'excuter dans O'.
e
O est v-srialisable s'il est v-quivalent un ordonnancement en srie
e

Chaque ordonnancement c-srialisable est v-srialisable

___________________________________________________________________
DI GALLO Frdric

Page 68

20/02/2015

261125034.doc
______________________________________________________________________________
L'ordonnancement suivant est v-srialisable
T5
jT6
jT7
Lire(Q)
Ecrire(Q)
Ecrire(Q)
Ecrire(Q)
Il est v-quivalent a <Ts,T6,T7>
e Si O est v-srialisable et non c-srialisable, alors il contient des mises a jour sans ef~t
17
18

j Autres notions de srialisabilit i


L'ordonnancement ci-dessous est quivalent a <Ti,T> pourtant il n'est ni v-srialisable ni csrialisable
T1
Lire(A>
A := A - 1000
Ecrire(A)

Lire(B)
B := B + 1000
Ecrire(B)
T

Lire(B)
B := B - 10
Ecrire(B)

Lire(A)
A
A + 10
Ecrire(A)
Reprse sur panne. Rcuprabilitl

___________________________________________________________________
DI GALLO Frdric

Page 69

20/02/2015

261125034.doc
______________________________________________________________________________
e Ordonnancement rcuprable Si T~ lit un objet prcdemment crit par Tj alors la validation
de T, a lieu avant la validation de T'~
L'ordonnancement suivant n'est pas rcuprable Si T9 valide tout de suite aprs la lecture
T8
jT9
Lire(A)
Eerire(A)
Lire(A)
Ecrire(B)
Si T8 doit tre avorte, alors T9 aura lu une valeur qui peut tre "incohrente"
Pour dterminer ce type d'quivalence, il faut analyser des oprations autres que Lire et
Ecrire.
Le SGBD doit s'assurer que les ordonnancements soient rcuprables.

19

20
Rcuprabilit (suite)

L'echec d'une transaction peut conduire a l'avortement de plusieurs transactions


T,.
T10
T11
T12
Lire(A)
Lire(B)
Ecrire(A)
Lire(A)
Ecrire(A)
Lire(A)
Si T10 choue, alors T11 et T12 doivent tre avortes.
21
Rcupra bilit (suite) I
e Ordonnancement sans cascade : Si pour chaque paire ~ T, t q T, lit une donne rcdemment
crite par ~, alors la validation de T~ a lieu avant celle de e Un ordonnancement sans cascade de rol
back est rcuprable.

e Il est souhaitable de restreindre les ordonnancements a ce ceux qui sont sans cascade

22

___________________________________________________________________
DI GALLO Frdric

Page 70

20/02/2015

261125034.doc
______________________________________________________________________________

Implmentation de l'isolationI
Les ordonnancements devraient tre
v- ou c-srialisables, rcuprables pour garder la cohrence de la base et de prfrence sans
cascade.
Si l'on autorise que les ordonnancements en srie, alors toutes les proprits sont garanties.

Faire la balance entre le taux de concurrence et le traitement en plus qui s'y greffe.
Dfinition des transactions en SQLI
Dans SQL, une transaction commence implicitement.
Une transaction se termine soit par l'excution d'unE commande COMMIT (ou COMMIT
WORK) soit par ROLL BACK (ou ROLL BACK WORK)

23
T1
T5

T4
Tester la srialisabilitl

Exemple de testi
T2
T3
Li~e(X)

___________________________________________________________________
DI GALLO Frdric

Page 71

20/02/2015

261125034.doc
______________________________________________________________________________
Considrer un ordonnancement O des transactions T1,. . .T'~. Le graphe de prcdence de
O est un graphe (N, A) o
Lire(Y)
Li~c(Z)
Lir~(U)
Lsre(Y)
Liee(V)
Lire(W)
ECTire(W)
Ecrire(Z)
N est l'ensemble des transactions
Il y a un arc (~<T,) s'il y a un conflit entre ~ et T, sur un objet Q et ~ accde a Q avant T,
O est c-srialisable 55 son graphe de prcdence est acyclique.
Lire(U)
Ecrsre(U)
Le r~(Y) Fcrer(Y)
Lira(Z)
Ecrire(Z)
jTest de la v-srialisabilit
Il a t montr que le test de la v-srialisabilit est un problme NP-complet. Il est donc trs
peu probable que l'on trouve un algorithme efficace (polynmial) qui puisse faire ce test.
Exemple de test
T1 j T2 Lire(A)
Lire(A)
Ecrire(A)
Ecrire(A)
Dans la pratique, on se contente de la c-srialisabilit<
conclusion
Tester Si un ordonnancement est srialisable aprs son excution (ou bien sur son graphe de
prcdence) est inefficace.
Contrle de concurrencel
e Protocoles bass sur les verrous Protocoles bass sur les estampilles But Dvelopper des
stratgies de contrle de concurrence qui puissent garantir la c-srialisabilit. Ces protocoles
n'auront pas besoin de faire le test sur le graphe de prcdence (utilisation de techniques de
verrouillage, cf prochain cours)
Pourquoi ce cours ? Pouvoir dcider Si un protocole est correct par rapport une notion de
srialisabilit.
Protocoles bass sur la validation
Diffrentes granularits
Gestion des deadlock (verrous mortels)
Notion de verrouiIlage~
Les transactions posent des verrous sur les donnes auxquelles elles veulent accder.
Les donnes peuvent tre verrouilles de deux manires
Notion de verrouillage (suite)
e Matrice de compatibilit de verrous
Verrou exclusif Dans ce cas, la donne peut tre lue et crite. Le verrou VX est attribu lors
de l'excution de l'opration Lock~X(donne)

___________________________________________________________________
DI GALLO Frdric

Page 72

20/02/2015

261125034.doc
______________________________________________________________________________

Verrou partag : Dans ce cas, la donne ne peut


tre que lue. Le verrou VP est attribu suite a
l'excution de Lock~P(donne)
Les demandes de verrous sont adresses au gestionnaire de la concurrence.
Une transaction ne peut avancer tant que le verrou qu'elle demande ne lui est pas attribu.
jipI x
frfrP oui non
fififix non non
Une transaction ne peut poser un verrou sur une donne que Si ce verro est compatible avec
les verrous qui y sont dja poss.
Lors de son excution, une transaction peut librer certains verrous. Utilisation de la
commande Unlock((

31
Notion de verrouillage
(suite)
e Considrer l'ordonnancement
suivant
Notion de verrouillage (suite)
T1
T2
T1 : Lock~P(A)
Lire(A)
Unlock(A)
Lock~P(B)
Lire(B)
Unlock(B)
Afficler(A + B)
Un protocole de verrouillage est une discipline qui dicte aux transactions comment elles
demandent et comment elles librent les verrous
Lock~X(B)
Lire(B)
B := B - 1000 Ecrire(B)

Lock~X(A)

___________________________________________________________________
DI GALLO Frdric

Page 73

20/02/2015

261125034.doc
______________________________________________________________________________
Ecrire(A)
LOck~P(A)
Lire(A)
Lock~P(B)
Lire(B)
T1 et T2 seront bloqus. Nous sommes en situation de deadlock. Pour rsoudre ce problme, une des
deux transactions doit tre avorte et ses verrous librs
e
La possibilit de deadlock
existe dans presque tous les
protocoles
33
34
Verrouillage a deux phasesi
verrouillage 2PL

b Ce protocole garantit la c-srialisabilit Phase 1:


Verrouillage a deux phasesI
- La transaction peut poser des verrous
- Elle ne peut pas en librer

Phase 2:

e Le 2PL ne garantit pas l'absence de deadlocks e Le 2PL ne garantit pas l'absence de cascades

- La transaction peut librer des verrous


- Elle ne peut plus en poser
On associe a chaque transaction un point de verrouillage qui correspond au moment o elle
pose son dernier verrou (la fin de la premire phase). On montre alors que les ordonnancements
sont quivalents a l'excution en srie selon l'ordre des points de verrouillage des transactions.

___________________________________________________________________
DI GALLO Frdric

Page 74

20/02/2015

261125034.doc
______________________________________________________________________________
35
Extension : "2PL stricte" et "2PL rigoureux"

36
Acquisition des verrousi
Extension du 2PLI
Dans le 2PL stricte, les transactions gardent leurs verrous exclusifs jusqu'au commit.
Dans le 2PL rigoureux, les transactions gardent tous leurs verrous jusqu'au commit.
La diffrence : T~, qui vient aprs T,, peut crire un objet A aprs que T, l'ait lu et avant que
T, ne soit valide.
Alors que dans le 2me cas, ~ ne peut pas modifier un objet accd par tant que celle-ci
n'a pas valid.

37
C'est gnralement par l'utilisateur d'inclure dans son code les demandes de verrous.
Si une transaction T~ veut lire/crire un objet D sans demander explicitement un verrou, alors
l'algo suivant est utilis
Pour l'opration de lecture
Si ~ a un verrou sur D
Alors
Lire(D)
Tant que il y a un transaction avec un verrou
X sur D Faire
Attendre
Fournir un verrous S a ~ sur D Lire(D)

Sinon

___________________________________________________________________
DI GALLO Frdric

Page 75

20/02/2015

261125034.doc
______________________________________________________________________________

38

Protocole avec
estampillage~
Pour l'opration d'criture

j Acquisition des verrousi

Si ~ a un verrou X sur D Alors Ecrire(D)


Sinon
Tant que il y a une transaction avec
un verrou sur D Faire
Si T'~ a dja un verrou S sur D Alors
Transformer S en X
Sinon
Fournir un verrou X sur D a ~ Ecrire(D)
Le but est d'avoir des ordonnancements srialisables quivalents l'ordre chronologique
des transactions

e A chaque transaction est associe une estampille relative au moment o elle "arrive", i.e T'~
avant T, ~ ST'~) < ST(T,) (l'heure systme ou bien un simpIe compteur)
e A chaque objet D de la base sont associes 2 estampilles
On ne dit pas quand est-ce que les verrous sont librs !!

39
1.E~ST'(D) : la plus grande des estampilles des transactions qui ont crit D avec succs
2.L~sT(D) : la plus grande des estampilles des transactions qui ont lu D avec succs

40
Protocole avec

___________________________________________________________________
DI GALLO Frdric

Page 76

20/02/2015

261125034.doc
______________________________________________________________________________
estampillage~
j
Pr
oto
col
e
av
ec
est
am
pill
ag
el
Supposons que ~ veuille lire D
Si ST(T) > E~sT(D), alors la lecture est autorise et
L~ST(D) l max{L~ST'(D),ST~)}
Supposons que ~ veuille crire D
e Si TS~) < L~sT(D) : dans ce cas, cela veut dire qu'il y a une transaction qui est arrive aprs T
et qui a lu D. T est annule
e Si TS(T) < E~sT'(D) si on laisse faire cette criture, alors elle va "craser" celle faite par une
transaction arrive aprs T T est annule
Si ST(T) < E~ST(D), alors T est "annule" et relance avec une nouvelle estampille

e Sinon,

41

- l'criture est ralise


- E~sT(D) ' ST(T)

___________________________________________________________________
DI GALLO Frdric

Page 77

20/02/2015

261125034.doc
______________________________________________________________________________

42

j Protocole avec estampillage~


Soient les transactions T1,T2,T3,T4 et T5 avec les estampilles resp. 1, 2, 3, 4 et 5.
L'ordonnancement suivant reprsente une situation o T2 et T4 sont annules
T1
T2
T3
T4
T5
Lire(X)
Lire(Y)
Lire(Y)
Lire(Y)
Ecrire(Y)
Lire(Z)
Ecrire(Z)
Lire(Z)
Lire(Z)
abort
Lire(X)
Ecrire(Z)
abort
Ecrire(X)
y____
___________________
Ecrire(Z)
j Protocole avec estampiIlage~
e L'estampillage permet d'viter les blocages (les transactions sont excutes ou bien annules)
e Il garantit la c-srialisabilit puisque tous les arcs sont de la forme T " T, avec ST(T) <ST(T,)
e Par contre, le problme de rcuprabilit persiste. Si T est annule alors que T, a lu une valeur
crite par T~ alors T, doit aussi tre annule. Si T, a dja valid, alors l'ordonnancement n'est
pas rcuprable.

___________________________________________________________________
DI GALLO Frdric

Page 78

20/02/2015

261125034.doc
______________________________________________________________________________
43
jProtocole bas sur la validation
L'excution d'une transaction T se fait en 3 phases
Lecture : Les critures
se font dur des
"variables

locales"
Protocole bas sur la validationi

Pour faire le test de validit, nous avons besoin de savoir a quels moments ont lieu les
diffrents phases. D'o l'utilisation d'estampilles
1. Dbut(T~): Le moment o T a dbut
Validation : Tester la validit des critures (ne violent elles pas la srialisabilit ?)
Ecriture : Si la validation russit, alors les critures sont retranscrites sur la base

45

Protocole bas sur la validationi


2.Validation(T~): Le moment o T a termin sa phase prcdente
3.Fin(T~): Le moment o T termine la phase d'criture

46

___________________________________________________________________
DI GALLO Frdric

Page 79

20/02/2015

261125034.doc
______________________________________________________________________________
La srialisabilit est teste en se basant sur un estampillage des transactions correspondant a
leur estampille de validation, i.e ST(T) = Validation(T).

Exemple d'ordonnancementl
La validation de T, russit Si pour chaque T t.q
ST(T) <ST(T,)

T1
Lire(B)

b Fin(T) < Dbat(T,), ou bien

Dbat(T~) < Fin(T~ < validation(T,) et l'ensemble des donnes crites par T est distinct
de celui des donnes lues par T,
Pour le 2me point:

Les critures de T n'ont pas d'effet sur les lectures de T~ (elles ont lieu aprs la fin des lectures
de T)
les critures de T n'ont pas d'effet sur les lectures de T, (T, ne lit aucun objet crit par T)
47
Lire(A)
<valider>
Affieher(A + B)
T2
Lire(E)
B := B - 50
Lire(A)
A := A + 50

<valider>
Ecrire(E)
Ecrire(A)
Note: La mthode de validation permet d'viter les cascades de Poli back puisque les
lectures ne se font que sur des donnes persistantes.

48

___________________________________________________________________
DI GALLO Frdric

Page 80

20/02/2015

261125034.doc
______________________________________________________________________________
Granularit du verrouiIIage~
verrouiIIage~

Granulant du

Nous considrons la hirarchie suivante


Nous sommes en prsence d'une
structure d'arbre de
la forme
Base
Table

Table4

Table n
Page
{
Tuple
Permettre aux transactions de verrouiller n'importe quel niveau mais en respectant un nouveau
protocole
Avant de verrouiller un objet D, T doit avoir un verrou intentionnel sur tous les anctres de D

___'[IPIXI P ]IX[PIXI
IP ~ oui oui oui ~f oui
IX ~ oui f oui ___ ~f ___
P oui __ oui ~
X ~_~_ _ __ PIX oui __ __ 113
49
Page Il Page tm
Tuptelti TupleII2

e Un noeud D peut tre verrouill en P ou IP Si le parent est dja verrouill en IX ou


D peut tre verrouill en X, PIX ou~ Si le parent de d est verrouill en IX ou PIX
e T peut librer un verrou sur D si elle ne possde plus de verrous sur les descendants de D
e La aussi, on utilise le verrouillage en deux phases
50

___________________________________________________________________
DI GALLO Frdric

Page 81

20/02/2015

261125034.doc
______________________________________________________________________________

Gestion des
bIocages~
Gr
an
ula
rit

du
ver
ro
uiI
Iag
e~
Exemples
Prvenir vs gurir
1)

Prvenir
T1 parcourt R et met a jour quelques tuples

T1 obtient un verrou PIX sur R, a chaque lecture d'un tuple, elle pose d'abord un verrou P, et Si
elle a besoin de le modifier, elle transforme le P en X
T2 utilise un index pour lire une partie de R

T2 pose un verrou IP sur R, ensuite elle obtient des verrous P pour chaque tuple qu'elle veut
lire
T3 lit la table R en entier
Soit T qui demande un verrou en conflit avec celui dja dtenu par T,
e Privilgier les plus anciennes transactions (estampillage):
- ST(T) < ST(T,) ~ T peut attendre T,
- ST(T) > ST(T,) ~ T est annule

___________________________________________________________________
DI GALLO Frdric

Page 82

20/02/2015

261125034.doc
______________________________________________________________________________
- Si T est relance avec une nouvelle estampille, alors elle risque d'attendre longtemps!! La
relancer avec la mme estampille.
- Noter qu'ici, seules les transactions demandeuses sont annuls
e Privilgier la transaction qui dtient
le verrou

T3 demande un verrou sur R ou bien


- ST(T) <ST(T,) ~ T. est annule

- ST(T) > ST(T,) alors T attend


51
Gestion des blocagesi
Prvenir vs gurir
1)Gurir

Gestion des blocages


Ici, il faut dtecter le blocage. Le systme maintient un graphe G (N, A) avec
Prvenir vs gurir
Que faire Si un blocage est
dtect ?
N

les transactions

T ' T, 55 T attend que T, libre un verrou


Quand T demande un verrou dtenu par T,, alors l'arc T ' T, est r ajout au graphe
Ilfaut annuler une transaction participant au cycle.
Choisir celle qui permet de rduire au maximum le nombre de cycles
T ' T, est supprim quand T, ne dtient plus le verrou demand par T
Choisir celle qui est la moins proche de son tat de validation
Le systme est bloqu ssi G contient un cycle
Un algorithme est lanc priodiquement pour tester 'acyclicit

Le problme

___________________________________________________________________
DI GALLO Frdric

Page 83

20/02/2015

261125034.doc
______________________________________________________________________________

La suppression d'n tuple ne peut se faire que Si T dtient un verrou X sur ce tuple
L'insertion d'un tuple par T, implique la dtention d'un verrou X par T, sur ce tuple
T veut supprimer tous les comptes dont le solde est
> 300. Elle verrouille donc tous ces tuples.
T, insre un compte avec un solde > 400. Noter qu'il n'y a pas conflit.
Ensuite, T affiche les comptes dont le solde est > 200. Le nouveau tuple est affich.
Noter que cette excution n'est pas quivalente a une excution en srie pourtant
l'ordonnancement est c-srialisable!!
55
Choisir une transaction qui n'a pas t annule plusieurs fois

___________________________________________________________________
DI GALLO Frdric

Page 84

20/02/2015