550 likes | 733 Views
IH* – Hachage Multidimensionnel Distribu é et Scalable. BOUKHELEF Djelloul É tudiant en PhD, Institut National d ’ Informatique (INI), Alger. Algérie E-mail: boukhelef_dj@yahoo.fr Directeur de thèse : Pr D-E. ZEGOUR. Partie I:. Structures de donn é es Distribu é s et Scalables. Serveurs.
E N D
IH* – Hachage Multidimensionnel Distribué et Scalable BOUKHELEF Djelloul Étudiant en PhD, Institut National d’Informatique (INI), Alger. Algérie E-mail: boukhelef_dj@yahoo.fr Directeur de thèse : Pr D-E. ZEGOUR
Partie I: Structures de données Distribués et Scalables
Serveurs Répertoired'accès Clients Structures de donnéesclassiques • Schémas de distribution classiques : • Partitionnement par intervalle, • Partitionnement par hachage, • Round-Robin , … • Mécanisme de calcul d'adresse unique et centralisé un point d'accumulation • Limite sur les performances d'accès • Vulnérabilité aux pannes • Scalabilité et Disponibilité • Duplication du calcul d'adresse MAJ synchrones des clients: • Impossible pour un grand nombre de clients distribués et autonomes
SDDS – Structures de Données Distribuées et Scalables • Conçues spécifiquement pour les multiordinateurs • Une collection d'ordinateurs, Stations de travail, faiblement couplés (à partage de rien, shared nothing) interconnectés par un réseau informatique (MAN, LAN, WAN) • Une nouvelle classe de structures de données pour des bases de données modernes • D’une grande taille (GO – TO) • Avec des données complexes: spatiales, géographiques, Image, Son, … • Scalables • Grandissent rapidement en gardant les mêmes performances • Haute disponiblilité et disponibilité incrémentale (scalable availability)
SDDS – Axiomes généraux (1) • Les données sont identifiées par des clés (d1), OID pour les objets • Les données sont stockées sur des serveurs et sont accédées par des clients autonomes • Il n'y a pas de répertoire central d'accès • Image locale par client • Mécanisme de vérification et de redirection des requêtes • Mécanisme de mise à jour distribué des images des clients • Les MAJ de la structure d'une SDDS ne sont pas envoyées aux clients de manière synchrone
SDDS – Axiomes généraux (2) • Un client peut faire des erreurs d'adressage suite à une image inadéquate de la structure de SDDS • Chaque serveur vérifie l'adresse de la requête et l'achemine vers un autre serveur si une erreur est détectée • Le serveur adéquat envoie un message correctif (Image Adjustment Message, IAM) au client ayant commis l'erreur d'adressage • Le client ajuste son image local pour ne plus faire, au moins, la même erreur
Réponse Requête h0(k) = 1 Ajustement de l’image locale Correction d’image Level = 2 Redirection SDDS – Axiomes généraux (3) 0 1 i’ = 0 n’ = 0 Level = 2 Next = 1 0 1 2 3 4 i’ = 2 n’ = 0
SDDS – Contraintes (1) • Si une SDDS n'évolue plus, alors les IAM font converger toute image d'un client vers l'image actuelle du fichier • L'ensemble des renvois à la suite d'une erreur d'adressage ne se fait qu'en quelques messages • Performance d'accès d'une SDDS • Nombre de messages sur le réseau (indépendante des paramètres du réseau) • Nombre de messages par opération • Vitesse de convergence de l’image d’un nouveau client
SDDS – Contraintes (2) • Scalabilité • Prendre en charge n’importe quelle quantité de données • pas de limite théorique de la taille, pas de réorganisation totale de la structure • Maintenir les performances quand le volume de données stockées varie: temps d ’accès constants • Distribution • Une grande quantité de données • Traitement parallèle et distribué • Non vulnérabilité aux pannes • Disponibilité • Assurer la continuité du fonctionnement 24 heures sur 7 jours
Classiques SDDS Arbre Hachage Disponibilité LH*m, LH*g Sécurisé LH*s SDDS – Typologie Structure de Données d-dimensionnel IH* 1-d-Arbre DRT, DRT*,RP* k-d-Arbre Distributed B+ k-RP* 1-dimensionnel LH*, LH*LH DDH, EH* k-disponibilité LH*RS, LH*SA
SDDS – Travaux en cours à l’INI • IH* • Scalable and Distributed Interpolation-Based Hashing D. Boukhelef • CTH* • Scalable and Distributed Compact-Trie-Hashing D-E. Zegour • TH* • Scalable and Distributed Trie-Hashing M. Aridj
Partie II: Structures de données multidimensionnelles
Records K D1 D0 Données multidimensionnelles • Espace de clés K : • K = D0D1...Dd-1 • Fichier F : • F = (r1,r2, ... , rN) • Enregistrement r : • r = (k0, k1, ... , kd-1, a0, a1, ... , am) K ; kj Dj pour 0 j d
Méthodes d’accès multidimensionnelles • Propriétés
IH – Hachage par Interpolation • Proposé par W.A. Burkhard en 1983 • Extension du Hachage Linéaire (LH) de Litwin • Principe : clé k = k0, k1, ... , kd-1 • Interpolation (shuffle function) • Former la signature de k (record signature) • Appliquer le LH classique pour décider où se trouve la clé k • Implémentation des requêtes à intervalle : (partial match query & range query).
Partie III: IH* - Adaptation du Hachage par interpolation aux environnements distribués
Hachage Linéaire Multidimensionnel (IH) Hachage Linéaire Distribué et Scalable (LH*) Hachage par Interpolation Distribué et Scalable (IH*) IH* – Hachage par Interpolation Distribué et Scalable Hachage Linéaire (LH) • Structure de donnée àbase du Hachage (Linéaire) • Adaptation du IH aux environnements distribuésselon le modèle SDDS • Introduction de l’ordre et l’aspect multidimensionnel à la SDDS LH*
Coordinateur i , n Serveurs Réseaux d’interconnexion j j j Clientn i’ , n’ Client1 i’ , n’ IH* – Structure d’un fichier • Serveurs (j) • Stockage de données • Evaluation des requêtes des clients • Clients autonomes (i’ , n’) • Accès aux données • Intermédiaire entre application et système SDDS • Site Coordinateur (i , n) • Maintient les paramètres du fichier • Gestion d’éclatement • Allocation de sites
IH* –Évolution du Fichier 0 0 i = 0 , n = 0
IH* –Évolution du Fichier 0 1 0 1 i = 1 , n = 0
IH* –Évolution du Fichier 2 1 0 1 2 0 i = 1 , n = 1
IH* –Évolution du Fichier 2 3 0 1 2 3 0 1 i = 2 , n = 0
Éclatement d’un serveur Algorithme SplitServer (n) 1- créer la case (n+2j): niveau j’= j+1 2- éclater la case (n) en utilisant hj+1 3- mettre à jour jj+1 4- confier l’éclatement au site coordinateur Fin
Uniform data distribution Next server to split (n) 4 Non-uniform data distribution 2 5 8 3 4 5 6 7 0 1 0 1 2 8 9 10 9 3 6 7 10 Splitted Servers Newly created Servers Splitted Servers Newly created Servers IH* – Eclatement • Éclatement non contrôlé • À chaque collision • Éclatement contrôlé • Taux de chargement est supérieur / inférieur au facteur de chargement du fichier
4 Non-uniform data distribution 2 5 8 0 1 9 3 6 7 10 Splitted Servers Newly created Servers IH* - Éclatement contrôlé • 1ère solution : Loi de distribution de données • 2ème solution : Négociation entre Coordinateur et Server (n) • Garder l’historique des messages de collision Next server to split (n)
0 1 Réponse Requête h0(k) = 1 0 1 2 3 4 Ajustement de l’image locale i’ = 2 n’ = 0 IAM Level = 2 Redirection Adressage (1) i’ = 0 n’ = 0 Level = 2 Next = 1
0 1 2 3 Réponse Requête h2(k) = 2 0 1 2 3 Ajustement de l’image locale i’ = 2 n’ = 2 IAM Level = 3 Redirection Adressage (2) i’ = 2 n’ = 0 Level = 2 Next = 3 4 5 6
0 1 2 6 3 3 0 4 1 5 5 Image du client i’ = 1 , n’ = 0 Image exacte Level = 2, Next = 3 Requête à intervalles 1
Client i’ = .. n’ = .. Requête par intervalle sur F1 0 1 2 3 4 5 F1 Serveurs libres Mécanisme d’envoi multicast 0 1 2 3 F2 Multiordinateur Envoi par Diffusion – Principes
Envoi par Diffusion – Critiques • Simple: un envoi pour tous le monde • Multicast n’est pas toujours disponibles sur tous les réseaux • Peut ne pas être efficacement implémenté • Trop de messages sur le réseaux • Problèmes du déterminisme d’envoi et de réception dans le cas des
Client 0 1 i’ = 1 n’ = 0 0 1 2 3 4 5 6 F1 Requête à intervalle sur F1 Level = 2 Next = 3 Multiordinateur Envoi ciblé (solution LH*)
Envoi ciblé– Critiques • Déterministe • Parcours de tous les serveur même pour un petit nombre d’enregistrements Pas d’ordre dans LH
Client 0 1 i’ = 1 n’ = 0 0 1 2 3 4 5 6 F1 Requête à intervalle sur F1 Level = 2 Next = 3 Multiordinateur Envoi sélectif (solution IH*)
Envoi sélectif – Client • Déterminer l’ensemble A des serveurs couvrant la région de Q (Algo Range Query du IH) : A {0, 1, ..., n’+2i’} • Déterminer pour chaque serveur de A la région correspondante en utilisant (n’est pas forni par IH) • Envoyer à chaque serveur de A la sous-requête correspondante;
Envoi sélectif – Serveur • Découper la requête reçue en des sous des sous-requêtes plus fines • Déterminer l’ensemble des serveur fils et envoyer à chaque serveur la sous-requête correspondante • Si portée du serveur portée de la sous-requête alors Exécuter la requête correspondante Retourner(réponse + adresse + niveau)
Décomposition récursive – Client Algorithm Generate_Target_Servers Begin Compute the set S of target servers: S={s0, s1, ... , sm} {0, 1, ... , n’+2i’-1} Decompose the range of Q into relevant sub-queries: P ={ q0, q1, ... , qm} for each server si from S do Send (qi, j) towards server (si): j i’+1 if (sin) and j i’ otherwise end for End
Décomposition récursive – Serveur Algorithm Query_Propagation (Q, j) Begin Compute the set S of children servers: S={sk, sk+1, ... , sk+m} {a+2j+1, ... , a+2j’’} where k is the level of sk at the moment of its creation by server (a): j <k j’ Decompose the range of Q into relevant sub-queries: P ={ qk, qk+1, ... , qk+m} foreach server sk from S do Send (qk, k) towards server (sk) end for End
Tests de terminaison • Probabiliste • Expiration du timeout • Déterministe • Tous les serveurs ont bien répondu • Hybride : Déterministe avec timeout • Déterminer les serveurs manquant • Leur retransmettre les messages de requête • Retourner à l’application les réponses reçues • Signaler au Coordinateur les serveurs n’ayant pas répondu • Lancer la procédure de recouvrement
Window Thread Sender Threads Requests FIFO Non Ack FIFO Output Sockets Empty Win. Pos. Worker Thread Pop Push Full Win. Pos. Ack / Error Thread Window Timer Thread Receiver Thread Answers FIFO Input Socket Ack / Error FIFO Worker Thread Module de contrôle de flux
Implémentations • Environnement Windows (XP, 2000) • Windows - Visual C++ (V6) • Protocole plus complet • Test et validation des résultats • Java et XML • Interopérabilité (Langage, SQL Xquery, …) • Portabilité (Windows, Linux, …) • Requêtes / Réponses par lot (bulk operations)
Environnement de développement • Visual C++ (V6) • Programmation 100% objet • Interface graphique • MFC & API Windows • TCP, UDP • I/O Completion Port, Asynchronous I/O • Multithreading • …