62
1 Organisations unidimentionnelles : indexage et hachage Sélection basée sur une clé d'accès recherche associative Ex: Chercher le plant dont le noCatalogue = 10 Sériel lire tout le fichier en pire cas O(N) Indexage O(log(N)) sélection par intervalle Hachage ~O(1)

1 Organisations unidimentionnelles : indexage et hachage Sélection basée sur une clé d'accès recherche associative Ex: Chercher le plant dont le

Embed Size (px)

Citation preview

Page 1: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

1

Organisations unidimentionnelles : indexage et

hachage Sélection basée sur une clé d'accès

recherche associative

Ex: Chercher le plant dont le noCatalogue = 10 Sériel

lire tout le fichier en pire cas

O(N)

Indexage O(log(N))

sélection par intervalle

Hachage ~O(1)

Page 2: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

2

Indexage

Index et clé d'index (index key) valeur de la clé =>adresse de(s) l'enregistrement

Num érode bloc

Num érod'enregistrem ent

relatif

0

1

0

1

2

3

4

5

6

7

8

9

10 Cèdre en boule 10.99

40

90

60

50

Epinette bleue

Pom m ier

Erable argenté

Chêne

25.99

25.99

15.99

22.99

26.99

12.99

10.99

15.99

Poirier

Sapin

Herbe à puce

Génév rier

80

20

70

95

25.99Catalpa81

10 0

20 8

40 1

50 4

60 3

70 7

80 9

81 5

90 2

95 6

Index

Index dense secondaire

Page 3: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

3

Fichier séquentiel indexé

Non dense

Index plus petit

Accès séquentiel rapide

Primaire

10 0

70 1

IndexNum érode bloc

Num érod'enregistrem ent

relatif

0

1

0

1

2

3

4

5

6

7

8

9

10 Cèdre en boule 10.99

20

40

50

60

Sapin

Epinette bleue

Chêne

Erable argenté

12.99

25.99

22.99

15.99

15.99

25.00

25.99

26.99

Génév rier

Pom m ier

Catalpa

Poirier

95

90

81

80

10.99Herbe à puce70

Page 4: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

4

Index séquentiel hiérarchique

Ex: ISAM de IBM Zone de débordement

Réorganisations chroniques

10 Cèdre en boule 10.99

20

40

50

Sapin

Epinette bleue

Chêne

12.99

25.99

22.99

60 Erable argenté 15.99

10.99Herbe à puce70

25.99

26.99

Catalpa

Poirier

81

80

15.99

25.00

Génév rier

Pom m ier

95

90

10

40

Niveau 2d'index

60

80

90

... ...

10

80

... ...

Niveau 1d'index

Page 5: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

5

Indexage par Arbre-B et variantes

Arbre-B (B-arbre, B-tree) forme d ’index hiérarchique

équilibré

O(log(N)) en pire cas

Réorganisation dynamique division/fusion des blocs

taux d ’occupation minimum de 50%

Page 6: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

6

Arbre-B+ Hypothèse initiale : clé simple et unique Nœud = bloc

10

Bloc 0

20

25 40 45

Bloc 2

25

Bloc 3

30 40

Bloc 1

43 44 60

Bloc 4

7050

Bloc 5

53

60

Bloc 6

50

Bloc 7

45 48

Bloc 8

Page 7: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

7

Structure d ’une feuille

1. Remplie à moitié au minimum FBMf/2 ≤ n = nombre de clés ≤ FBMf

2. Clés triées : i < j Ci < Cj

3. Clés d'une feuille < clés de la suivante

4. Au même niveau (équilibré)

Ci : Clé

Ri : reste de l'enregistrement ou référence

S : Pointeur sur le bloc suivant dans la liste des feuilles

C 1 R 1 ... C n R n SEspace

libre

Page 8: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

8

Structure d’un bloc interne

1. Rempli à moitié au minimum:

OrdreI /2 ≤ n = nombre de pointeurs ≤ OrdreI

2. Clés triées : i < j Ci < Cj

3. Ci-1 <= Clés sous Pi-1 < Ci P 1 C 1 ... P n-1 C n-1 P nP 2 ... C i-1 P i-1 C i

C i-1 <= C < C i

Espacelibre

C < C 1 C n-1 <= C

Page 9: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

9

Rechercher 43

10

Bloc 0

20

25 40 45

Bloc 2

25

Bloc 3

30 40

Bloc 1

43 44 60

Bloc 4

7050

Bloc 5

53

60

Bloc 6

50

Bloc 7

45 48

Bloc 8

Page 10: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

10

Complexité de la recherche et hauteur de l'arbre

FBMf = 20 et OrdreI = 200 Hauteur = nombre de niveaux Hauteur 2 N 2 * 10 = 20 clés (pire cas) Hauteur 3 N 2 * 100 * 10 = 2,000 clés Hauteur 4 N 2 * 100 * 100 * 10 =

200,000clés Hauteur 5 N 2 * 100 * 100 * 100 * 10 =

20,000,000 clés

Hauteur H N 2*OrdreI /2H-2 * FBMf/2 pour H 2

H 2 + log OrdreI /2 (N /(2*FBMf/2))

O(log N)

Page 11: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

11

Hauteur moyenne

H ~ 1 + log OrdreMoyenI (N / FBf) OrdreMoyenI = 2/3 OrdreI

FBf = 2/3 FBMf

Index secondaire FBf ~ OrdreMoyenI

H = logOrdreMoyenI (N)

Page 12: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

12

Insertion dans un arbre-B+

FBM = 3, OrdreI = 4

40 ...

B loc 0

20 ... 40 ...

B loc 0

20 ... 40 ... 60 ...

B loc 0

Page 13: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

13

Débordement et division Insertion de 30 Débordement et la division du bloc 0 40 est promue Nouvelle racine

20 ... 40 ... 60 ...

B loc 0

20 ... 30 ...

B loc 0

40 ... 60 ...

B loc 1

40

Bloc 2

Page 14: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

14

Insertion de 25

20 ... 30 ...

B loc 0

40 ... 60 ...

B loc 1

40

Bloc 2

40

Bloc 2

20

Bloc 0

25 30 40

Bloc 1

60

Page 15: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

15

Insertion de 10

40

Bloc 2

20

Bloc 0

25 30 40

Bloc 1

60

10

Bloc 0

20

25 40

Bloc 2

25

Bloc 3

30 40

Bloc 1

60

Débordement et la division du bloc 0 25 est promue

Page 16: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

16

Insertion de 70

10

Bloc 0

20

25 40

Bloc 2

25

Bloc 3

30 40

Bloc 1

60

10

Bloc 0

20

25 40

Bloc 2

25

Bloc 3

30 40

Bloc 1

60 70

Page 17: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

17

Insertion de 50

10

Bloc 0

20

25 40

Bloc 2

25

Bloc 3

30 40

Bloc 1

60 70

10

Bloc 0

20

25 40 60

Bloc 2

25

Bloc 3

30 40

Bloc 1

50 60

Bloc 4

70

Débordement et la division du bloc 1 60 est promue

Page 18: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

18

Insertion de 53

10

Bloc 0

20

25 40 60

Bloc 2

25

Bloc 3

30 40

Bloc 1

50 60

Bloc 4

70

10

Bloc 0

20

25 40 60

Bloc 2

25

Bloc 3

30 40

Bloc 1

50 53 60

Bloc 4

70

Page 19: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

19

Insertion de 45

10

Bloc 0

20

25 40 60

Bloc 2

25

Bloc 3

30 40

Bloc 1

50 53 60

Bloc 4

70

10

Bloc 0

20

25 40

Bloc 2

25

Bloc 3

30 40

Bloc 1

45 60

Bloc 4

7050

Bloc 5

53

60

Bloc 6

50

Bloc 7

Division du bloc 1 50 est promue Division de la racine

Page 20: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

20

Suppression dans un arbre-B+

Cas simple minimum préservé pas la première

10

Bloc 0

20

25 40

Bloc 2

25

Bloc 3

30 40

Bloc 1

60 70

10

Bloc 0

20

25 40

Bloc 2

25

Bloc 3

30 40

Bloc 1

60

Page 21: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

21

Première clé du bloc et pas la première feuille

Remplacer dans le parent (si pas « aîné »)

10

Bloc 0

20

25 40

Bloc 2

25

Bloc 3

30 40

Bloc 1

60 70

10

Bloc 0

20

25 60

Bloc 2

25

Bloc 3

30 60

Bloc 1

70

Page 22: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

22

Première clé du bloc et pas la première feuille

Remonter tant que l'enfant est l’« aîné »

10

Bloc 0

20

25 40 45

Bloc 2

25

Bloc 3

30 40

Bloc 1

43 44 60

Bloc 4

7050

Bloc 5

53 55

60

Bloc 6

50

Bloc 7

45 48

Bloc 8

10

Bloc 0

20

25 40 45

Bloc 2

25

Bloc 3

30 40

Bloc 1

43 44 60

Bloc 4

7053

Bloc 5

55

60

Bloc 6

53

Bloc 7

45 48

Bloc 8

Page 23: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

23

Violation du minimum : redistribution si possible

Ajuster séparateur40

Bloc 2

20

Bloc 0

25 30 40

Bloc 1

60

30

Bloc 2

20

Bloc 0

25 30

Bloc 1

60

Page 24: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

24

Violation du minimum : fusion

Fusion des deux frères

10

Bloc 0

20

25 60

Bloc 2

25

Bloc 3

30 60

Bloc 1

70

10

Bloc 0

25 30

60

Bloc 2

60

Bloc 1

70

Violation de larègle du minimum

Page 25: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

25

Cas de fusion de feuilles et de redistribution au niveau du

parent

10

Bloc 0

20

25 40

Bloc 2

25

Bloc 3

30 40

Bloc 1

45 60

Bloc 4

7050

Bloc 5

53

60

Bloc 6

50

Bloc 7

Violation de larègle du minimum

10

Bloc 0

20

25 40

Bloc 2

25

Bloc 3

30 40

Bloc 1

45 50

Bloc 5

60 70

60

Bloc 6

50

Bloc 7

Violation de larègle du minimum

Redistribution

Fusion des deux frères

Page 26: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

26

Cas de fusion de feuilles et de redistribution au niveau du parent (suite)

10

Bloc 0

20

25 40

Bloc 2

25

Bloc 3

30 40

Bloc 1

45 50

Bloc 5

60 70

60

Bloc 6

50

Bloc 7

Violation de larègle du minimum

Redistribution

10

Bloc 0

20

25

Bloc 2

25

Bloc 3

30 40

Bloc 1

45 50

Bloc 5

60 70

50

Bloc 6

40

Bloc 7

Page 27: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

27

Cas de fusion en cascade

Fusion des deux frères

10

Bloc 0

20

25

Bloc 2

25

Bloc 3

30 40

Bloc 1

45 50

Bloc 5

60 70

50

Bloc 6

40

Bloc 7

Violation de larègle du minimum

Fusion des deux frères

10

Bloc 0

25 30

25

Bloc 2

40

Bloc 1

45 50

Bloc 5

60 70

50

Bloc 6

40

Bloc 7Violation de la

règle du minimum

Page 28: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

28

Cas de fusion en cascade (suite) : réduction de la hauteur

Fusion des deux frères

10

Bloc 0

25 30

25

Bloc 2

40

Bloc 1

45 50

Bloc 5

60 70

50

Bloc 6

40

Bloc 7Violation de la

règle du minimum

10

Bloc 0

25 30

40 50

Bloc 2

40

Bloc 1

45 50

Bloc 5

60 70

Page 29: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

29

Arbre-B

40

25 60

30 50 53 7010 20

Bloc 0 Bloc 3 Bloc 1 Bloc 4

Bloc 2 Bloc 5

Bloc 6

10

Bloc 0

20

25 40 60

Bloc 2

25

Bloc 3

30 40

Bloc 1

50 53 60

Bloc 4

70

Arbre-B

Arbre-B+

Clés non dupliquées Ordre < Hauteur >

Page 30: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

30

Autres variantes du concept d'arbre-B

Redistribuer plutôt que diviser occupation moyenne 67% => 86%

Diviser deux en trois Arbre-B*

Ordre variable clés de taille variable

Arbre B préfixe comprimer les clés diminue la hauteur

Algorithme de chargement en lot feuilles consécutives taux de remplissage prédéterminé

Page 31: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

31

Cas d'une clé non unique

Arbre-B+ primaire sur une clé non unique IDE difficile

Arbre B+ secondaire avec clés répétées clé d ’accès + pointeur (unique)

Arbre B+ secondaire avec collection de références listes inversées dans les feuilles

Arbre B+ secondaire avec référence à une collection d'enregistrements Index groupant (“ clustering index ”)

organisation primaire par grappe et index secondaire sur même clé

Arbre B+ secondaire avec référence à collection de références listes inversées à part

Arbre B+ avec vecteurs booléens index « bitmap »

Page 32: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

32

Réalisation de l'accès par IDE à l'aide d'une organisation par

index Index primaire

IDE = id_fichier, valeur de la clé unique

nécessite le passage par l ’index IDE logique

index secondaire clé d ’index = IDE

Page 33: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

33

Sélection par intervalle ou préfixe

Arbre B+

recherche de la valeur minimale parcours des feuilles jusqu ’à la valeur maximale

...

...

...

...

.........

Feuilles à transférer

Page 34: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

34

Index sur une clé composée

Clé composée ~ clé simple formée de la concaténation des champs

Sélection par préfixe de la clé composée

Page 35: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

35

Arbre digital (trie)

Chaque niveau : position d'un symbole de la clé vue comme une séquence de symboles s1s2…sn

«ACB»

A B C

«A»

A C

«AA»

A B

«ACA»

«BA»

A

«C»

B

«BB»

Page 36: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

36

Hachage

Hachage ou adressage dispersé (hashing)

Fonction h(clé de hachage) => l'adresse d'un paquet

Fichier = tableau de paquets (bucket)

~ARRAY paquet [0..TH-1]

TH : taille de l'espace d'adressage primaire

Habituellement paquet = bloc

Pas d ’index à traverser : O(1) en meilleur cas

Sélection par égalité (pas intervalle)

Page 37: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

37

Hachage statique

60 Erable argenté 15.99

90 Pom m ier 25.99

81 Catalpa 25.99

70 Herbe à puce 10.99

40 Epinette bleue 25.99

10 Cèdre en boule 10.99

20 Sapin 12.99

50 Chêne 22.99

95 Génév rier 15.99

80 Poirier 26.99

0

1

2

clé = 10

h (10) = 10 M O D 3 = 1

Page 38: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

38

Problème de débordement dû aux collisions

Méthode de résolution des collisions Adressage ouvert

AC+1, AC+2,....., n-1, 0, 1, ....AC-1 Chaînage

60 Erable argenté 15.99

90 Pom m ier 25.99

81 Catalpa 25.99

70 Herbe à puce 10.99

40 Epinette bleue 25.99

10 Cèdre en boule 10.99

43 Magnolia 28.99

20 Sapin 12.99

50 Chêne 22.99

95 Génév rier 15.99

80 Poirier 26.99

0

1

2

52 Pin 18.99

Page 39: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

39

Fonction de hachage

Répartition uniforme des clés dans [0..TH-1] h(clé) = clé MOD TH

TH est premier h(clé) = clé p MOD TH

TH et p sont relativements premiers

h(clé) = (∑ si) MOD TH si est une sous-séquence des bits de la clé

Clé non numérique représentation binaire vue comme un entier

Page 40: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

40

Hachage vs indexage

O(1) en meilleur cas vs O(log(N)) Pas d ’espace supplémentaire d ’index Gaspillage d ’espace si TH trop > Performance dégradée si TH trop < Gestion plus délicate

déterminer h et TH maintenance : réorganisations

Clé non numérique ? représentation binaire vue comme un entier

Page 41: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

41

Calcul d ’espace

Heuristique : Taux d ’occupation moyen ~ 80% TauxOccupation = N/(TH FB) 0.8

Taux de débordement moyen sous distribution uniforme [Merrett, 1984 #217] : FB = 1 ~ 30% FB = 10 ~ 5% FB = 100 ~1%

Page 42: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

42

Fonction de hachage préservant la relation d'ordre

(tidy functions)

clé1 < clé2 h(clé1) < h(clé2)

Connaissances préalables au sujet de la distribution des clés

Page 43: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

43

Hachage dynamique

Adaptation de TH et h aux variations du volume des données

~ arbre-B division et fusion de paquets (blocs)

Deux variantes de base linéaire extensible

Page 44: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

44

Hachage linéaire

Adaptation de TH suite d ’expansions

Début de dième expansion, d {0, 1, …} TH passera de 2d à 2d+1

adresse du paquet : hd(clé) = bd-1, bd-2,…, b1, b0

101002 11101 2

00001 2

110102 011112

110112

002 012 102 112

p

d = 2

Page 45: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

45

Insertion de h(clé) = 101012

10100 2 11101 2

00001 2

11010 2 01111 2

11011 2

002 012 102 112

p

11101 2

00001 2

11010 2 01111 2

11011 2

0002 012 102 112

p

10101 2

10100 2

Zône primaire Zône d'expansion

1002

Division du b loc 00 2

Bloc #012 déborde Division du bloc p = #002 (pas #012)

p := p+1

FONCTION AdresseLinéaire (clé)DÉBUT

SI hd(clé) >= p Retourner hd(clé)SINON Retourner hd+1(clé) FINSI

FIN

Page 46: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

46

Insertion de h(clé) = 101112

111012

000012

110102 011112

110112

0002 012 102 112

p

101012

10100 2

1002

Bloc #112 déborde

00001 2 11010 2 01111 2

11011 2

000 2 001 2 10 2 11 2

p

10111 2

10100 2

Zône primaire Zône d'expansion

100 2

Division du bloc 01 2 (p = 01 2)

10101 2

11101 2

101 2

Page 47: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

47

Insertion de 110002, 110012 et 101102

000012 110102 011112

110112

0002 0012 102 112

p

101112

10100 2

1002

101012

111012

1012

11000 2 00001 2

11001 2

11010 2

10110 2

01111 2

11011 2

0002 0012 102 112

p

10111 2

10100 2

Zône primaire Zône d'expansion

1002

10101 2

11101 2

1012

Page 48: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

48

Insertion de 100102

11000 2 00001 2

11001 2

11010 2

10010 2

01111 2

11011 2

0002 0012 0102 112

p

10111 2

10100 2

Zône primaire Zône d'expansion

1002

Division du b loc 10 2 (p = 10 2)

10101 2

11101 2

1012

10110 2

1102

11000 2 00001 2

11001 2

11010 2

10110 2

01111 2

11011 2

000 2 0012 102 112

p

10111 2

10100 2

100 2

10101 2

11101 2

101 2

Bloc #102 déborde et est divisé

Page 49: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

49

Insertion de 011012

110002 000012

110012

110102

100102

011112

110112

0002 0012 0102 112

p

101112

10100 2

1002

101012

111012

1012

101102

1102

Bloc #1012 déborde zone d ’expansion !

Fin de l ’expansion p := 0 d := d+1 = 3

11000 2 00001 2

11001 2

11010 2

10010 2

11011 2

000 2 0012 010 2 0112

p

10100 2

Zone primaire

100 2

Division du b loc 11 2

10101 2

11101 2

101 2

10110 2

1102

01101 2

01111 2

10111 2

1112

d = 3

Page 50: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

50

Variantes du hachage linéaire

Variante du contrôle de la division algorithme de base

débordement => division : taux d ’occupation ~ 60% division/fusion contrôlée par taux d ’occupation

Variante de gestion des débordements hachage linéaire au niveau suivant

Variante de division biais dans les chaînages (à droite de p) expansions partielles

diviser n blocs en n+1 fonction de hachage exponentielle

Gestion de l ’espace d ’adressage primaire préserver la contiguité de l ’espace malgré expansions ?

Page 51: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

51

Hachage extensible

Ajoute un niveau d ’indirection Répertoire d'adresses de paquets

espace supplémentaire accès disque supplémentaire pour

répertoire antémémoire

Bloc qui déborde est divisé pas de dégradation due au chaînage pire cas : 2 transferts

Page 52: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

52

Analogie avec arbre digital

Répertoire vu comme arbre digital Chemin = suffixe

Pas de lien direct entre suffixe et #bloc

101002

110002

0 1

010102

011102

0 110001 2

11101 2

Bloc 0

B loc 1

B loc 2

Page 53: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

53

Insertion de h(clé) = 100112

Débordement et division du bloc #1 Utilisation d ’un bit de plus

101002

110002

0 1

010102

011102

0 110001 2

11101 2

Bloc 0

B loc 1

B loc 2

101002

110002

0 1

010102

011102

0 1

100012

111012

Bloc 0 B loc 1B loc 2

0 1

100112

Bloc 3

Page 54: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

54

«Remplacer» l'arbre digital par un répertoire

101002

110002

0 1

010102

011102

0 110001 2

11101 2

Bloc 0

B loc 1

B loc 2

101002

110002

0 1

010102

011102

0 1

100012

111012

Bloc 0 B loc 1B loc 2

0 1

« Compléter » l ’arbre

Page 55: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

55

Arbre digital => un répertoire

101002

110002

0 1

010102

011102

0 1

100012

111012

Bloc 0 B loc 1B loc 2

0 1

Bijection chemin <-> indice

101002

110002

Bloc 0

2100012

111012

Bloc 1

1010102

011102

Bloc 2

2

2

002 012 102 112

Profondeurglobale du

répertoire (d)

Profondeurlocale du

bloc

Sens de lecture des indices

Page 56: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

56

Insertion de h(clé) = 100112 avec répertoire

10100 2

11000 2

Bloc 0

210001 2

11101 2

Bloc 1

101010 2

01110 2

Bloc 2

2

2

002 012 102 112

Profondeurglobale du

répertoire (d)

Profondeurlocale du

bloc

101002

110002

Bloc 0

2100012

111012

Bloc 1

2010102

011102

Bloc 2

2

2

002 012 102 112

Profondeurglobale du

répertoire (d)

Profondeurlocale du

bloc100112

Bloc 3

2

Page 57: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

57

Cas de dédoublement de répertoire : insertion de h(clé) =

101102

10100 2

11000 2

Bloc 0

210001 2

11101 2

Bloc 1

101010 2

01110 2

Bloc 2

2

2

002 012 102 112

Profondeurglobale du

répertoire (d)

Profondeurlocale du

bloc101002

110002

0 1

010102

011102

0 110001 2

11101 2

Bloc 0

B loc 1

B loc 2

101002

110002

0 1

0 1100012

111012

Bloc 0

Bloc 1

010102 011102

101102

0 1

Bloc 2 Bloc 3

10100 2

11000 2

0 1

0 1

10001 2

11101 2

Bloc 0 B loc 1

01010 2 01110 2

10110 2

0 1

Bloc 2 B loc 3

0 10 1

0 1

0 1101002

110002

Bloc 0

2100012

111012

Bloc 1

1010102

Bloc 2

3

3

0002 0012 0102 0112 1002 1012 1102 1112

011102

101102

Bloc 3

3

Profondeur locale dépasse profondeur globale

Page 58: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

58

Hachage extensible (suite)

Occupation d ’espace comportement oscillatoire assez

prononcé entre .53 et .94 moyenne : ln 2 = .69

Variation contrôle de la division par taux

d ’occupation gestion des débordements

Page 59: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

59

Réalisation de l'accès par IDE avec le hachage

Hachage statique bloc d ’ancrage fixe IDE = idFichier, #blocAncrage,

#séquence HASH CLUSTER d ’Oracle

applicable dans le cas non unique Cas d ’une clé de hachage unique

IDE = id_fichier, valeur de la clé unique nécessaire avec hachage dynamique

Page 60: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

60

Hachage sur une clé non unique et effet de grappe

Regroupement des mêmes valeurs de clé v1 = v2 h(v1) = h(v2)

60 Erable argenté 15.99

90 Pom m ier 25.99

81 Catalpa 25.99

70 Herbe à puce 10.99

40 Epinette bleue 25.99

10 Cèdre en boule 10.99

43 Magnolia 28.99

20 Sapin 12.99

50 Chêne 22.99

95 Génév rier 15.99

80 Poirier 26.990

1

2

15

20

1

6

20

6

15

1

15

1

5

52 Pin 18.99 15

h (ta ille ) = ta ille M O D 3

ta ille

Page 61: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

61

Hachage secondaire

Hachage sur (clé de hachage, IDE)

Page 62: 1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le

62

Tableau comparatif des organisations

Critère Sériel Arbre-B+ primaire

Arbre-B+ secondaire

Hachage statique

Hachage dynamique

Sélection par égalité sur clé unique

O(N/ FB) Cas moyen : O(N/ FB/ 2)

O(log (N)) O(log (N)) Meilleur cas :O(1) Pire cas : O(N/ FB)

Meilleur cas :O(1) Pire cas : O(N/ FB)

Sélection par égalité sur clé non unique

O(N/ FB) O(log (Card(clé))+ Sel/ FB)

Approche par duplication O(log (N)+ Sel)

Meilleur cas : O(Sel/ FB) Pire cas : O(N/ FB)

Meilleur cas : O(Sel/ FB) Pire cas : O(N/ FB)

Sélection par intervalle O(N/ FB) O(log (Card(clé))+ Sel/ FB)

O(log (N)+ Sel)

O(N/ FB) O(N/ FB)

Itération sérielle O(N/ FB) O(N) O(N/ FB) O(N/ FB) Itération séquentielle O(tri) O(N/ FB) O(N) O(tri) O(tri) Insertion/ suppression O(1) O(log N) O(log N) Meilleur cas

:O(1) Pire cas : O(N/ FB)

Meilleur cas :O(1) Pire cas : O(N/ FB)

Taux d'occupation mémoire secondaire

Maximal approche 100%

En moyennne : 66% (2/ 3)

Ajouter à l'organisation primaire

~80% À ajuster Pire cas non borné

~69% (ln 2) Peut augmenter au prix d'une diminution de performance.

Autres considérations Support difficile de l'accès par IDE et donc des organisations secondaires

Peut y avoir plusieurs index secondaires sur la même table

Distribution des clés par fonction de hachage ? Problème avec tables volatiles Stress du DBA

Disponibilité restreinte