Documente Academic
Documente Profesional
Documente Cultură
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
Exemple de fichier
P1
P2
P3
H(c)
1
2
.
.
.
P4
P5
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
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.
Exe
mple :
D=3
P=3
P1
1114
Index
P2
P3
1100
P4
2018
P5
Fichier
2212
P7
1001 1010 --
P9
2300
2100
P11
2100 2200 -
2018
2019
---
P6
P8
P10
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
P
6
1114 2000
P4
2100
2300
P
9
2100 2200 -
2006 2007
P1
2
P
8
P1
1
P1
0
P1 et P14
1114
P
2
2019
P3
1100
P
51001 1010 ---
1114 2000
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
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
800
3900
1800
700
14600
22901
34601
1201
601
1701
52753
2453
253
353
53
53
30999
45199
5499
34199
2090
99
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).
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