Gestion de Fichiers Hachage (suite et fin). 2 Plan du cours d’aujourd’hui Utilisation des “buckets” Effacements dans des fichiers hachés Autres méthodes.

Slides:



Advertisements
Présentations similaires
Structures de données avancées : MLH (Multidimensional linear hashing)
Advertisements

Module Systèmes d’exploitation
Module Systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
Structures de données avancées : Principales structures de données
GEF 435 Principes des systèmes dexploitation Structure du logiciel dE/S Partie II (Tanenbaum & 5.3.4)
Chap. 4 Recherche en Table
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
Le publipostage La fonction de fusion permet de créer des documents identiques dans les grandes lignes que l’on personnalise automatiquement à chaque destinataires.
Mémoire & Processus Cours SE - SRC
12 novembre 2012 Grégory Petit
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Créer une animation simple Gif avec ImageReady.
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Gestion de Fichiers GF-15: Addressage Disperse (Hashcoding) (Base sur le Chapitre 11 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented.
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Gestion de Fichiers Arbres B.
Sections sélectionnées du Chapitre 11
Les fichiers indexés (Les B-arbres)
Algorithme de Bellman-Ford
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-10541
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Stockage Secondaire: Disques
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Gestion de Fichiers Hachage Extensible.
Gestion de Fichiers Hachage.
Gestion de Fichiers Hachage (suite). 2 Plan du cours daujourdhui Prédiction de la distribution des enregistrements Réduction des collisions en augmentant.
Organisation des Fichiers pour la Performance
Plan cours La notion de pointeur et d’adresse mémoire.
Gestion de Fichiers GF-3: Structures d’Enregistrements, Acces Sequentiel et Direct, Manipulation de classes en C++ (Base sur des segments des Chapitres.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Gestion de Fichiers GF-16: Addressage Disperse Extensible (Extendible Hashcoding) (Base sur le Chapitre 12 de Folk, Zoellick & Riccardi, File Structures,
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Cours de Systèmes d’exploitations
Programmation linéaire en nombres entiers
Gestion de Fichiers GF-8: Organisation des Fichiers pour l’Amelioration de la Performance (Base sur la section de Folk, Zoellick & Riccardi, File.
Tutorat en bio-informatique
Structures de données avancées : Fichiers uni-dimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
GF-11: Tri Interne Efficace et Tri Externe
Structures de données avancées : Concepts du Multidimensionnel D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
Cours LCS N°4 Présenté par Mr: LALLALI
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
Recherche de motifs par projections aléatoires
Structures de données avancées : B arbres
Système de gestion fichiers
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : LH* D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Arbres B+ avec expansion partielle D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : MLH (Multidimensional linear hashing) D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Principales structures de données
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Matière Sélectionnée: Triage Externe, Join à Hachage, … Chapitres 13—15: 13.1—13.5, 14.4,
Structures de données avancées : Hachage dynamique
Gestion de Fichiers Construction d’Indexes. 2 Plan du cours de la semaine Vue Générale Un indexe pour les fichiers à entrées séquentielles Opérations.
Structures de données avancées : MTH ( Multidimensional trie hashing ) D. E ZEGOUR Institut National d ’Informatique.
La pile de crêpes.
Chapitre 4 La représentation des nombres.
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
CSI2510 Structures des Données et Algorithmes
Raison d'être de la structure de fichiers : Les premiers travaux : Début des années 1960 : En 1963 : Près de 10 ans plus tard... (à peu près 1973) : Durant.
Ali walid A-2002 Plan: Fichier d’organisation séquentielle indexée (index statique)... 1 – Introduction 2 - La technique de l’accès indexé : 2 – 1 - Les.
Chapitre 5 Configuration et gestion des systèmes de fichiers Module S41.
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Transcription de la présentation:

Gestion de Fichiers Hachage (suite et fin)

2 Plan du cours d’aujourd’hui Utilisation des “buckets” Effacements dans des fichiers hachés Autres méthodes de résolution de collision: “double hashing”, débordement progressif chainé; enchainement avec une aire de débordement séparée; “scatter tables” Patrons d’accès aux enregistrements

3 Stockage de plus d’un enregistrements par adresse: “bucket” Nous allons maintenant voir une éthode de hachage qui stocke plus d’un enregistrement par adresse physique. Un “bucket” est un bloc d’enregistrements partageant la même adresse h(k); il est recupéré dans un même accès au disque. Lorsqu’un enregistrement va être mis en stockage ou recupéré du stockage, son adresse de bucket est déterminée par la fonction de hachage. Lorsqu’un bucket est remplit, on doit toujours résoudre le problème de débordement d’enreg.s.

4 Stockage de plus d’un enregistrements par adresse: “bucket” Exemple pour un bucket de 3 enregistrements Clé Adresse Green |Green …|Hall … | | Hall | | | | Jenks32 32 |Jenks … | | | King33 33 |King … |Land …|Marx …| Land33 34 |Nutt …. | | | Marx33 Nutt33

5 Effet des buckets sur la performance La formule de calcul de la densité d’enregistrement d’un fichier change un peu: PD = r/(b*N) N = # d’adresses disponibles r = # d’enreg.s dans le fichier b = # d’enreg.s par adresse Bien que PD ne change pas lorsque l’on réduit de moitié le nombre d’adresses et que l’on double la taille des buckets, le nombre de débordements attendu diminue dramatiquement.

6 Effet des buckets sur la performance Pour illustrer l’effet des buckets sur la performance, Considerons le deux alternatives suivantes: 1. Stocket 750 enreg.s dans un fichier haché de 1000 adresses, chacune contenant un enregistrement. 2. Stocket 750 enreg.s dans un fichier haché de 500 adresses, chacune contenant 2 enregistrements. Alternative 1: PD = r/(b*N) = 750/(1*1000) = 0.75 = 75% Alternative 2: PD = r/(b*N) = 750/(2*500) = 0.75 = 75% Alternative 1: r/N = 750/1000 = 0.75 Alternative 2: r/N = 750/500 = 1.50

7 Effet des buckets sur la performance L’estimation des probabilités de collision se fait comme avant: p(0) (p1) p(2) p(3) p(4) p(5) … Alt. 1: r/N = 0.75: Alt. 2: r/N = Pourcentage de collision pour différentes taille de buckets: Alt. 1: (r/N = 0.75): # de débordements = r – N * (1 – p(0)) (Voir dernier cours) = 750 – 1000 * (1 – 0.472) = 750 – 528 = 222  29.6% de déb.s Alt. 2: (r/N = 1.50): # de débordements = 1 * [1*p(3) + 2*p(4) + 3.p(5)+ …)] = r – N*p(1) – 2*N*[p(2) + p(3) + p(4) + …] = r – N * [p(1) + 2*[1 – p(0) – p(1)]] = r – N * [2 – 2* p(0) – p(1)] = 750 – 500 * (2 – 2 * – 0.335) =  18.7% de déb.s

8 Effet des buckets sur la performance Avec l’estimation des probabilités des collisions en main, on peut faire une estimation du pourcentage de collision pour différentes tailles de buckets (Voir table 11.4): Pourcentage par taille des buckets PD (%) …

9 Implémentation des buckets La structure des buckets: maintenir un compteur d’enreg.s stockés dans le bucket, et marquer les entrées vides par une suite de symbole spéciaux (p.ex. “//////// …/”); un exemple de bucket est: |2|JONES |BRICE |//////// |////////| Initialiser le fichier avant le hachage: 1. Fixer la taille logique (= # d’adresses disponible) du fichier ainsi que le # de buckets par adresses. 2. Créer a fichier de buckets vides devant contenir des enregistrements à venir dont les buckets ont la forme suivante: |0|////////|////////|////////|////////| Pour charger un fichier haché, faire attention à revenir au début du fichier lors de la recherche d’espace vide ainsi qu’au problème de boucle infini lorsque le fichier est plein.

10 Effacer des enregistrements L’effacement d’un enregistrement d’un fichier haché est plus compliqué que l’addition d’enreg.s pour 2 raisons: L’espace dans lequel l’effacement s’est fait ne doit pas deranger les recherches futures. Il devrait être possible de re-utiliser les espaces liberes dans des additions futures. Pour illustrer le type de dérangements qui apparaissent dans ce contexte, nous utilisons le débordement progressif. Ici un enreg. effacé peut interrompre de manière invalide la recherche pour un autre enreg. qui se trouverait dans le fichier après l’emplacement de l’enreg. effacé (Fig. 11.9). La solution à ce problème consiste à utilser des pierre tombales (“tombstones”).

11 Effacer des enregistrements Une pierre tombale est un marqueur indiquant qu’un enregistrement était à un emplacement donnée auparavant mais n’y est plus. Les pierres tombales résolvent les 2 problèmes causés par l’effacement: L’espace dans lequel l’effacement s’est fait n’interrompt plus les recherches futures. Il est possible de re-utiliser les espaces libérés pour des additions futures. N’inserez une pierre tombale que si le prochain enreg. Est occupé ou est une pierre tombale, car sinon on re- introduit les problème que l’on vient juste de résoudre. L’insertion d’enregistrements est un petit peu différente lorsque l’on utilise des pierres tombales: inserez un nouvel enreg. lorsque vous rencontrez soit un espace vide ou une piere tombale.

12 Effets des effacements et des additions sur la performance Une fois qu’un large nombre d’effacements et d’additions ont pris place, il y aura beaucoup de pierres tombales occuppant des emplacements qui pourraient être occuppés par des enregistrements dont l’adresse précède ces pierres tombales, mais qui sont mises en stockages plus loin. Ceci détériore la longueur de recherche moyenne. Il y a 3 solutions possibles à ce problème: 1. réorganisation locale pendant les effacements 2. réorganisation globale lorsque la longueur de recherche moyenne est trop grande 3. utilisation d’une diff. techn. de résolution de collision

13 Autres techniques de résolution de collisions: double hachage Il y a quelques variations sur le hashing au hasard qui peut ameliorer la performance. Double Hashing: lorsqu’un débordement se produit, utiliser une séconde fonction de hachage pour trouver la location de débordement de l’ enregistrement débordant. Exemple: k ADAMS JONES MORRIS SMITH h1(k) h2(k) adresse … … enreg.s ADAMS JONES SMITH MORRIS Note: h2(k) et N (= # d’adresses disponibles) sont relativement premiers l’un à l’autre; l’adresse définitive est obtenu en prenant h1(k)+h2(k). On ajoute autant de fois h2(k) à h1(k) que nécessaire jusqu’à ce qu’on trouve un espace libre.

14 Autres techniques de résolution: débordement progressif chainé Le débordement progressif chainé est comme le débordement progressif mis à part le fait que les synonymes sont liés l’un à l’autre avec des pointeurs (Fig ). Cela réduit la longueur de la recherche dans un regroupement d’enreg.s. Problème: Supposez que DEAN a en fait 22 comme adresse et que COLE est déjà à sa place. Nous ne pourrions plus avoir un pointeur de vers DEAN à partir de son adresse domiciliaire. Solution: “two pass loading”: 1. Premier passage: charger seulement les enreg.s qui entrent dans leur adresse domiciliaire. 2. Deuxième passage: charger les enreg.s débordants.

15 Autres techniques de résolution de collisions Enchainement avec une aire de debordement separée: Comme le débordement progressif chainé mis a part le fait que les adresses de debordement n’occuppe pas les adresses normales (de non- débordement) Scatter Tables: Le fichier hash ne contient pas d’enregistrements, mais seulement des pointeurs à ces enregistrements. Autrement dit, c’est un un index. Voir les figures appropriées dans le livre.

16 Patron d’accès aux enregistrements Si on a des informations sur les enregistrements qui sont accédés le plus souvent, on peut optimiser leur location de facon à ce que ces enregistrements aient des longueurs de recherche courtes. On fait cela pour diminuer la longueur effective moyenne de recherche même si la longueur nominale moyenne de recherche reste la même. Ce principe est similaire à celui utilisé dans l’encodage Huffman.