Je prends un deuxième exemple (pas charte compliant du tout) : eDonkey / eMule
La problématique c'est de partager des fichiers et de fournir un mécanisme de recherche parmis les fichiers (tu peux voir cela comme un flux de données de taille N).
Bon première solution, chaque utilisateur qui veut partager un fichier le transfert sur le serveur qui tient à jour une liste de nom de fichier associées aux données de ce fichier... tu remarque que ce n'est pas viable. Que non seuleemnt il faut une bande passante monumentale, mais aussi un espace de stockage énorme.
La solution est d'utiliser une table de hachage ; si le "hash code" est suffisament long et que la fonction de hashage est uniforme il est peu probable d'avoir deux fichiers de même taille qui créent le même hash.
Par exemple la fonction de hashage de eDonkey / eMule va créer le hash suivant pour un fichier donné :
Code :
- ed2k://|file|CODESW~1.LOG|819|fa9a7a10f7207457ac77d2b0b6934e3a|
|
Tu vois que le nom du fichier CODESW~1.LOG est associé à la taille du fichier "819" octets et au hash des donneés du fichiers "fa9a7a10f7207457ac77d2b0b6934e3a", pour le serveur il suffit de maintenir une liste de utilisateurs qui ont des fichiers de même taillle et avec le même hash, c'est qu'ils ont le même fichier.
Donc quand tu te connecte à un serveur edonkey, il suffit d'envoyer le nom de chaque fichier, la taille et son hash. Ce qui fait beaucoup moins de données.
Message édité par Requin le 08-04-2003 à 17:19:53