Structures de données avancées : LH*
-
Upload
cornell-boyle -
Category
Documents
-
view
37 -
download
1
description
Transcript of Structures de données avancées : LH*
![Page 1: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/1.jpg)
Pr ZEGOUR DJAMEL EDDINEEcole Supérieure d’Informatique (ESI)
www.zegour.uuuq.com email: [email protected]
![Page 2: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/2.jpg)
Présentation
Une SDDS basée sur Linear Hashing (LH)LH : proposé par Litwin 1978, (VLDB-78), décrit
dans plusieurs livres sur SGBDs.
LH* : Proposée par Litwin, Neimat, Schneider (ACM-Sigmod 1993)
Plusieurs variantes proposées depuis par d'autres chercheurs (voir ACM-Sigmod 1994, FODO 94...)
LH*
![Page 3: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/3.jpg)
LH*Rappel LH
•LH = algorithme de hachage extensible(Etendre l'espace d'adressage primaire pour éviter l'accumulation de débordements et la détérioration progressive de performances d'accès
•Le fichier est composé de cases de capacité b >> 1
•Hachage par division hi (c) = c mod 2i N
•Éclatement de cases en remplaçant hi avec h i+1 ; i = 0,1,..
•En moyenne, b/2 clés sont transférées vers une nouvelle case
![Page 4: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/4.jpg)
LH*Rappel LH
•Un éclatement a lieu quand une case déborde
•On n'éclate pas la case qui déborde, mais celle pointée par un pointer n.
•n évolue : 0 /0,1/ 0,1,..,2,3/ 0,1,..,7/ 0,..,2i N / 0..
•Ces principes évitent l'existence d'un index, caractéristique d'autres algorithmes de hachage extensible.
![Page 5: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/5.jpg)
351271524
h0 ; n = 0
N = 1b = 4
i = 0i = 0hh00 : c Mod 2 : c Mod 200
0
Au départ
LH*Rappel LH
![Page 6: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/6.jpg)
351271524
h1 ; n = 0
N = 1b = 4
i = 1i = 1hh11 : c Mod : c Mod 2211
0
Quand il y a éclatement c’est h1
LH*Rappel LH
![Page 7: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/7.jpg)
1224
h1 ; n = 0
N = 1b = 4i = 1i = 1hh11 : c Mod 2 : c Mod 211
0
35715
1
Résultat de l’éclatement
LH*Rappel LH
![Page 8: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/8.jpg)
32581224
N = 1b = 4i = 1i = 1hh11 : c Mod 2 : c Mod 211
0
211135715
1
hh11 hh11
Après quelques insertions
LH*Rappel LH
![Page 9: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/9.jpg)
321224
N = 1b = 4i = 1i = 1hh22 : c Mod : c Mod 2222
0
211135715
1
58
2
hh22 hh11 hh22
Quand il y a éclatement c’est h2
LH*Rappel LH
![Page 10: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/10.jpg)
321224
N = 1b = 4i = 1i = 1hh22 : c Mod 2 : c Mod 222
0
33211135715
1
58
2
hh22 hh11 hh22
Après quelques insertions
LH*Rappel LH
![Page 11: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/11.jpg)
321224
N = 1b = 4i = 1i = 1hh22 : c Mod 2 : c Mod 222
0
3321
1
58
2
hh22 hh22 hh22
1135715
3
hh22
Résultat de l’éclatement
LH*Rappel LH
![Page 12: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/12.jpg)
321224
N = 1b = 4i = 2i = 2hh22 : c Mod 2 : c Mod 222
0
3321
1
58
2
hh22 hh22 hh22
1135715
3
hh22
N remis à zéro et i passe à 2
LH*Rappel LH
![Page 13: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/13.jpg)
LH*Rappel LH
•Et ainsi de suiteOn introduit h3 puis h4 ...
•Le fichier peut s'étendre autant qu'il faut, sans jamais avoir beaucoup de débordements.
![Page 14: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/14.jpg)
LH*Rappel LH
Calcul d’adresse
a hi( c ) si a < P
a hi+1 ( c) Fsi
P étant la prochaine case à éclater
![Page 15: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/15.jpg)
LH*LH*
•Propriété de LH :•Une clé c est dans une case m adressée par une fonction hj ssi hj (c) = m ; • le niveau de m est soit j = i soit j = i + 1
•Idée pour LH* :•mettre chaque case sur un serveur diffèrent•Ajouter dans la case son niveau
•Niveau : moyen de vérifier que l’adresse d’une clé (obtenu par le client) est la bonne.
![Page 16: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/16.jpg)
j = 4
0
j = 4
1
j = 3
2
j = 3
7
j = 4
8
j = 4
9
n = 2 ; i = 3
n' = 0, i' = 0 n' = 3, i' = 2 Site coordinateur
Client Client
serveurs
LH*
Eclatement
![Page 17: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/17.jpg)
j = 4
0
j = 4
1
j = 3
2
j = 3
7
j = 4
8
j = 4
9
n = 2 ; i = 3
n' = 0, i' = 0 n' = 3, i' = 2 Site coordinateur
Client Client
serveurs
LH*
Eclatement
![Page 18: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/18.jpg)
j = 4
0
j = 4
1
j = 3
2
j = 3
7
j = 4
8
j = 4
9
n = 2 ; i = 3
n' = 0, i' = 0 n' = 3, i' = 2 Site coordinateur
Client Client
serveurs
LH*
Eclatement
![Page 19: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/19.jpg)
j = 4
0
j = 4
1
j = 3
2
j = 3
7
j = 4
8
j = 4
9
n = 2 ; i = 3
n' = 0, i' = 0 n' = 3, i' = 2 Site coordinateur
Client Client
serveurs
LH*
Eclatement
![Page 20: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/20.jpg)
j = 4
0
j = 4
1
j = 4
2
j = 3
7
j = 4
8
j = 4
9
n = 3 ; i = 3
n' = 0, i' = 0 n' = 3, i' = 2 Site coordinateur
Client Client
serveurs
j = 4
10
LH*
Eclatement
![Page 21: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/21.jpg)
LH*Rôle d’un Site coordinateur
•Détermine quelle case doit être éclaté et quand.
•Problème• Peut tomber en panne• Chaque collision coûte un message et un éclatement coûte 2 messages au SC.
•Solution : utilisation d’un jeton (pour désigner la prochaine case à éclater
![Page 22: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/22.jpg)
LH*Utilisation d’un jeton ( Soit d la charge d’une case et b sa capacité ( d > b; cas de plusieurs cases en débordement)
•Se déplace comme n ( pointeur d ’éclatement)
•Quand il y a insertion dans une case qui détient le jeton, celle-ci est éclatée si d > b, puis le jeton passe à la case suivante
•Toute case qui reçoit le jeton pour la première fois s’éclate si sa charge d est supérieure à b
• Éclatement en cascade.
![Page 23: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/23.jpg)
LH*Adressage
•Le client Calcule l'adresse LH de la clé c dans son image, soit m, et Envoie c au serveur m
•Serveur a recevant la clé c ( a = m ) calcule :
a' := hj (c) si a' = a alors accepte c sinon
a'' := hj - 1 (c) si a < a'' < a' alors a' :=
a'' envoies c à la case a'
![Page 24: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/24.jpg)
LH*Proposition
L’algorithme appliqué au serveur trouve l’adresse de toute clé C envoyée par un client, et C est renvoyée au plus deux fois
La démo existe.
![Page 25: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/25.jpg)
LH*Ajustement de l’image client •Le message IAM consiste à ajuster l’image du client en fonction
du niveau j du serveur trouvé (directement ou après renvoi) et du serveur a adressé la première fois.
•Soit i' et n’ les paramètres du client
i' := j - 1n' := a +1 si n’ ≥ 2i‘ alors n' = 0, i' :=
i' +1
![Page 26: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/26.jpg)
j = 4
0
j = 4
1
j = 4
2
j = 3
7
j = 4
8
j = 4
9
n = 3 ; i = 3
n' = 0, i' = 0 n' = 3, i' = 2 Site coordinateur
Client Client
Serveurs
j = 4
10
15
LH*
Adressage
![Page 27: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/27.jpg)
j = 4
0
j = 4
1
j = 4
2
j = 3
7
j = 4
8
j = 4
9
n = 3 ; i = 3
n' = 0, i' = 0 n' = 3, i' = 2 Site coordinateur
Client Client
Serveurs
j = 4
10
15
LH*
Adressage
![Page 28: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/28.jpg)
j = 4
0
j = 4
1
j = 4
2
j = 3
7
j = 4
8
j = 4
9
n = 3 ; i = 3
n' = 1, i' = 2 n' = 3, i' = 2 Site coordinateur
Client Client
Serveurs
j = 4
10
15
a =0, j = 3
LH*
Adressage
![Page 29: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/29.jpg)
j = 4
0
j = 4
1
j = 4
2
j = 3
7
j = 4
8
j = 4
9
n = 3 ; i = 3
n' = 0, i' = 0 n' = 3, i' = 2 Site coordinateur
Client Client
serveurs
j = 4
10
9
LH*
Adressage
![Page 30: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/30.jpg)
j = 4
0
j = 4
1
j = 4
2
j = 3
7
j = 4
8
j = 4
9
n = 3 ; i = 3
n' = 0, i' = 0 n' = 3, i' = 2 Site coordinateur
Client Client
serveurs
j = 4
10
9
LH*
Adressage
![Page 31: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/31.jpg)
j = 4
0
j = 4
1
j = 4
2
j = 3
7
j = 4
8
j = 4
9
n = 3 ; i = 3
n' = 0, i' = 0 n' = 3, i' = 2 Site coordinateur
Client Client
serveurs
j = 4
10
9
LH*
Adressage
![Page 32: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/32.jpg)
j = 4
0
j = 4
1
j = 4
2
j = 3
7
j = 4
8
j = 4
9
n = 3 ; i = 3
n' = 1, i' = 3 n' = 3, i' = 2 Site coordinateur
Client Client
serveurs
j = 4
10
9
a = 0, j = 4
LH*
Adressage
![Page 33: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/33.jpg)
LH* Requête parallèle
• Opération envoyée par un client qui s’exécute en parallèle sur une partie du fichier ( ou tout le fichier)
(Exemple : recherche d’un ensemble d’éléments)
• 2 solutions•Utilisation des messages Broadcast / Multicast•Utilisation des messages Point à point.
![Page 34: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/34.jpg)
LH* Requête parallèle
Solution Brodacast / Multicast
• La requête Q est envoyée à tous les serveurs LH*
• Seuls les serveurs concernés retournent des réponses au client
• Le client collecte toutes les réponses pour construire la réponse globale de Q.
![Page 35: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/35.jpg)
LH* Requête parallèle
Solution Brodacast / Multicast
2 stratégies de terminaison:
• Probabilistique : Un time-out est initialisé après réception de chaque article.
• Déterministique : Chaque serveur répond avec son numéro ( case a) et son niveau ja
Le client termine quand il reçoit dans un ordre quelconque
a = 0, 1, 2, …, (2i + n - 1)Avec i = Min(ja) et
n = Min(a) tel que ja = i.
![Page 36: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/36.jpg)
LH* Requête parallèle
Solution Point à point
1. Le client envoie la requête Q à tous les serveurs a de son image. Pour chaque serveur a, il envoie aussi le niveau j’ de ce serveur selon l’image du client : j’ := i’ + 1 si a < n’ ( ou a ≥ 2i’) // j’ := i’ sinon
2. Chaque serveur qui reçoit Q, envoie le message vers les autres serveurs par propagation
3. Seuls les serveurs concernés retournent des réponses
4. Le client collecte toutes les réponses pour construire la réponse globale de Q.
5. Même stratégies de terminaison
![Page 37: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/37.jpg)
LH* Requête parallèle
Solution Point à point
Algorithme de propagation (appliqué au niveau de chaque serveur a de niveau j) :
Tq j’ < jj’ j’ + 1Envoyer (Q, j’) au serveur a
+ 2j’-1
FTq
![Page 38: Structures de données avancées : LH*](https://reader036.fdocument.pub/reader036/viewer/2022062502/5681328d550346895d992512/html5/thumbnails/38.jpg)
LH*Résultats
On peut construire un fichier distribué grandissant à une taille quelconque et tel que :
Toute insertion et toute recherche peuvent être faites au plus en 4 messages (IAM inclus)
en général une recherche est faite en un message et une insertion en deux messages