Indexes - PowerPoint PPT Presentation

About This Presentation
Title:

Indexes

Description:

Insertion: Trouver la feuille la quelle appartient l'entr e de donn e et l'y mettre. ... Commencer la racine, trouver la feuille L laquelle l'entr e appartient. ... – PowerPoint PPT presentation

Number of Views:89
Avg rating:3.0/5.0
Slides: 23
Provided by: RaghuRamak246
Category:

less

Transcript and Presenter's Notes

Title: Indexes


1
Indexes à Arbres et Indexes à Hachage
  • Sections sélectionnées du Chapitre 10

2
Introduction
  • Rappel des 3 alternatives dentrées des données
    k
  • un enregistrement de données avec une valeur de
    clé k
  • une paire ltk, ridgt
  • une paire ltk, liste de ridsgt
  • Les indexes à arbres supportent à la fois la
    recherche des plages de valeurs (range
    search) ainsi que les recherches degalités
    (equality search).
  • ISAM structure statique B tree dynamique,
    sajuste gracieusement aux insertions et
    effacements.
  • Indexes à Hachage meilleurs pour les recherches
    dégalité ne peuvent supporter les recherches
    des valeurs des plages.

3
Intuition Derrière les Indexes à Arbres
  • Trouvez tous les étudiants avec un gpa gt 3.0
  • Si les données sont stockées dans un fichier
    trié, faire la recherche binaire pour trouver le
    premier de ces étudiants, et de là faire un
    scannage pour trouver les autres.
  • Le coût de la recherche binaire peut être
    prohibitif ! Il est en effet proportionnel au
    de pages puisées.
  • Solution Créer un fichier dindexes

Fichier dindexes
kN
k2
k1
Page N
Fichier de données
Page 1
Page 3
Page 2
  • Une recherche binaire est faisable sur de petits
    fichiers dindexes!

4
ISAM
Entrée dindex
P
K
P
K
P
P
K
m
0
1
2
1
m
2
  • Le fichier dindexes peut être très large. On
    peut cependant appliquer lidée de fichier
    dindexes de manière répétée!

Pages
internes
Pages
feuilles
Pages primaires
  • Les pages feuilles contiennent les entrées des
    données.

5
ISAM (Suite)
  • Création du fichier les feuilles (pages de
    données) sont allouées séquentiellement et triées
    selon la clé de recherche ensuite les pages de
    débordement sont crées.
  • Entrées dindexes ltvaleur de la clé, page idgt
    orientent la recherche vers les entrées de
    données se trouvant dans les pages feuilles.
  • Recherche Commence à la racine compare des
    clés pour aller vers la feuille appropriée.
    Coût log F N F entrées/pg index, N
    feuilles
  • Insertion Trouver la feuille à la quelle
    appartient lentrée de donnée et ly mettre.
  • Effacement Trouver et enlever lentrée de la
    feuille désaffecter une page de débordement vide.

Pages de données
Pages des indexes
Pages de débordement
  • Structure statique les changements naffectent
    que les feuilles.

6
Exemple dun Arbre ISAM
  • Chaque nœud peut contenir 2 entrées il ny a pas
    besoin de pointeurs liant les pages entre elles
    (Pourquoi ???)

7
Après lInsertion de 23, 48, 41, 42 ...
Racine
40
Pages de lindex
20
33
51
63
Feuilles
primaires
46
55
10
15
20
27
33
37
40
51
97
63
41
48
23
Pages de
débordement
42
8
... Ensuite Effacement de 42, 51, 97
Racine
40
20
33
51
63
46
55
10
15
20
27
33
37
40
63
41
48
23
  • Notez que 51 apparaît au niveau de la page de
    lindex,
  • mais pas dans la feuille!

9
Arbre B LIndex le plus Usuel
  • Insertion/effacement avec coût log F N Garde la
    hauteur balancée. (F fanout, N
    feuilles)
  • Taux doccupation minimum de 50(sauf pour la
    racine). Chaque nœud contient d lt m lt 2d
    entrées. Le paramètre d est appelé lordre de
    larbre.
  • Supporte efficacement les recherches des plages
    de valeurs et les recherches dégalités.

10
Exemple dArbre B
  • La recherche commence à la racine et les
    comparaisons des clés lorientent vers une page
    (similaire à la méthode ISAM).
  • Recherchez 5, 15, , toutes les entrées de
    données gt 24, ...

Racine
17
24
30
13
39
3
5
19
20
22
24
27
38
2
7
14
16
29
33
34
11
Arbre B en Pratique
  • Ordre typique 100. Remplissage typique 67.
  • Sortance (fanout) moyenne 133
  • Capacités typiques
  • Hauteur 4 1334 312,900,700 enreg.s
  • Hauteur 3 1333 2,352,637 enreg.s
  • Les niveaux supérieurs de larbre peuvent souvent
    tenir en mémoire principale (buffer pool)
  • Niveau 1 1 page 8 Kbytes
  • Niveau 2 133 pages 1 Mbyte
  • Niveau 3 17,689 pages 133 MBytes

12
Insertion dune Entrée de Données
  • Trouver la feuille appropriée L.
  • Mettre lentrée de données dans L.
  • Si L a assez despace, fin!
  • Sinon, on doit partager L (en L et un nouveau
    nœud L2)
  • Redistribuer les entrées de manière égale, copier
    la clé du milieu vers le haut.
  • Insérer lentrée dindex pointant vers L2 dans le
    parent de L.
  • Ceci peut arriver de manière récursive
  • Pour partager nœud dindex, redistribuer les
    entrées de manière égale, mais pousser la clé du
    milieu vers le haut. (Contrastez ceci avec le
    partage des feuilles !!)
  • Les partages font croître larbre le partage de
    la racine augmente sa hauteur.
  • Croissance de larbre devient plus large ou d
    un niveau plus élevé à la racine.

13
Insertion de 8 dans lExemple
  • Veuillez noter la différence entre copier vers le
    haut et pousser vers le haut. (Pourquoi fait-on
    cette différence????)

Entrée à insérer dans le nœud parent.
(Notez que 5 est copié vers le haut et
5
continue dapparaître dans la feuille.)
3
5
2
7
8
napparaît quune fois dans lindex.
14
Exemple dArbre B Après lInsertion de 8
Racine
17
24
30
13
5
2
3
39
19
20
22
24
27
38
7
5
8
14
16
29
33
34
  • La racine a été partagée doù augmentation de
    la hauteur.
  • En fait, nous pouvons redistribuer ici au lieu
    de partager
  • cependant cela nest pas usuel dans la
    pratique.

15
Effacement dune Entrée de Données
  • Commencer à la racine, trouver la feuille L à
    laquelle lentrée appartient.
  • Enlever lentrée.
  • Si L est au moins à moitié vide, fin!
  • Sinon L a seulement d-1 entrées,
  • Essayer de redistribuer, empruntant des cousins .
  • Sinon, fusionner L et un cousin.
  • Si une fusion a lieu, on doit effacer lentrée
    (dindexe) pointant (vers L ou le cousin) à
    partir du parent de L.
  • La fusion peut se répercuter jusquà la racine,
    décroissant ainsi la hauteur de larbre.

16
Notre Arbre Après lInsertion de 8, Suivie de
lEffacement de 19 et 20 ...
Racine
17
27
30
13
5
2
3
39
38
7
5
8
22
24
27
29
14
16
33
34
  • Effacer 19 est facile.
  • Effacer 20 est fait via une redistribution.
    Noter comment la clé du milieu est copiée vers le
    haut après la redistribution.

17
... Et Ensuite Après lEffacement de 24
  • On doit fusionner.
  • A droite, on fait un changement dentrée
    dindex.
  • Ci bas, on tire une entrée dindex vers le bas.

30
39
22
27
38
29
33
34
Racine
13
5
30
17
3
39
2
7
22
38
5
8
27
33
34
14
16
29
18
Exemple de Redistribution Interne
  • A lopposé du cas précédant, ici on peut
    redistribuer une entrée de lenfant gauche de la
    racine vers lenfant droit.

Racine
22
30
17
20
13
5
19
Après la Redistribution
  • Intuitivement, les entrées sont redistribuées en
    poussant lentrée partageante vers le noeud
    parent.
  • Il suffit de redistribuer lentrée dindex avec
    clé 20 on a aussi redistribué 17 pour
    illustration.

Root
17
13
5
30
22
20
39
7
5
8
2
3
38
17
18
33
34
22
27
29
20
21
14
16
20
Chargement en Vrac dun Arbre B
  • Si lon a une large collection denreg.s et que
    lon veut créer un indexe à arbre B avec une clé
    donnée, le faire enregistrement par
    enregistrement est très inefficace.
  • Solution Bulk Loading (chargement en vrac).
  • Initialisation
  • Trier toutes les entrées de données et les
    diviser en page
  • créer une page racine vide et
  • insérer un pointeur de la racine vers la 1ère
    page des données.

Pages dentrées de données triées non encore
mises dans larbre B
Racine
21
Chargement en Vrac (Suite)
  • Les entrées dindex pour les feuilles sont
    toujours créées dans la page dindex la plus à
    droite située juste au dessus du niveau des
    feuilles. Si cette dernière est pleine, elle est
    partagée. (Ce processus peut se répéter
    récursivement

Racine
10
20
Pages de données
35
23
12
6
à mettre sur larbre
3
6
9
10
11
12
13
23
31
36
38
41
44
4
20
22
35
Racine
20
10
35
6
23
12
38
3
6
9
10
11
12
13
23
31
36
38
41
44
4
20
22
35
22
Résumé
  • Index en arbre ISAM, arbres B
  • ISAM est une structure statique
  • Seules les feuilles sont modifiées pages de
    débordement nécessaires
  • Défaut chaînes de débordements
  • Arbres B est une structure dynamique.
  • Insertion et effacement laissent larbre balancé
  • coût de log F N
  • Pas de chaînes de débordement
  • Chargement en vrac des arbres B
Write a Comment
User Comments (0)
About PowerShow.com