Sunteți pe pagina 1din 28

CHAPITRE 2

Plan
1 INTRODUCTION
2 RAPPELS SUR LES METHODES CLASSIQUES DE STOCKAGE
2.1 Le Fichier comme un tas de donnes
2.2 Le hachage ou adressage associatif
2.3 Fichiers indexs
3 INDEX EN B-ARBRE
3.1 Dfinitions
3.2 Algorithme dinsertion
3.3 Algorithme de suppression
4 HACHAGE VIRTUEL
4.1 Introduction
4.2 hachage virtuel HV1

Introduction
Nous nous intressons dans ce chapitre la couche du SGBD qui accde
la BD, cest--dire au systme de stockage appel la mmoire
relationnelle.
Cette couche prsente quatre fonctions principales :
1.Prsenter une vision relationnelle des fichiers qui constituent la BD.
Nous rappelons quun fichier est un ensemble denregistrements composs
eux-mmes de champs. En premire approximation, une relation peut tre
vue comme un fichier, et chaque tuple correspond un enregistrement.
2.Grer la mmoire centrale (MC) : les relations sont dcoupes et
stockes par page de taille fixe en mmoire secondaire (MS), lesquelles sont
amenes en MC la demande, grce des mcanismes de mmoire
virtuelle. Lespace de stockage en MS est logiquement divis en segments.
Un segment est un espace virtuel de stockage qui se compose physiquement
de plusieurs pages. Nous rappelons que la page est lunit de transfert entre
MC et MS. Un fichier est stock dans un seul segment et peut stendre donc,
sur plusieurs pages.
3.Grer les diffrentes relations de la BD, cest--dire les relations de
base, les index appels encore relations inverses, les vues, les diffrentes
relations catalogues permettant de les dcrire.

Usager 1

Usager n

Prog. en
PL/1 ou
Cobol

Langage SQL
RDS:RelationnelDataSystem
Gestion de catalogues
Optimisation de requtes
Mcanismes dautorisation
Contraintes dintgrit

Mta Base
(Description relations
de base et relations
systmes

DBSS:DataBaseStorageSystem
Gestion espace physique
Gestion des index
Gestion des transactions
Accs concurrents
Reprise aprs pannes

BD

4. Etablir des mthodes daccs : nous distinguons les mthodes


classiques (les mthodes indexes, le hachage etc.) et des mthodes plus
particulires savoir le hachage virtuel et les arbres balancs B-arbres.
Les oprations que nous pouvons effectuer sur le fichier sont :
Insrer un enregistrement
Supprimer un enregistrement
Modifier un enregistrement.

rappels sur les mthodes classiques de stockage


1.Le fichier comme un tas de donnes
Dans cette technique, les enregistrements sont placs la queue leu leu dans des
pages successives. Un enregistrement nest pas cheval sur deux pages. Le seul
accs aux donnes dans le cas de la recherche dun enregistrement est un balayage
squentiel des tuples. Cette opration est donc trs coteuse.
Linsertion dun nouvel enregistrement seffectue dans la dernire page. Si cette
dernire est sature, alors une nouvelle page est alloue et lenregistrement est
insr.
La suppression est assure logiquement grce un indicateur de suppression.
Cette organisation est gnralement implmente par dfaut dans les SGBD.

2. LE HACHAGE OU ADRESSAGE ASSOCIATIF


Principe : disposer dune fonction de hachage h(c ) qui permet de calculer un numro
de bloc ou paquet, contenant un ensemble de pages, partir dune cl. La recherche de
lenregistrement seffectue ensuite squentiellement dans le bloc.

Exemple de fichier

P1

P2

P3

H(c)

1
2
.
.
.
P4

P5

Table des blocs


P6

P7

P8

Explication : La table des blocs va contenir n+1 pointeurs vers n+1 blocs. Chaque
pointeur est ladresse de la premire page du bloc. Un bloc peut contenir une
plusieurs pages chanes entre elles.
La fonction de hachage permet de retrouver partir de la cl le numro du bloc qui va
contenir lenregistrement.
Remarque : la table des blocs peut tre rsidente en MC si elle est petite. Dans le cas
contraire (dfinie sur plusieurs pages), il faudra la ramener de la MS par partie (par
page) en appliquant la fonction de hachage.

Algorithme de recherche
entre : valeur de cl c
Calcul h ( c ) : numro de bloc
Consultation de la table des blocs : rcupration de la premire page du bloc
Recherche dans cette page lenregistrement ayant pour cl c.
Algorithme de modification :
rechercher lenregistrement laide de lalgorithme prcdent
raliser la modification
Algorithme dinsertion :
rechercher si le nouvel enregistrement nexiste pas.
Si non : si le bloc nest pas satur alors insrer le nouvel enregistrement, sinon, allouer
une nouvelle page, insrer le nouvel enregistrement et chaner la nouvelle page aux
autres.
*Le bloc est satur signifie quil va y avoir dbordement. Cest la gestion des
dbordements qui va dgrader les performances dans les techniques de hachage.
Algorithme de suppression :
rechercher lenregistrement supprimer et
soit librer la place quoccupait cet enregistrement en mettant jour le chanage,
soit mettre un indicateur de suppression dans len-tte de lenregistrement supprimer.

3. Fichiers indexs
Principe : un fichier index contient un ensemble de couples (c,p) o c
est la cl du premier enregistrement de la page p.
Index dense : il contient toutes les cls du fichier
Index non dense : on cre des enregistrements index pour certains
enregistrements du fichier : dans ce cas le fichier est tri et divis en blocs.
A chaque bloc lui est associe une entre dans lindex.
(c,p) = < plus grande cl du bloc, adresse relative du bloc>

Exemple
Soit le fichier suivant :
Index dense
Bloc1
1
8
10
12
13

@1
@2
@3
@4
@5
@6
@7
@8

20
21
30
Bloc2

10

12

@1 @2 @3 @4

13

20

21

@5 @6 @7

30
@8

Index non dense


12
30
@01
@02

Cls
Adresses de blocs

1.Algorithme de recherche :
accs lindex,
recherche dans lindex de la cl denregistrement dsir,
rcupration dans lindex de ladresse relative de lenregistrement ( si index
dense), ou de ladresse relative du bloc qui le contient (si index non dense),
Conversion de ladresse relative en adresse relle,
Accs lenregistrement ou au bloc,
Transfert de lenregistrement dans la zone du programme utilisateur.
2. Algorithme dinsertion:
accs lindex,
dtermination de lemplacement de la page qui doit contenir
lenregistrement, puis dtermination de la place de lenregistrement
dans la page.
Si la place existe (page non sature), alors insrer
lenregistrement en dplaant les autres si ncessaire.
Si la page est pleine, il existe diffrentes stratgies, entre autres,
aller la page suivante ou allouer une nouvelle page, tout en mettant
jour lindex.

3. Algorithme de suppression :
appliquer lalgorithme de recherche pour trouver lenregistrement,
soit supprimer rellement lenregistrement en mettant jour lindex,
soit faire une suppression logique.
Cas particuliers : si lenregistrement supprimer est le premier de lindex, alors
une modification de lindex est ncessaire. Lorsquune page devient compltement
vide, il faut la rendre au systme et mettre jour lindex.
4. Algorithme de modification :
appliquer lalgorithme de recherche pour trouver lenregistrement modifier,
raliser la modification.
Cas particulier : si la modification porte sur la cl, alors la traiter comme une
suppression, suivie dune insertion.
Un index tant lui-mme un fichier, il ny a aucune raison, si celui-ci est
volumineux, de dfinir un autre niveau dindex et ainsi de suite : nous obtenons alors
un index hirarchis plusieurs niveaux ( exemple la mthode squentielle indexe
ISAM dans laquelle il pouvait y avoir deux ou trois niveaux dindex : index de
cylindres, index de pistes, et ventuellement index maitre ).

4. Index en b-Arbre
Les fichiers squentiels indexs ont pour dsavantage de diminuer leurs performances
lorsque leur taille grandit.
Souvent dans de telles organisations la rorganisation tait ncessaire de manire
assez frquente (pour rcuprer les places libres, pour allouer de nouvelles places
etc).
Une technique efficace dans le cas de nouvelle insertion ou suppression existe et est
largement applique dans le cas des BD, il s'agit des index en B-arbre ou encore appel
arbre balanc qui sont des cas particuliers dindex hirarchis plusieurs niveaux.
Un B-arbre est un arbre quilibr dans lequel les chemins qui conduisent de la
racine une feuille quelconque sont tous de mme longueur.

Dfinition :
Soient d et p des nombres entiers positifs : un B-arbre dordre d (nombre de
descendants directs dun nud interne) et de profondeur p est dfini comme une
arborescence ayant les proprits suivantes :
Chaque nud a au plus d fils, cest--dire d pointeurs.
Chaque nud except la racine et les feuilles a au moins [d/2] fils (plus petit
entier non infrieur d/2, ou encore larrondi suprieur de d/2).
La racine a au moins 2 fils.
Toutes les feuilles apparaissent au mme niveau : (p),
Un nud ayant k fils (k<= d) cest--dire k pointeurs, contient k-1 cls.
Les donnes (tuples) sont ranges dans les feuilles ou nuds terminaux. Les
nuds non terminaux ne contiennent que des cls et des pointeurs vers dautres nuds
de larborescence.
Ainsi un B-arbre a deux composantes :
Un B-index constitu par lensemble des nuds non feuilles appel le B + arbre
Une relation de base reprsente par les feuilles de larborescence.

Les types daccs fournis par un B-index


Nous pouvons avoir deux types dindex :
Index principal : lordre physique concide avec lordre logique. Il est
construit au chargement initial de la relation et est dfini sur une cl.
Index secondaire : ordre physique est diffrent de lordre logique dans la
plupart des cas et peut tre dfini sur des attributs non cls

Exe
mple :

D=3
P=3

P1
1114

Index

P2

P3

1100

P4
2018

P5
Fichier

2212

P7

1001 1010 --

P9

1114 2006 2007

1100 1112 ----

2300

2100

P11

2100 2200 -

2018

2019

2300 2308 2360


2212 2220 ---

---

P6

P8

P10

*Par souci de clart, seul le champ cl est reprsent dans


les pages du fichier (pages P5 P11).

Algorithme de recherche : soit la recherche dun tuple de cl c


lire la racine et rechercher quelle valeur de cl recouvre la valeur c.
lire la valeur de pointeur associ.
Aller la page pointe par le pointeur slectionn.
Rechercher quelle valeur de cl recouvre c, lire la valeur de pointeur
associ et aller la page pointe.
Rpter lopration prcdente jusqu trouver la page feuille contenant la
cl.
Exemple : le chemin daccs ncessaire la recherche du tuple de cl
2200 est le suivant :
P1 : 1114<2200<2212 : aller la page P3 ;
P3 : 2200>2100 : aller la page P9 ;
P9 : recherche squentielle du tuple de cl 2200.

Algorithme dinsertion : soit insrer un tuple de cl c


rechercher la page feuille du B-arbre qui doit contenir ce tuple en appliquant
lalgorithme de recherche : soit Pi cette page ; deux possibilits.
1. Si Pi est non sature alors insertion dans lordre des cls.
2. Sinon il faut allouer une nouvelle page P. On rpartit les tuples de Pi avec le
nouveau tuple en deux groupes quilibrs qui seront stocks respectivement sur Pi et
P.
Soit P0 la page qui pointait sur Pi ; deux possibilits :
1. Soit P0 est non sature, cest--dire quelle na pas les d-1 cls alors insertion dun
pointeur pour P avec la valeur minimum de cl de P.
2. Sinon, il faut allouer une nouvelle page pour lindex tout en contrlant le pointage du
niveau antcdent.
Dans le cas o plusieurs anctres de P0 sont pleins alors linsertion aura pour effet de
modifier larbre sur plusieurs niveaux et ainsi tre dans la possibilit de modifier la
racine qui deviendra un nud intermdiaire, et qui sera remplace par une nouvelle
racine avec 2 fils. La profondeur de larbre sera alors modifie. On parle alors
dinsertion avec clatement de nuds et propagation de lclatement jusqu la racine.

Exemple :
Insrer le tuple de cl 2000
Rechercher la page qui doit contenir le tuple de cl 2000 : soit P7
P7 est sature : allocation dune nouvelle page P12 :
Rpartition des cls : 1114 et 2000 dans P7, 2006 et 2007 dans P12.
Insertion dans P3 de la cl 2006 et un pointeur sur la nouvelle page P12, mais P3 est
sature (elle a le maximum de fils).
Allocation dune nouvelle page P13 : Pointeurs P7 et P12 dans P3, Pointeurs P8 et P9
dans P13.
Insrer dans P1 une nouvelle cl 2018 et un pointeur pour P13, mais P1 est sature.
Allocation dune nouvelle page P14 : pointeurs P2 et P3 dans P1, pointeurs P13 et P4
dans P14.
Crer une nouvelle racine P15 contenant la cl 2018 pointant sur P1 et P14.
Le B-arbre initial devient :

D=3
P=4

P15
2018
P14

P
1

1114

P
2

2212

P3
1100

P5

P13
2006

P7

1001 1010 --1100 1112 ----

P
6

1114 2000

P4
2100

2300

P
9

2100 2200 -

2006 2007

P1
2

P
8

P1
1

2300 2308 2360

2212 2220 --2018 2019 ---

P1
0

Algorithme de suppression : soit supprimer le tuple de cl c


appliquer lalgorithme de recherche de la cl c : soit Pi la page qui contient c
Si Pi a un nombre denregistrement >= [d/2] aprs suppression alors raliser la suppression. Il
faut cependant vrifier que la cl du tuple supprim ne se retrouve pas comme cl dans lindex du
B-arbre (vrifier tous les niveaux de lindex). Dans ce cas, il faut alors remonter dans la
hirarchie afin de remplacer cette cl par la cl du tuple suivant.
Sinon (cest--dire que Pi a moins de [d/2] fils aprs suppression) :
On examine la page Pj immdiatement gauche ou droite de Pi et ayant le mme pre.
Si Pj a plus de [d/2] enregistrements, on redistribue les enregistrements de Pi et Pj de manire
quilibre tout en conservant lordre. On rpercute la modification sur les anctres de Pi puisque
les cls sont modifies.
Sinon on ralise une suppression avec fusion. On regroupe Pi et Pj en un seul bloc et on modifie
les anctres de Pi. Cette fusion peut tre rcursive.
Exemple : Soit supprimer dans le B-arbre prcdent le tuple de cl 2018
La procdure de recherche nous donne le chemin daccs : P15, P14, P13, P8.
La suppression du tuple de cl 2018 implique deux situations :
Le tuple de cl 2018 est le premier enregistrement de la page P8. Il faut propager vers le haut de
larbre que maintenant la plus petite valeur de la cl dans P8 est 2019.
Par ailleurs, lorsque 2018 est supprim de P8, cette page ne respecte plus les caractristiques du
B-arbre (>= [d/2]). P8 na pas de frre gauche mais il a un frre droit P9 qui contient 2 tuples.
On fusionne alors P8 et P9. Mais P13 na plus quun seul fils, ce qui implique la fusion de P13
avec son frre P4. Alors P14 naura plus quun seul fils, donc la fusion se propage P14 et son
frre P1. La racine P15 se retrouve avec un seul fils (P14 et P1 fusionns), elle est supprime .
Nous obtenons le B-arbre suivant :

P1 et P14
1114

P
2

2019

P3
1100

P
51001 1010 ---

1114 2000

1100 1112 ---

P6

P4 et
P13
2212 2300

2006

P
7

D=3
P=3

P1

P8 et
P9 2019 2100 2200

P1
1
2300 2308 2360

2006 2007 ---

2212
---P10

2220

Introduction
Nous avons vu en tudiant les fichiers alatoires, que la mthode de hachage
tait performante tant que le fichier nvoluait pas. La dtrioration des
performances daccs est due laccumulation des dbordements. Souvent la
prvision des dbordements impliquait des taux doccupation de fichier assez faible.
Lide du hachage virtuel est de prvoir une solution dans le cas dinsertion lorsque
le taux doccupation du fichier est voisin de 1.
1.Hachage virtuel1 : HV1
La mthode de hachage virtuel 1 est applique des fichiers ayant des taux de
remplissage tout fait usuel (voisin de 1), lorsque de nouvelles insertions posent
problme. La solution consiste lorsquil y a dbordement modifier la fonction de
hachage initiale.
Principe : il consiste clater le paquet satur en deux paquets grce la
nouvelle fonction de hachage, et rpartir les enregistrements.
La fonction de hachage sur laquelle a t dvelopp le principe de HV1 est la
division.
Soit la fonction initiale de hashcoding H0 , soit c une cl et N le nombre de
paquets.
H0: c

m [0, N[
R(c,N) = reste de la division de c par N

La nouvelle fonction de hachage utiliser


est :
m [0, 2N[
H1 : c
R(c, 2N)
Exemple:

Fichier ltat initial: N=100: H0(c) = R(c,100)

800
3900
1800
700
14600

22901
34601
1201
601
1701

52753
2453
253
353
53

53

30999
45199
5499
34199
2090

99

Insertion de 23750 : H0 (23753) = 53 : dbordement du paquet 53, alors application


de la nouvelle fonction de hashcoding H1 .
H1 (23753) = R(23753,200) = 153, donc clatement du paquet 53 en deux paquets
53 et 153.
800
390
0
180
0

2290
1
3460
1

2453
253
53

3099
9
4519
9

1201

5499

700

601

146
0
0

1701

3419
9

53

2090
99

Fichier = 200
paquets

2375
3
5275
3
353

15
3

19
9

Ainsi, un nouvel enregistrement r aura soit la mme adresse, soit une nouvelle
adresse H0(c)+N ou encore H1 (c) = m est telle que H0 (c ) = m-N.
Mathmatiquement il a t prouv que lorsquon utilise une pareille fonction de
hachage alors :
Si y enregistrements partagent la mme adresse m avec H0, alors en moyenne y/2
changeraient dadresse en appliquant H1.
Soit b le nombre maximal denregistrements du paquet, alors si y est voisin de b ,
il est trs peu probable que H1 attribue m ou m+N plus de b enregistrements.
Ces implications nous permettent daffirmer que la recherche dun enregistrement
se fera au maximum en 2 accs : (paquet m et paquet m+N).

Rgles de fonctionnement de HV1


Le fichier est cre avec H = H0
H est inchang jusqu ce quune collision se produise et que le taux de
remplissage dpasse lusuel.
Ds la premire collision, alors les actions suivantes sont excutes :
La mmoire est alloue pour les paquets N, N+1, , 2N-1
Une table de bits B(0 , N-1) est cre avec B(n) = 0 quelque soit n.
Si m0 est ladresse de la collision, alors B(m0) =1
H = H1(c) si H0(c) = m0
H = H0(c) sinon
Chaque enregistrement de cl c tel que H0(c) = m0 est rinsr ladresse H1(c)
soit m0+N.

0 0

53

99
CONCLUSION
Une srie de tests utilisant HV1 a aboutit la conclusion suivante :
Un fichier HV1 peut subir un grand nombre dinsertions sans altrer les
performances.
En gnral, un enregistrement sur deux est trouv en un accs.
Au pire un enregistrement est trouv en deux accs en moyenne ( la table de bits

S-ar putea să vă placă și