Indexes - PowerPoint PPT Presentation

About This Presentation
Title:

Indexes

Description:

Effacement: Trouver et enlever l'entr e de la feuille; d saffecter une page de d bordement vide. Structure statique: les changements n'affectent que les feuilles. ... – PowerPoint PPT presentation

Number of Views:31
Avg rating:3.0/5.0
Slides: 29
Provided by: RaghuRamak246
Category:
Tags: enlever | indexes

less

Transcript and Presenter's Notes

Title: Indexes


1
Indexes à Arbres et Indexes à Hachage
  • Sections sélectionnées des Chapitres 10 11

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
  • Le choix dépend de la technique dindex utilisée
    pour localiser les entres des données k.
  • 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 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ée
  • 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 échange dentrée dindex.
  • Ci bas, on tire une entrée 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
Hachage Statique
  • Pages primaires en nombre fixe et affectées
    séquentiellement jamais désaffectées pages de
    débordement si nécessaire.
  • h(k) mod M bucket où mettre lentrée des
    données dont la clé est k. (M de buckets)

0
h(key) mod N
2
key
h
N-1
Pages (bucket) primaires
Pages de débordement
23
Hachage Statique (Suite)
  • Les buckets contiennent les entrées des données.
  • La fonction de hachage utilise le champ de la clé
    de recherche de lenregistrement r. Les valeurs
    des clés doivent être distribuées sur une plage
    allant de 0 à M-1.
  • Les fonctions de hachage ont été abondamment
    étudiées.
  • Défaut possible développement de longues chaînes
    de débordement qui peuvent entraver la
    performance.
  • Hachage extensible et haching linéaire
    Techniques dynamiques pour résoudre ce problème.

24
Hachage Extensible
  • Situation un bucket (page primaire) se remplit.
    Pourrait-on réorganiser le fichier en doublant le
    de buckets?
  • Lire et écrire toutes les pages est très coûteux!
  • Solution Utiliser un répertoire de pointeurs
    vers les buckets doubler le de buckets en
    doublant la taille du répertoire, tout en ne
    partageant que les buckets en débordement!
  • Le répertoire est bien plus petit que le fichier
    lui-même, doù doubler le répertoire est moins
    coûteux. Plus besoin de pages de débordement!

25
Exemple
2
PROFONDEUR LOCALE
Bucket A
16
4
12
32
PROFONDEUR GLOBALE
  • Le répertoire est de taille 4.
  • Pour trouver un bucket pour r, prendre un de
    bits à la fin de h(r) équivalent à la
    profondeur globale p.ex.
  • Si h(r) 5 ( binaire 101), r est dans le bucket
    vers le quel pointe 01.

2
2
Bucket B
13
00
1
21
5
01
2
10
Bucket C
10
11
2
REPERTOIRE
Bucket D
15
7
19
PAGES DE DONNEES
  • Insertion Si le bucket est plein, le partager
    (affecter une nlle page,
  • et redistribuer).
  • Si nécessaire, doubler le répertoire. (En fait,
    partager un bucket
  • nentraîne pas nécessairement le doublement
    du répertoire
  • un doublement nest nécessaire que si la
    profondeur globale ne
  • correspond plus a la profondeur locale.)

26
Insertion de h(r)20 (Cause un Doublement)
2
3
PROFONDEUR LOCALE
PROFONDEUR LOCALE
Bucket A
16
32
32
16
Bucket A
PROFONDEUR GLOBALE
PROFONDEUR GLOBALE
2
2
2
3
Bucket B
1
5
21
13
00
1
5
21
13
000
Bucket B
01
001
2
10
2
010
Bucket C
10
11
10
Bucket C
011
100
2
2
REPERTOIRE
101
Bucket D
15
7
19
15
19
7
Bucket D
110
111
2
3
Bucket A2
20
4
12
DIRECTORY
20
12
Bucket A2
4
(image'
de Bucket A)
(image'
de Bucket A)
27
Insertion de h(r)20 (Suite)
  • 20 binaire 10100. Derniers 2 bits (00)
    indiquent que r appartient au bucket A qui est
    déjà plein! On divise A en A et A2. mais on a
    besoin des 3 derniers bits pour décider.
  • Profondeur Globale du répertoire Max de bits
    nécessaires pour décider du bucket auquel une
    entrée appartient.
  • Profondeur Locale dun bucket de bits utilisés
    pour déterminer si une entrée appartient à ce
    bucket.
  • Quand double-t-on le répertoire?
  • Avant insertion p.l. du bucket p.g..
    Linsertion entraîne p.l. gt p.g. le répertoire
    est doublé par copie (copying over) et
    réarrangement des pointeurs.

28
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
  • Bulk loading des arbres B
  • Index à hachage Hachage statique vs. extensible
Write a Comment
User Comments (0)
About PowerShow.com