IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Vérifier l'unicité de messages grâce à une structure rapide


Sujet :

Algorithmes et structures de données

  1. #1
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut Vérifier l'unicité de messages grâce à une structure rapide
    Bonjour,

    J'ai un petit problème que je cherche à résoudre par l'emploi d'une structure la plus adaptée possible (le langage qui l'implémentera sera Java).

    Un serveur reçoit des messages, identifiés par un identifiant unique messageID. A priori celui-ci peut-être quelconque, pas forcément un numéro donc, mais peut être une date suivie d'un numéro unique par exemple. On peut évidemment discuter sur sa 'forme' pour les besoins spécifiques d'une structure.

    Je voudrais être en mesure de savoir si un message a déjà été traité. Pour cela je dois pouvoir accéder rapidement à une information identifiée par cet identifiant, pour savoir si le message a été traité ou non, et je dois aussi être en mesure d'ajouter un nouvel identifiant à la structure.

    J'avais pensé à un arbre, dont les feuilles seraient soit un identifiant, soit un intervalle d'identifiant, par contre j'ai peur que l'insertion devienne alors très couteûse, ce qui n'est pas non plus le but.

    En fait en cas de crash du serveur, il doit pouvoir regénerer très vite cette structure à partir du fichier tampon des messages non envoyés

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Je ne sais pas si ce type de structure est disponible nativement en Java, mais elle existe algorithmiquement et peut donc être implémentée au besoin :
    l'usage de tables de hachages devrait permettre de répondre à ton problème.

    Ces tables sont des tableaux "ordinaires", dont l'accès est ainsi très performant, et pour l'indexage desquelles une "fonction de hachage" calcule l'indice réel de l'élément en fonction de la clef qui l'identifie.

    C'est un peu court, comme explication de principe, mais je crois que tout y est

    Bon courage pour la suite.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    oui je confirme je pense que le mieux est que tu te renseigne sur les algorithmes qui concernent l'emploi des hashtable

  4. #4
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut
    Merci

    je connais en effet les tables de hachages, mais pour l'indexation, je le ferais au niveau de l'identifiant de message je présume.

    Le problème étant quand par exemple quand tu es censé gérer disons 1 million de messages / heure, et s'assurer qu'au fil de cette heure il n'y a pas eu de message dupliqué, la taille devient astronomique !

    D'ou une idée d'intervalles pour compacter la structure, mais je doute que ca soit représentable avec une table de hashage ? non ?

  5. #5
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    jai pas trop envie de m'avancer mais presque tout est representable avec des hashtable tu n'as qu'a faire des hashtable a plusieurs dimension l'alogrithme de square pour les hashtable devrait pouvoir te convenir si jai bien compris ce que tu veux dire.

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/08/2014, 14h57
  2. Réponses: 36
    Dernier message: 04/07/2011, 09h20
  3. Vérifier tous les champs d'une structure
    Par Invité dans le forum SAP
    Réponses: 7
    Dernier message: 29/04/2011, 13h02
  4. Comment vérifier si une structure n'est pas vide
    Par colorid dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2008, 00h01
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo