Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)

Slides:



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

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
Le langage Z Pr ZEGOUR DJAMEL EDDINE
Sémantique des déclarations pour le langage Z minimal
D. E ZEGOUR Institut National d ’Informatique
Algorithmes et structures de données avancés
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
Distributed Compact Trie Hashing Proposé par D.E ZEGOUR.
Directeur de Thèse : Pr. Witold Litwin
IH* – Hachage Multidimensionnel Distribué et Scalable
Witold Litwin Structures physiques Witold Litwin
1 Structures de Données Distribuées et Scalables Witold Litwin
1 ACI DADDI - Réunion de lancement IRISA - Projet ADEPT Michel Hurfin Jean-Pierre Le Narzul Frédéric Tronel 23 mai 2005.
PBST*: une nouvelle variante des SDDS
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Synchronisation et communication entre processus
Hachage et Indexation 1. Concepts de base 2. Organisations par hachage
Chap 4 Les bases de données et le modèle relationnel
Sections sélectionnées du Chapitre 11
Introduction au calcul quantique
Programmation linéaire en nombres entiers : les méthodes de troncature
Support des services et des serveurs
Structures de données avancées : Arbres AVL & Arbres Rouge et Noir
Structures de données avancées : Hachage dynamique
Les 10 fonctions principales de votre Espace Membre Comment accéder rapidement aux fonctions importantes de votre compte ?
Fondements de l’algorithmique des réseaux
Interface de commande client
Structures complexes Pr ZEGOUR DJAMEL EDDINE
Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Arbres Red-Black
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Introduction
INTRODUCTION.
Hachage et Indexation 1. Concepts de base
Procédures et fonctions Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Listes linéaires chaînées Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Les réseaux locaux virtuels : VLAN
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)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Le langage Z minimal Pr ZEGOUR DJAMEL EDDINE
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)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
L’analyse lexicale Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Concepts du Multidimensionnel D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Arbres AA
Structures simples et tableaux Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Expressions sur les chaînes de caractères Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Range Partionning: RP*
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 : Hachage dynamique
Structures de données avancées : MTH ( Multidimensional trie hashing ) D. E ZEGOUR Institut National d ’Informatique.
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:

Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)

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*

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 h i (c) = c mod 2 i N Éclatement de cases en remplaçant h i avec h i+1 ; i = 0,1,.. En moyenne, b/2 clés sont transférées vers une nouvelle case

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,..,2 i N / 0.. Ces principes évitent l'existence d'un index, caractéristique d'autres algorithmes de hachage extensible.

h 0 ; n = 0 N = 1 b = 4 i = 0 h 0 : c -> Au départ LH* Rappel LH

h 1 ; n = 0 N = 1 b = 4 i = 1 h 1 : c -> Quand il y a éclatement c’est h1 LH* Rappel LH

12 24 h 1 ; n = 0 N = 1 b = 4 i = 1 h 1 : c -> Résultat de l’éclatement LH* Rappel LH

N = 1 b = 4 i = 1 h 1 : c -> h1h1h1h1 h1h1h1h1 Après quelques insertions LH* Rappel LH

N = 1 b = 4 i = 1 h 2 : c -> h2h2h2h2 h1h1h1h1 h2h2h2h2 Quand il y a éclatement c’est h2 LH* Rappel LH

N = 1 b = 4 i = 1 h 2 : c -> h2h2h2h2 h1h1h1h1 h2h2h2h2 Après quelques insertions LH* Rappel LH

N = 1 b = 4 i = 1 h 2 : c -> h2h2h2h2 h2h2h2h2 h2h2h2h h2h2h2h2 Résultat de l’éclatement LH* Rappel LH

N = 1 b = 4 i = 2 h 2 : c -> h2h2h2h2 h2h2h2h2 h2h2h2h h2h2h2h2 N remis à zéro et i passe à 2 LH* Rappel LH

LH* Rappel LH Et ainsi de suite On introduit h 3 puis h 4... Le fichier peut s'étendre autant qu'il faut, sans jamais avoir beaucoup de débordements.

LH* Rappel LH Calcul d’adresse a  h i ( c ) si a < P a  h i+1 ( c) Fsi P étant la prochaine case à éclater

LH* Propriété de LH : Une clé c est dans une case m adressée par une fonction h j ssi h j (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.

j = j = j = n = 2 ; i = 3 n' = 0, i' = 0n' = 3, i' = 2 Site coordinateur Client serveurs LH* Eclatement

j = j = j = n = 2 ; i = 3 n' = 0, i' = 0n' = 3, i' = 2 Site coordinateur Client serveurs LH* Eclatement

j = j = j = n = 2 ; i = 3 n' = 0, i' = 0n' = 3, i' = 2 Site coordinateur Client serveurs LH* Eclatement

j = j = j = n = 2 ; i = 3 n' = 0, i' = 0n' = 3, i' = 2 Site coordinateur Client serveurs LH* Eclatement

j = j = 3 7 j = n = 3 ; i = 3 n' = 0, i' = 0n' = 3, i' = 2 Site coordinateur Client serveurs j = 4 10 LH* Eclatement

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

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.

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' := h j (c) si a' = a alors accepte c sinon a'' := h j - 1 (c) si a < a'' < a' alors a' := a'' envoies c à la case a'

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.

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) du serveur a adressé la première fois. Soit i' et n’ les paramètres du client i' := j - 1 n' := a +1 si n’ ≥ 2 i‘ alors n' = 0, i' := i' +1

j = j = 3 7 j = n = 3 ; i = 3 n' = 0, i' = 0n' = 3, i' = 2 Site coordinateur Client Serveurs j = LH* Adressage

j = j = 3 7 j = n = 3 ; i = 3 n' = 0, i' = 0n' = 3, i' = 2 Site coordinateur Client Serveurs j = LH* Adressage

j = j = 3 7 j = n = 3 ; i = 3 n' = 1, i' = 2n' = 3, i' = 2 Site coordinateur Client Serveurs j = a =0, j = 3 LH* Adressage

j = j = 3 7 j = n = 3 ; i = 3 n' = 0, i' = 0n' = 3, i' = 2 Site coordinateur Client serveurs j = LH* Adressage

j = j = 3 7 j = n = 3 ; i = 3 n' = 0, i' = 0n' = 3, i' = 2 Site coordinateur Client serveurs j = LH* Adressage

j = j = 3 7 j = n = 3 ; i = 3 n' = 0, i' = 0n' = 3, i' = 2 Site coordinateur Client serveurs j = LH* Adressage

j = j = 3 7 j = n = 3 ; i = 3 n' = 1, i' = 3n' = 3, i' = 2 Site coordinateur Client serveurs j = a = 0, j = 4 LH* Adressage

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.

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.

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 j a Le client termine quand il reçoit dans un ordre quelconque a = 0, 1, 2, …, (2 i + n + 1) Avec i = Min(j a ) et n = Min(a) tel que j a = i.

LH* Requête parallèle Solution Point à point 1. Le client envoie la requête Q à tous les serveurs de son image (Q = Clé + {S1, S2, …Sn} 2. Chaque serveur qui reçoit Q, envoie le message vers les cases ne figurant pas dans l’image du client ( 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

LH* Requête parallèle Solution Point à point Algorithme de propagation (appliqué au niveau de chaque serveur a de niveau j) : Tq j’ < j j’  j’ + 1 Envoyer (Q, j’) au serveur a + 2 j’-1 FTq

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 insertion est faite en un message et une recherche en deux messages