Académique Documents
Professionnel Documents
Culture Documents
Cours BD (Fichiers) 2007
Cours BD (Fichiers) 2007
Supports physiques Techniques de stockage Indexation de chiers Larbre-B Hachage Les index bitmap Structures de donnes multidimensionnelles
Structures de donnes
Antoine Cornujols
www.lri.fr/~antoine antoine.cornuejols@agroparistech.fr
3.
Supports physiques Techniques de stockage Indexation de chiers Larbre-B Hachage Les index bitmap Structures de donnes multidimensionnelles
Structures de donnes
3.
Segments et pages
Les fichiers sont dcomposs en pages
Portions de taille fixe dinformations contigus dans le fichier Unit dchange entre le disque et la mmoire principale
Rduction de la latence
Stocker les pages contenant des informations corrles sur des segments proches physiquement sur le disque
Justification : si le SGBD accde x, il est probable quil va accder ensuite des donnes relies x
Le disque est divis en segments [physique] (de la taille dune page [logique])
Une page [logique] peut tre stocke dans nimporte quel bloc [physique]
Les demandes des applications (e.g. SGBD) pour lire un item sont satisfaites par :
la lecture de la page contenant litem dans le buffer du SGBD le transfert de litem du buffer vers lapplication
Item transfer
7 8
retenir
Ce sont les temps daccs relatifs aux mmoires primaires et secondaires et les capacits mmoire qui motivent les techniques dindexation dveloppes Disque dur : Temps de recherche ! 45 60 ms Temps de lecture ! 1 2 ms Mmoire centrale : Temps de recherche ! 10-6 s Temps de lecture ! 10-6 s
10
Ces oprations impliquent des slections en fonction de conditions de slection ou de filtrage. Il existe des : conditions simples (e.g. slection sur un attribut) conditions complexes (e.g. slection sur plusieurs attributs) Une condition complexe doit tre dcompose en conditions simples.
11
Close. Ferme laccs au fichier en vidant les buffers et en librant les ressources.
12
Optimisation
Une organisation de fichier russie devrait pouvoir excuter efficacement les oprations que nous pensons appliquer frquemment au fichier. Exemples : Si condition de recherche frquente sur le numro de Scurit Sociale, il faut favoriser la localisation par rapport la valeur de NoSS. ==> Soit trier par rapport NoSS, soit dfinir un index sur NoSS. Si, en plus, recherche demploys par service, il faudrait stocker tous les enregistrements des employs dont la valeur de SERVICE est identique de faon contigu. Mais cet arrangement est en conflit avec les enregistrements classs sur la valeur de NoSS. ==> Il faut trouver un compromis : optimisation
13
Supports physiques Techniques de stockage Indexation de chiers Larbre-B Hachage Les index bitmap Structures de donnes multidimensionnelles
Structures de donnes
3.
16
Solution partielle 2 : Utilisation de pages doverflow (et tri de temps en temps) Dsavantages
Les pages successives ne sont plus ncessairement stockes la suite Les pages overflow ne sont pas dans lordre
18
Overflow
Pointer to overflow chain
These pages are Not overflown
3 111111 111111 111111 122222 123456 123456 232323 234567 234567 313131
MGT123 F1994 4.0 CS305 S1996 4.0 ECO101 F2000 3.0 REL211 F2000 2.0 CS315 S1997 4.0 EE101 S1998 3.0 MAT123 S1996 2.0 EE101 F1995 3.0 CS305 S1999 4.0
page 0
page 1
Les entres dindex sont stocke suivant les valeurs de la cl de recherche : des entres avec la mme cl de recherche sont stockes ensemble (hachage, Barbres)
MGT123 S1996 3.0 CS305 PSY 220 F1995 2.0 S2001 3.0
7 111654 111233
page 3
S Location Mechanism
Index intgr
Fichiers non tris (heap files) Fichiers tris (sorted files) Fichiers intgrs contenant lindex et les enregistrements ISAM (Index Sequential Access Method) B+ arbres
S
Once index entry is found, the row can be directly accessed
Index entries
Hachage
S, .
Index intgr
Index file
Dans ce cas, la structure de stockage peut tre un fichier ordonn ou non, mais souvent il sagit dun fichier intgr avec un autre index (sur une cl de recherche diffrente typiquement la cl primaire)
Index clairsem : Ne contient dentres dindex que pour certaines des valeurs sur lesquelles il y a des recherches effectuer.
Id
Nom
Dept
recherche associative
lire tout le fichier en pire cas O(N) O(log(N)) slection par intervalle ~O(1)
Indexage
Hachage
8.1
!
Indexage
! ! ! !
secondaire 10/24/2006
Index dense
Robert Godin. Tous droits rservs. 29 10/24/2006 Robert Godin. Tous droits rservs. 30
!
! !
10/24/2006
31
Cot de la recherche = nombre de niveaux Si facteur de branchement = b, cot = logbF + 1 E.g. : F= 10000 et b = 100, cot = 3
Pointeur
Location mechanism
Les arbres B+
Soutiennent : les recherches dgalit et dintervalle les cls attributs multiples les recherches cl partielle
Les arbres B+
Dynamiques Le niveau feuille est une liste (trie) chane des entres dindex Les pointeurs entre frres permettent la recherche par intervalle, mme si allocation et d-allocation de feuilles (les feuilles nayant pas tre physiquement contigus)
8.1.2 Arbre-B+
! !
forme d!index hirarchique quilibr O(log(N)) en pire cas division/fusion des blocs taux d!occupation minimum de 50%
Robert Godin. Tous droits rservs. 37
Roganisation dynamique
10/24/2006
10/24/2006
38
FBMf/2
OrdreI /2
! ! !
! !
Ci < Cj
! ! !
Ci : Cl Ri : reste de l'enregistrement ou rfrence S : Pointeur sur le bloc suivant dans la liste des feuilles Robert Godin. Tous droits rservs. 39 10/24/2006 Robert Godin. Tous droits rservs. 40
10/24/2006
Rechercher 43
10/24/2006
41
10/24/2006
42
Hauteur moyenne
!
= 20 et OrdreI = 200
H~1+
log
OrdreMoyenI
(N / FBf)
Hauteur = nombre de niveaux Hauteur 2 N ! 2 * 10 = 20 cls (pire cas) Hauteur 3 N ! 2 * 100 * 10 = 2 000 cls Hauteur 4 N ! 2 * 100 * 100 * 10 = 200 000 cls Hauteur 5 N ! 2 * 100 * 100 * 100 * 10 = 20 000 000 cls Hauteur H N ! 2* OrdreI /2 H-2 * FBMf/2 pour H !2 H " 2 + log
OrdreI /2
OrdreMoyenI = FBf =
2/3 OrdreI
2/3 FBMf
Index secondaire
(N /(2* FBMf/2 ))
O(log N)
Robert Godin. Tous droits rservs. 43
(N)
44
10/24/2006
10/24/2006
8.1.2.3
!
Dbordement et division
! ! ! !
FBM = 3, OrdreI = 4
10/24/2006
45
10/24/2006
46
Insertion de 25
Insertion de 10
! !
10/24/2006
47
10/24/2006
48
Insertion de 70
Insertion de 50
! !
10/24/2006
49
10/24/2006
50
Insertion de 53
Insertion de 45
! ! !
10/24/2006
51
10/24/2006
52
Cas simple
10/24/2006
53
10/24/2006
54
Ajuster sparateur
10/24/2006
55
10/24/2006
56
10/24/2006
57
10/24/2006
58
10/24/2006
59
10/24/2006
60
8.1.3 Arbre-B
! ! !
Arbre-B
Arbre-B+
10/24/2006
61
10/24/2006
62
IDE difficile cl d!accs + pointeur (unique) listes inverses dans les feuilles
Index groupant ( clustering index ) ! organisation primaire par grappe et index secondaire sur mme cl
Ordre variable
Arbre B prfixe
10/24/2006
10/24/2006
8.1.5 Ralisation de l'accs par IDE l'aide d'une organisation par index !
Index primaire
Arbre B+
IDE = id_fichier, valeur de la cl unique ncessite le passage par l!index index secondaire cl d!index = IDE
IDE logique
10/24/2006
65
10/24/2006
66
10/24/2006
67
10/24/2006
68
8.2
!
8.3 Hachage
! ! !
Chaque niveau : position d'un symbole de la cl vue comme une squence de symboles s1s2sn
Hachage ou adressage dispers (hashing) Fonction h(cl de hachage) => l'adresse d'un paquet Fichier = tableau de paquets (bucket)
! ! !
Habituellement paquet = bloc Pas d!index traverser : O(1) en meilleur cas Slection par galit (pas intervalle)
10/24/2006
69
10/24/2006
70
Adressage ouvert
!
Chanage
10/24/2006
71
10/24/2006
72
Fonction de hachage
!
Hachage vs indexage
! ! ! ! !
h(cl) = cl MOD TH
! TH ! TH
O(1) en meilleur cas vs O(log(N)) Pas d!espace supplmentaire d!index Gaspillage d!espace si TH trop > Performance dgrade si TH trop < Gestion plus dlicate
Cl non numrique
Cl non numrique ?
10/24/2006
10/24/2006
Calcul d!espace
!
FB = 1 FB = 10 FB = 100
~ 30% ~ 5% ~1%
10/24/2006
75
10/24/2006
76
8.3.2.1
! !
Hachage linaire
Adaptation de TH
suite d!expansions
{0, 1, }
d= 2
10/24/2006
77
10/24/2006
78
10/24/2006
79
10/24/2006
80
Insertion de 100102
!
10/24/2006
81
10/24/2006
82
Insertion de 011012
!
zone d!expansion !
algorithme de base
!
! ! !
division/fusion contrle par taux d!occupation hachage linaire au niveau suivant biais dans les chanages ( droite de p) expansions partielles
!
Variante de division
d= 3
!
10/24/2006
83
10/24/2006
10/24/2006
10/24/2006
Complter l!arbre
10/24/2006
87
10/24/2006
88
10/24/2006
89
10/24/2006
90
! entre
d!espace
! Variation
10/24/2006
91
10/24/2006
Hachage statique
v1 = v2
h(v1) = h(v2)
CLUSTER d!Oracle
applicable dans le cas non unique IDE = id_fichier, valeur de la cl unique ncessaire avec hachage dynamique
Robert Godin. Tous droits rservs. 93 10/24/2006 Robert Godin. Tous droits rservs. 94
10/24/2006
Hachage sur
10/24/2006
95
10/24/2006
96