La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Gestion de Fichiers GF-15: Addressage Disperse (Hashcoding) (Base sur le Chapitre 11 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented.

Présentations similaires


Présentation au sujet: "Gestion de Fichiers GF-15: Addressage Disperse (Hashcoding) (Base sur le Chapitre 11 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented."— Transcription de la présentation:

1 Gestion de Fichiers GF-15: Addressage Disperse (Hashcoding) (Base sur le Chapitre 11 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented Approach with C++;)

2 2 Motivation La recherche sequentielle peut etre faite en temps dacces dordre O(N), ce qui veut dire que le nombre de seeks augmente au meme taux que la taille du fichier. Les arbres B diminuent ce taux puisquils permettent un temps dacces dordre O(Log k N) ou k est une mesure de la taille dune feuille (ce.a.d., le nombre denregistrements qui peuvent etre sauvegarder dans une feuille). Ce que lon voudrait, cependant, est un temps dacces dordre O(1) ce qui veut dire que quelque soit la taille du fichier le temps dacces a un enregistrement est toujours un petit nombre de seeks. Hashcoding Statique: Ces techniques peuvent atteindre une telle performance si la taille du fichier naugmente pas.

3 3 QuEst-ce que le Hashcoding? Une fonction Hash est une fonction h(K) qui peut transformer une cle K en une addresse. Hashcoding est relie a la construction dindexes qui correspond a associer une cle a une addresse relative denregistrement. Hashcoding, cependant, est different de la construction dindexes en deux respects: Avec le hashcoding, il ny a pas de connection evidente entre la cle et laddresse. Avec le hashcoding, deux cles differentes peuvent etre etre transformees en la meme addresse.

4 4 Collisions Lorsque deux cles differentes produisent la meme addresse, il y a une collision. Les cles impliquees dans cette collision sappellent des synonymes. Neanmoins, il est tres difficile de trouver une fonction hash qui evite les collisions. Il est plus simple de trouver des moyens de resoudre ces collisions. Solutions Possible: Espacer les enregistrements Utilisation de memoire supplementaire Placement de plus dun enregistrement a une addresse.

5 5 Un Algorithme de Hashcoding Simple Etape 1: Representer la cle en forme numerique. Etape 2: Plier et Ajouter (Fold and Add) Etape 3: Division par un nombre premier et utilisation du reste comme dune addresse.

6 6 Fonctions Hashcoding et Distribution dEnregistrements Les enregistrements peuvent etre distribues sur toutes les addresses de manieres differentes: Il peut y avoir (a) aucun synonymes (distribution uniforme); (b) que des synonymes (pire cas); (c) quelques synonymes (cela arrive avec des distributions au hasard). Les distributions uniformes pures sont difficiles a obtenir et ne valent pas la peine detre cherchees. Les distributions au hasard peut etre facilement derivees mais elles ne sont pas parfaites car elles peuvent generer un nombre important de synonymes. On veut des methodes de hashcoding meilleures que cela.

7 7 Dautres Methodes de Hashcoding Bien quil nexiste pas de fonction hashcoding qui garantisse des distributions meileures que les distributions au hasard dans tous les cas, si on considere le cles qui vont etre hachees, certaines ameliorations sont possibles. Voici quelques methodes qui sont potentiellement meilleures que les methodes au hasard: Examiner les cles pour trouver un patron Plier certaines parties de la cle Diviser la cle par un nombre Elever la cle au carre et prendre le milieu Faire une transformation radix.

8 8 Prediction de la Distribution des Enregistrements Lorsque lon utilise une distribution au hasard, on peut utiliser certains outils mathematiques pour obtenir des estimation conservatives de la facon dont notre fonction hash peut se comporter: En utilisant la Fonction Poisson p(x)=(r/N) x e –(r/N) /x! applique au hashcoding, on peut conclure que: En general, sil y a N addresses, le nombre attendu daddresses a x enregistrements affectes est de Np(x).

9 9 Prediction de Collisions pour un Fichier Plein Veuillez supposer que vous avez une fonction hash qui, theoretiquement, distribue les enregistrements au hasard, et que vous voulez mettre en storage 10,000 enregistrements dans 10,000 addresses. Combien daddresses ne devraient pas avoir denregistrements qui y soient affectes? Combien daddresses devraient avoir un, deux et trois enregistrements qui y soient affectes, respectivement? Comment peut-on reduire le nombre denregistrements qui debordent?

10 10 Augmentation dEspace Memoire I Une reduction de collisions peut etre atteinte en choisissant utilisant une bonne fonction hash ou en utilisant de la memoire additionelle. La question posee est la suivante: Quel montant de memoire additionnelle doit on utiliser pour obtenir un taux de reduction de collision donnee? Definition: la Densite dImplantation (Packing Density) correspond a la proportion de nombre denregistrements a sauvegarder (r) par rapport au nombre despaces disponibles (N). La densite dimplentation nous donne une mesure du montant despace de fichier vraiement utilise.

11 11 Augmentation dEspace Memoire II La distribution Poisson nous permet de predire le nombre de collisions qui peuvent se produire etant donne une certaine densite dimplantation. On utilise la distribution Poisson pour repondre aux questions suivantes: Combien daddresses ne devraient avoir aucun enregistrements qui y soient affectes? Combien daddresses ne devraient avoir quun enregistrement qui y soit affecte (pas de synonymes)? Combien daddresses devraient avoir un enregistrement plus un ou plusieurs synonymes? Si on suppose quun seul enregistrement peut etre affecte a chaque addresses, a combien denregistrements debordants peut-on sattendre? Quel pourcentage denregistrements sera un enregistrement debordant?

12 12 Resolution de Collision par Debordement Progressifs Que faire lorsque lon a des enregistrements qui nont pas de place a leur addresse? Une approche simple est la suivante: Debordement Progressif (ou Sondage Lineaire). Si une cle k1 est hachee a la meme addresse a1 quune autre cle k2, alors on cherche la premiere addresse disponible a2, suivant a1; et on place k1 en a2. Si on atteint la fin de lespace addresse avant de trouver une addresse disponible alors on retourne au debut de cet espace et on continue la recherche. Lorsque lon cherche une cle qui nest pas dans lespace, si lespace daddresse nest pas plein, alors une addresse vide sera atteinte tot ou tard; Sinon, la recherche retournera a son point de depart.

13 13 Longueur dun Recherche lorsque le Debordement Progressif est Utilise Le debordement progressif cause des recherches additionelles et, donc, des acces au disque additionels. Sil y a beaucoup de collisions, alors beaucoup denregistrements seront loin de leur addresse reelle. Definition: la Longueur de recherche correspond au nombre dacces requis pour recuperer un enregistrement de memoire secondaire. La longueur de recherche moyenne est le montant de temps moyen auquel on peut sattendre pour recuperer un enregistrement du disque. longueur de recherche moyenne = (longueur de recherche totale)/(nombre total denregistrements)

14 14 Storage de Plus dun Enregistrements par Addresse: Bucket Definition: Un bucket decrit un bloc denregistrements partageant la meme addresse et etant recuperes dans un meme acces au disque. Lorsquun enregistrement va etre mis en storage ou recupere de storage, son addresse de bucket est determinee par la fonction hash. Lorsquun bucket est remplit, on doit toujours resoudre le probleme de debordement denregistrements, mais ce probleme apparait beaucoup moins souvent que lorsque chaque addresse ne peut contenir quun seul enregistrement.

15 15 Effet des Buckets sur la Performance Afin de calculer la densite dimplantation dun fichier, on doit considerer: 1) Le nombre, N, daddresses (buckets) disponibles et 2) le nombre, b, denregistrements que lon peut mettre a chaque addresse (la taille des buckets) et 3) le nombre, r, denregistrements dans le fichier. Alors, densite dimplantation = r/bN. Bien que la densite dimplantation ne change pas lorsque lon reduit de moitie le nombre daddresses et que lon double la taille des buckets, le nombre de debordements attendu diminue dramatiquement.

16 16 Effacer des Enregistrements Leffacement dun enregistrement dun fichier hache est plus complique que laddition denregistrements pour deux raisons: Lespace dans lequel leffacement sest fait ne doit pas deranger les recherches futures. Il devrait etre possible de re-utiliser les espaces liberes dans des additions futures. Afin de traiter les effacements, on utilise des pierres tombales, ce.a.d., un signal indiquant quun enregistrement etait la auparavant mais ny est plus. Les pierres tombales resolvent les deux problemes causes par leffacement, simultanement. Linsertion denregistrements est un petit peu differente lorsque lon utilise des pierres tombales.

17 17 Effets des Effacements et des Additions sur la Performance Une fois quun large nombre deffacements et dadditions ont pris place, il y aura beaucoup de pierres tombales occuppant des emplacements qui pourraient etre occuppes par des enregistrements dont laddresse precede ces pierres tombales, mais qui sont mises en storages plus loin. Ceci deteriore la longueur de recherche moyenne. Il y a trois type de solutions qui permettent de resoudre ce probleme: a) reorganisation locale pendant les effacements; b) reorganisation globale lorsque la longueur de recherche moyenne est trop grande; c) lutilisation dun algorithme de resolution de collision different.

18 18 Autres Techniques de Resolution de Collision Il y a quelques variations sur le hashing au hasard qui peut ameliorer la performance: Double Hashing: lorsquun debordement se produit, utiliser une seconde fonction hash pour trouver la location de debordement de cet enregistrement. Debordement progressif chaine: Comme le debordement Progressif mis a part le fait que les synonymes sont lies lun a lautre avec des pointeurs. Enchainement avec une aire de debordement separee: Comme le debordement progressif chaine mis a part le fait que les addresses de debordement noccuppe pas les addresses normales (de non- debordement) Scatter Tables: Le fichier hash ne contient pas denregistrements, mais seulement des pointeurs a ces enregistrements. I.e., cest un index.

19 19 Patron dAcces aux Enregistrements Si on a des informations sur les enregistrements qui sont accedes le plus souvent, on peut optimiser leur location de facon a ce que ces enregistrements aient des longueurs de recherche courtes. En faisant cela, on essaie de diminuer la longueur effective moyenne de recherche meme si la longueur nominale moyenne de recherche reste la meme. Ce principe est relie a celui utilise dans lencodage Huffman.


Télécharger ppt "Gestion de Fichiers GF-15: Addressage Disperse (Hashcoding) (Base sur le Chapitre 11 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented."

Présentations similaires


Annonces Google