D. E ZEGOUR Institut National d ’Informatique

Slides:



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

Module Systèmes d’exploitation
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : B arbres
Structures de données avancées : Principales structures de données
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Structures de données avancées : MBT ( Multidimensional B-trees )
Structures de données avancées : MTH ( Multidimensional trie hashing )
Structures de données avancées : Introduction
Chap. 4 Recherche en Table
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
Distributed Compact Trie Hashing Proposé par D.E ZEGOUR.
IH* – Hachage Multidimensionnel Distribué et Scalable
Witold Litwin Structures physiques Witold Litwin
Chap. 1 Structures séquentielles : listes linéaires
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
PBST*: une nouvelle variante des SDDS
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Les structures de données arborescentes
Arbre binaire de recherche
Hachage et Indexation 1. Concepts de base 2. Organisations par hachage
II. Chaînage, SDD séquentielles
Arbre Rouge Noir.
Bases de données lexicales
Gestion de Fichiers Arbres B.
Les fichiers indexés (Les B-arbres)
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
LES ARBRES IUP 2 Génie Informatique
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Structures de données IFT-10541
8 Organisations unidimentionnelles : indexage et hachage
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Gestion de Fichiers Hachage Extensible.

Index multi-niveaux dynamiques (les B-arbres et les B-arbres+)

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

Structures de données avancées : Hachage dynamique
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Concepts réseaux et protocole de communication. D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Fichiers distribués
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Arbres binaires et tables de hachage
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
D. E ZEGOUR Institut National d ’Informatique
Structures de données avancées : Fichiers uni-dimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : MBT ( Multidimensional B-trees )
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
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : B arbres
Structures de données avancées : Variantes des B arbres
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Structures de données avancées : Range Partionning: RP*
Structures de données avancées TH ( Hachage digital ) D. E ZEGOUR Institut National d ’Informatique.
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 : Introduction D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Principales structures de données
Structures de données avancées : Hachage dynamique
Structures de données avancées : MTH ( Multidimensional trie hashing ) D. E ZEGOUR Institut National d ’Informatique.
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
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.
. Le B-Arbre.
Structures de données avancées : Distributed Compact Trie Hashing : CTH* Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Transcription de la présentation:

D. E ZEGOUR Institut National d ’Informatique Structures de données avancées : distributed Compact Trie Hashing : CTH* D. E ZEGOUR Institut National d ’Informatique

Trie hashing (TH) Le hachage digital (81) est l'une des méthodes les plus rapides pour l'accès au fichiers monoclé, ordonnés et dynamiques. La technique utilise une fonction de hachage variable représentée par un arbre digital qui pousse et se rétracte en fonction des insertions et suppressions. Caractéristiques principales : l'arbre réside en mémoire pendant l'exploitation du fichier. 6 Octets / case Un accès au plus pour retrouver un article

Compact trie hashing (CTH) Plusieurs manières de représenter la fonction d'accès en mémoire.  Objectifs : doubler les fichiers adressés pour le même espace mémoire utilisé par la représentation standard. L'idée : représenter les liens de manière implicite au détriment d'algorithmes de maintenance légèrement plus long. Consommation : 3 octets par case du fichier.  Ce qui permet d'adresser des millions d'articles avec très peu d’espace mémoire. Intéressante pour un environnement distribué.

CTH* Distribution de CTH relativement aux propriétés des Sdds : Distribution des cases du fichier sur les serveurs( à raison d'un serveur par case) Pas de site maître Aucun dialogue entre les clients. Scalabilité

Plan à suivre Compact trie hashing Distribution de la méthode sur plusieurs sites. Illustration de la méthode Algorithmes de recherche et insertion Requête à intervalle Variantes Résultats et Conclusion

Compact trie hashing Mécanisme de construction 1.   a ce dx ef sont insérées dans la case 0. L'arbre : | 0 Collision sur case 0 Clé maximale =‘||…’ a ce dx ef h Séquence de division : d K = 1 ; I = 0 a ce dx ef Capacité de la case = 4

Compact trie hashing Mécanisme de construction 2.   Après insertion de h L'arbre : d 0 | 1 a ce dx ef h 1

Compact trie hashing Mécanisme de construction kx 3.   Insertion de x y L'arbre : d 0 | 1 Collision sur case 1 Clé maximale =‘||…’ ef h kx x y Séquence de division = ‘k’ K = 1 ; I = 0 a ce dx ef h x y 1

Compact trie hashing Mécanisme de construction 4.   Après insertion de kx L'arbre : d 0 k 1 | 2 a ce dx ef h kx x y 1 2

Compact trie hashing Mécanisme de construction hx 5.   Insertion de fe L'arbre : d 0 k 1 | 2 Collision sur case 1 Clé maximale = ‘k|…’ ef fe h hx k Séquence de division = ‘h’ K = 1 ; I = 0 a ce dx ef fe h kx x y 1 2

Compact trie hashing Mécanisme de construction 6.   Après insertion de hx L'arbre : d 0 h 1 k 3 | 2 a ce dx ef fe h hx x y kx 1 2 3

Compact trie hashing Mécanisme de construction hy 7.   Insertion de hy L'arbre : d 0 h 1 k 3 | 2 Collision sur case 1 Clé maximale =‘h|…’ ef fe h hx hy Séquence de division = ‘h_’ K = 2 ; I = 1 a ce dx ef fe h hx x y kx 1 2 3

Compact trie hashing Mécanisme de construction 8.   Après insertion de hy L'arbre : d 0 h _ 1 4 k 3 | 2 a ce dx ef fe h x y kx hx hy 1 2 3 4

Compact trie hashing Mécanisme de construction yyc 9.   Insertion de yya yyb L'arbre : d 0 h _ 1 4 k 3 | 2 Collision sur case 2 Clé maximale =‘||…’ x y yya yyb yyc Séquence de division = ‘yya’ K = 3 ; I = 0 a ce dx ef fe h x y yya yyb kx hx hy 1 2 3 4

Compact trie hashing Mécanisme de construction 9.   Après insertion de yyc L'arbre : d 0 h _ 1 4 k 3 y y a 2 5 Nil | Nil a ce dx ef fe h x y yya kx hx hy yyb yyc 1 2 3 4 5

Compact trie hashing Mécanisme de construction ARBRE : d 0 h _ 1 4 k 3 y y a 2 5 Nil | Nil La concaténation des digits sur une branche de l'arbre représente la clé maximale de la case figurant dans la feuille forme préordre Suite de nœuds internes et externe k d h | y _ 4 y 3 Nil Nil 1 5 a Représentation graphique 2

Compact trie hashing Expansion de l’arbre Soit m la case à éclater. Cm sa clé maximale ( Cm=d1d2…) Former la séquence ordonnée des clés de cette case augmentée de la clé qui a provoqué la collision. Soit C' la clé du milieu et C'' la dernière. Déterminer la plus petite séquence Seq de digits dans C' qui permet de distinguer C' de C''. Soit C'1C'2.....C'K cette séquence. Soit I les premiers digits de cette séquence qui existent déjà dans l'arbre.

Compact trie hashing Expansion de l’arbre   Soit Ind_d : l'indice dans l’arbre du digit en fond de pile (premier digit (c’est d1)de la clé maximale cm de la case surchargée) Ind_m : l'indice de la case surchargée Si I <> 0 Si Cm préfixe de Seq Ind_d := Ind_m Sinon Ind_d := l'indice du premier digit différent entre Cm et Seq Fsi

Compact trie hashing Expansion de l’arbre Cas k- I = 1 Remplacer m par M insérer à la position Ind_d C'k m   Cas k- I > 1 Remplacer m par Nil Insérer à la position Ind_d C'i+1 C'i+2 .....C'k m M Nil1 Nil2 ...Nilk-i-2 Dans le premier cas deux nœuds sont rajoutés, dans le second cas 2( K - I) nœuds. M étant la prochaine case à allouer au fichier.

Compact trie hashing Expansion de l’arbre Exemple Arbre : b p 0 8 d 2 …. Collision sur 0 Cm = ‘bp’ Supposons Seq = ‘bn’ Cm n’est pas un préfixe de Seq  ind_d = 2 Remplacer 0 par 22 ( prochaine case) Insérer à la position 2 : n 0 Ce qui donne b n 0 p 22 8 d 2 …

Compact trie hashing Recherche L'algorithme de recherche parcourt la forme linéaire de l'arbre et utilise une pile. Arbre[ I ] désigne la case recherchée. I désigne l'indice de la case dans l'arbre ( P ) désigne le contenu de la pile en commençant par le fond si la pile n'est pas vide, ‘:' sinon. ( P ) désigne la clé maximale de la case trouvée.

Compact trie hashing Recherche Init( P ) ; I := 1; Trouv := Faux Tq Non Trouv : Si Interne(Arbre[ I ]) Empiler(P, ( Arbre[ I ], I ) ) I := I + 1 Sinon Si C <= ( P ) Trouv := Vrai Depiler(P, (V, J) ) Fsi Ftq

Compact trie hashing Propriété et Performances Les cases sont ordonnées de gauche à droite Algorithmes en mémoire : Recherche : N/2 en moyenne Insertion : N/2 décalages en moyenne Encombrement : 3 octets / case en moyenne. algorithmes sur disque : 1 accès au plus pour retrouver un article

Compact Trie Hashing Modification Le problème Au moment de l’insertion on peut être amener à remplacer Nil par une case contenant une seule clé  chuter le facteur de chargement Dans un environnement distribué créer tout un serveur avec une seule donnée !!! Solution Retarder le remplacement des Nils par des cases en insérant les clés dans la case non Nil la plus proche à droite. Les algorithmes de recherche et insertion sont modifiés en conséquence

Compact Trie Hashing Modification Recherche Ne retourne jamais Nil Éclatement ( première manière) Lorsque une case m déborde, trouver le nœud externe précédent,soit M. Si M est Nil et il existe des clés C telle que C  Clé max(M) alors remplacer Nil par une nouvelle case et déplacer ces clés C dans cette case. Si M est non Nil, faire un éclatement normal

Compact Trie Hashing Modification Éclatement ( deuxième manière) 1. Éclater m normalement 2. Si la séquence de division correspond à la clé max d’un nœud Nil, a) ce dernier est remplacé par la case éclatée m. La nouvelle case créée,soit N remplace m et les clés de m > à la séquence de division seront transférées dans N. b) laisser le Nil

Compact Trie Hashing Comparaison Éclatement ( première manière) Taux de nœuds Nil légèrement supérieur à celui de la version de base. Éclatement ( deuxième manière) Taux de nœuds Nil plus important car le cas ou la séquence de division correspond à un nœud Nil est rare. Taille de l’arbre augmente  Intéressante dans un environnement distribué. Cas 2b) garder un nœud Nil en plus et éviter de faire un accès au serveur père pour voir s’il y a un nœud Nil qui le précède.

Compact Trie Hashing Comparaison

Compact Trie Hashing Comparaison 100 000 clés aléatoires Capacité  4 10 50 100 200 Variante1 0,75 0,40 0,53 0,91 0,73 Variante2 0,76 0,90 0,72 Base 0,35 0,16 0,09 0,06 0,00

CTH* : Concepts Au niveau de chaque serveur il y a un arbre digital partiel une case contenant les articles du fichier L'arbre digital au niveau du serveur garde la trace de tous les éclatements sur ce serveur.

CTH* : Concepts Au niveau de chaque client il y a un arbre digital partiel   Tout client commence avec un arbre vide ( | 0 ) Mise à jour progressive de l'arbre du client.

CTH* : Concepts L'expansion du fichier se fait à travers les collisions. A chaque collision il y a distribution du fichier (du serveur éclaté) sur un nouveau serveur (Scalabilité) .  Quand une case (serveur) éclate , il y a Extension de l’arbre du serveur Initialisation d’un nouveau serveur avec un arbre vide Partage des articles entre l’ancien et le nouveau Initialisation du système Initialiser le serveur 0 avec Case vide ; Intervalle : >  , <=  ; Arbre : | 0

CTH* : Illustration

CTH* : Transformation (Client, clé)  Serveur Appliquer l’algorithme de transformation CTH au niveau du client sur la clé C. Rediriger la requête vers le serveur m’. m←m’. m m’ Appliquer l’algorithme de transformation CTH au niveau de m sur la clé C. La clé C est dans l’intervalle de m ? NON OUI Traiter la requête de recherche et répondre au client. Appliquer l’algorithme d’ajustement de l’image du client. Fin

CTH* : Transformation (Client, clé)  Serveur Bon adressage Client Client Client Ok Serveur Serveur Serveur Serveur

CTH* : Transformation (Client, clé)  Serveur Mauvais adressage ( avec 1 forward ) Client Client Client IAM ( A-algorithm) Ok Serveur Serveur Serveur Serveur Mauvais adressage ( avec 2 forward ) Client Client Client Ok IAM ( A-algorithm) Serveur Serveur Serveur Serveur

CTH* : Ajustement de l’arbre du client Soit CM’ = C0C1...Ck la clé maximale du serveur trouvé (m) dans l’arbre du client CM, la clé maximale du serveur m selon l’arbre du serveur 1)     Trouver dans l’arbre du client la première branche b qui vérifie Digit (b) +’||...|’ ≥ CM, b=b1 b2 …bTaille(b) 2)     Remplacer la séquence de l’arbre du client ( bM+1 …m) par la séquence de l’arbre du serveur (CM+1…Ck m…m’) - M étant la taille de préfixe commun entre CM et Digit (b) - m’ est le serveur qui correspond à CM’ dans l’arbre du serveur

CTH* : Ajustement de l’arbre du client (Exemple1) Arbre du client : a _ 0 Nil | 1 Serveur1 : a a _ 1 Nil Nil | 2   Données client : m=1 et CM’= ‘|’ Données serveur : CM=’aa_’ ; m’=2 ; P = a a _ 1 Nil Nil | 2  1)       b =’aNil’ 2)      M = 1 3)      bM+1 est Nil  a _ 0 a _ 1 Nil Nil | 2

CTH* : Ajustement de l’arbre du client (Exemple2) Arbre du client : b a b a a a 0 Nil Nil Nil Nil Nil | 1 Serveur 1 : b a b a 1 Nil Nil Nil | 2   Données client : m=1 et CM’= ‘|’ Données serveur : CM=’baba’ ; m’=2 ; P = b a b a 1 Nil Nil Nil | 2 1)       b =’babaNil’ 2)      M = 4 3)      bM+1 est Nil  b a b a a a 0 Nil 1 Nil Nil Nil | 2

CTH* : Ajustement de l’arbre du client (Exemple3) Arbre du client : a 0 b a a b a 1 Nil Nil 3 Nil | 2 Serveur 0 : a a a 0 6 5 | 1 Données client : m=0 et CM’= ‘a’ Données serveur : CM=’aaa’ ; m’=5 ; P = a a a 0 6 5 1)       b =’a0’ 2)      M = 1 3)      bM+1 est 0  a a a 0 6 5 b a a b a 1 Nil Nil 3 Nil | 2

CTH* : Insertion (i)Si Clé n'est pas dans la case et case non pleine insérer tout simplement Clé dans la case et l'algorithme se termine.   (ii) Si Clé n'est pas dans la case et celle-ci est pleine il y a collision. Éclatement du serveur

CTH* : Éclatement du serveur Soit m le serveur éclaté m' le nouveau serveur à créer, CM clé maximale de m de longueur k. Principe : Appliquer l'algorithme d'éclatement de CTH ( Deuxième manière ) pour modifier l'arbre du serveur m et partager les clés entre m et m' ; (Garder un nœud Nil en plus et éviter de faire un accès au serveur père pour voir s’il y a un nœud Nil qui le précède.) Au niveau du serveur m', initialiser l'arbre avec les digits de CM suivis d'une feuille m' suivie de k-1 nœuds Nils.

CTH* : Requête à intervalle [Clé_min,Clé_sup] (Coté Client) Appliquer l'algorithme de recherche sur la clé clé_min soit m le serveur trouvé et CM sa clé maximale ; Si (clé_max = CM) : Appliquer au niveau de serveur m REQ [clé_min, clé_max] ; Sinon Appliquer au niveau de serveur m REQ[clé_min, CM] ; Fin Sinon ; Tq (clé_max > CM): CM=suivant (CM) ; m=prochain (m) ; Si (clé_max = CM) Alors; Appliquer au niveau de serveur m REQ [clé_min, clé_max] ; Sinon Appliquer au niveau de serveur m REQ [clé_min, CM] ;

CTH* : Requête à intervalle [Clé_min,Clé_sup] (Coté Serveur) Retrouver m' le serveur de clé maximale CM qui doit contenir clé_min Si (m' <> m) Appliquer au niveau du serveur m' REQ [clé_min, clé_max] ; Envoyer un IAM au client ; Sinon Si (clé_max = CM) Alors Retourner les clés du serveur m de l'intervalle [clé_min, clé_max] Retourner les clés du serveur m de l'intervalle [clé_min, CM]

CTH* : Requête à intervalle [Clé_min,Clé_sup] (Coté Serveur) ( Suite ) Tq (clé_max > CM) : CM=suivant (CM) ; m=prochain (m) ; Si (clé_max = CM) Appliquer au niveau du serveur m REQ [clé_min, clé_max] ; Sinon Appliquer au niveau du serveur m REQ [clé_min, CM] ;

CTH* : Requête à intervalle (Terminaison) Méthode probabiliste Utilisation d’un time out Méthode déterministe Chaque serveur recevant la requête envoie au client les enregistrements qui répondent à la requête, en plus il envoie son intervalle Le client attend donc que l'union des intervalles des serveurs répondants recouvre l'intervalle initial de la requête.

CTH* : Requête à intervalle (Illustration) Requête sur l’intervalle [Abd, Bel] Arbre du client a | 1 Requête sur [Abd, A] Client Requête sur]A, Bel] Réponse pour les clés de l’intervalle ] Ab, A] IAM IAM et réponse pour les clés de l’intervalle [Abd, Ab] Réponse pour les clés de l’intervalle ] A, Bel] Requête sur [Abd, A] Requête sur]Ab, A] Serveur 0 Serveur 2 Serveur 3 Serveur 1 Arbre du serveur 0 Arbre du serveur 2 Arbre du serveur 3 Arbre du serveur 1 a a 2 | 1 a b 2 3 | 1 a 3 | 1 | 1

CTH* : Performance

CTH* : Performance

CTH* : Performance

CTH* : Variantes CTH* avec arbre central Pas d’arbre au niveau des serveurs Arbre réel au niveau d’un serveur Pas de multicast.

CTH* : Variantes

CTH* : Variantes

CTH* : Variantes CTH* avec ‘Multicast’ Pas d’arbre au niveau des serveurs Pas d’arbre central

CTH* : Variantes

CTH* : Variantes

Conclusion Généralisation de TH Préservation de l’ordre des articles : facilite les opérations de parcours séquentiel et de requêtes à intervalle. Toutes les opérations sans multicast des protocoles de communication existent ( Plate forme windows et Linux) Deux variantes sont proposées La méthode de base avec chaînage des cases (comme les arbres B+ ) Toutes les variantes de LH* peuvent s’intégrer dans CTH*.