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

Format d'échange (XML, JSON...) Java Discussion :

[JAVA/XML] Parser ou non un XML ?


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut [JAVA/XML] Parser ou non un XML ?
    Salut à tous.

    Voilà j'ai un projet de fin d'études à réaliser. Grossomodo voilà de quoi il s'agit : je dois développer un services de statistisques pour un environnement J2EE. Les données sur lesquelles les traitements (les fonctions statistiques) vont s'effectuer proviendront d'un fichier XML. Quand une méthode sera invoquée (par exemple calculerEcartType() ), elle ira lire dans le fichier XML pour en retirer les données dont elle a besoin pour retourner un résultat.

    Ma question est la suivante :
    Sachant que le fichier XML peut probablement contenir des milliers de lignes de données, serait-il plus prudent de travailler directement sur le fichier XML, càd le parser pour en retirer les données à chaque fois qu'on fera appel à une méthode de calcul, ou alors devrais-je monter tout le contenu du fichier XML en mémoire ?

    La logique dit que si le fichier est volumineux, il vaut mieux éviter de le monter en mémoire pour ne pas alourdir le systeme. Mais d'un autre point de vue, ne serait-il pas maladroit pas de parser un fichier XML qui contient des milliers de données à chaque appel de méthode ?

    Je suis bloqué la dessus, please Help.
    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Il vaut mieux le charger en mémoire pour la vitesse d'accés.
    Les temps d'accés disque sont beaucoup plus élevés.
    Si le système a assez de ram aucun problème, sinon le fichier peut être chargé par blocs peu volumineux.

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut
    Normalement le service sera deployé dans un serveur d'application, et normalement il sera plutot balaise coté RAM... donc je charge le fichier en mémoire et je m'en fou du reste ?

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Ca semble la meilleure solution.

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut
    Ok merci je vais commencer comme ca.
    SInon d'autres avis seront les bienvenus, merci!

  6. #6
    Membre chevronné Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Par défaut
    En fait la question est plus compliqué que ça pour savoir si tu le charge en RAM ou pas. Si tu prends 2/3 Mo en RAM sur ton serveur et ce de façon ponctuelle ca va le faire. Maintenant si tu prends 2/3 Mo a chaque fois qu'un client se connecte, et qu'un nombre important de client peut se connecter dans un intervalle de temps relativement proche, là ca risque de poser plus de probleme...

    Sinon si tu as peur de faire tout sauter avec ton appli, tu peux réaliser le calcul avant que le client ne le demande. En gros des que ton fichier XML est mis a jour, tu fais tout tes traitements que tu stockes quelque part. Ensuite quand un client veut avoir ses données tu les ressort, ainsi vu que le traitement est dejà fait ca va etre beaucoup plus rapide et tu ne fais le calcul qu'une fois et donc la pas de probleme de RAM. Mais ne connaissant pas ton projet, cette solution n'est peut-être pas applicable.

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Oui mais un bon serveur possède des gigas et des gigas de ram.
    Mais il est vrai que dans le cas d'un serveur trés solicité le choix entre vitesse de traitement et surcharge minimale sur la mémoire du serveur n'est pas aussi simple.

  8. #8
    Membre chevronné Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Par défaut
    Citation Envoyé par seriousme
    Oui mais un bon serveur possède des gigas et des gigas de ram.
    Mais il est vrai que dans le cas d'un serveur trés solicité le choix entre vitesse de traitement et surcharge minimale sur la mémoire du serveur n'est pas aussi simple.
    Oui un serveur normal supportera la charge de travail, je n'allais pas jusqu'au fait qu'il fasse planter le serveur quand même, mais comme tu l'a souligné, je pensais plus au temps de réponse qui a mon avis est autant important. Si aujourd'hui on fait attendre un utilisateur 10 secondes pour une réponse, je pense qu'il ne comprendrait pas et trouverait ça excessivement long.

  9. #9
    Membre averti
    Inscrit en
    Février 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 13
    Par défaut
    je vais étudier les deux cas possibles. Je vous tendrai au courant de l'avancement des choses. Et encore merci à vous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. API Java pour parser un XML avec des balises avec nom de package
    Par rebelle49 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 11/08/2014, 13h22
  2. [JAXP] com.sun.xml.parser.ValidatingParser
    Par yolepro dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 05/11/2008, 15h36
  3. [XML] Parser une DTD?
    Par La Truffe dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 03/04/2007, 11h28
  4. [XML] Parser XML
    Par RobinJulie dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/02/2005, 08h48
  5. [XML] Parser selon des noeuds enfants
    Par GLDavid dans le forum Modules
    Réponses: 5
    Dernier message: 20/08/2004, 20h42

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