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 :

Parser un gros fichier xml (>500 Mb )


Sujet :

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

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Points : 21
    Points
    21
    Par défaut Parser un gros fichier xml (>500 Mb )
    Bonjour,

    Voila pour commencer, j'avais commencer à parser avec JDOM pour des fichiers xml de petites tailles (<5Mb) sans aucun probleme avec Java. Mais le problème devient totalement différent avec un fichier xml de 500Mb voir >1Go.

    Je voudrais eviter si possible de refaire mes fonctions qui joue avec le contenu du fichier xml. Est ce que c'est possible ?

    Si non, quel outil serait le mieux adapter dans ma situation? Je cherche aussi à optimiser les performances. Je suis ouvert à tous les conseils

    mon xml ressemble à :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <tag1>
     
         <tag2 attribut1 attribut2 attribut 3>
         </tag2>
     
    </tag1>        
    <tag3>
          Text
     </tag3>
    Bien sur, il y a plusieurs niveau ( pas seulement deux ) et il y a pas mal de balise 1 et 2 ( quelques centaines de milliers voir peut etre du millions)

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Citation Envoyé par kenzoshin Voir le message
    Je voudrais eviter si possible de refaire mes fonctions qui joue avec le contenu du fichier xml. Est ce que c'est possible ?
    Une solution mitigée est peut-être possible : commencer par éclater le gros fichier en plein de petits fichiers temporaires, et les traites tous un par un.

    Si c'est envisageable, éclater le gros fichier peut se faire sans trop de difficultés avec StAX.

    Sinon, ça reste possible mais pas réaliste, parce que les outils pour le faire n'existent pas, donc il faudrait les faire toi-même, et c'est infiniment plus compliqué que juste refaire tout le traitement.

    Citation Envoyé par kenzoshin Voir le message
    Si non, quel outil serait le mieux adapter dans ma situation? Je cherche aussi à optimiser les performances. Je suis ouvert à tous les conseils
    StAX pour sa simplicité d'utilisation, ou SAX pour sa simplicité d'intégration.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    StAX pour sa simplicité d'utilisation, ou SAX pour sa simplicité d'intégration.
    Est ce que tu aurais une idée des performances ?
    J'ai un fichier de >500 mb avec environ >500k de Insert à faire apres lecture du fichier XLML

  4. #4
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Bonjour,

    Est ce que tu aurais une idée des performances ?
    Oui, les performances peuvent être mesurées à partir de l'entropie de ton fichier
    et des programmes mis en oeuvre.

    Mais le problème devient totalement différent avec un fichier xml de 500Mb voir >1Go.
    C'est le désert ?

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Non obstant l'idée saugrenue de vouloir faire tenir 500M voir plus dans une fichier xml , avec des tailles pareilles, il n'y a pas d'avance, il faut recourir à des méthodes ne gardant pas les données en mémoire mais les traitant au fil du flux. Donc stax ou sax.

    Coté perf, ben ça pourra en tout cas pas être pire qu'un DOM qui bouffe 8G de RAM

    Et en ce qui concerne tes insert: même chose, les faire au fur et à mesure. Ne compte de toutes façons pas sur une SGBD même de gros calibre pour savoir traiter une transaction de 500.000 opérations

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Merci encore, j'ai finalement utilisé sax pour lire mon fichier XML.

    aucun soucis dans la lecture mais je rencontre un autre soucis qui n'est pas lié à sax mais a hibernate ...

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

Discussions similaires

  1. Parser un gros fichier XML
    Par Syyrius dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 06/11/2013, 14h54
  2. Parser un gros fichier XML
    Par gilloddon dans le forum Android
    Réponses: 4
    Dernier message: 29/01/2013, 09h45
  3. Parser de gros fichiers XML en JavaSCript via SAX
    Par alatox dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 18/03/2010, 15h57
  4. Réponses: 2
    Dernier message: 25/05/2007, 15h52
  5. [C#] [XML] Traitement de gros fichiers XML (90 Mo)
    Par Pulsahr dans le forum Windows Forms
    Réponses: 20
    Dernier message: 01/12/2005, 14h40

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