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 :

Performance XML et acces Concurrentiel


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 36
    Par défaut Performance XML et acces Concurrentiel
    Bonjour,
    Mes recherches n'étant pas satisfaisantes je me dirige vers le forum.

    Je dois manipuler un fichier XML d'une volumetrie d'environ 3000 elements (Event), chaque élément contiendra 2 a 3 éléments:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <Events>
    	<Event>
    		<id>1</id>
    		<description>blahblah1</description>
    	</Event>
    	<Event>
    		<id>2</id>
    		<description>blahblah2</description>
    	</Event>
    	...
    </Events>

    L'idée est de LIRE ce fichier :
    - Rechercher une description (<description>)
    - si celle-ci n'existe pas : ECRIRE un nouveau bloc Event contenant la nouvelle description
    - si elle existe on récupere l'id.

    Le programme doit être le + rapide possible.

    Problèmatique :
    - Plusieurs programmes java sont successibles d'acces simultanément à ce fichier (lecture / ecriture).

    Pourriez vous me conseiller?

    Par avance Merci

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Un fichier genre CSV serait plus simple, quand même.

    Le problème avec le XML c'est que tu ne peux pas rajouter de donnée sans le réécrire entièrement depuis le début. Ton fichier n'est pas trop gros et donc ça peut encore aller, mais c'est frustrant quand même. Avec du CSV tu ajoutes le nouvel enregistrement à la fin et puis voilà, c'est tout.
    Avec un fichier binaire ou utilisant du padding, tu pourrais même accélérer la recherche d'id.

    Dans tous les cas tu dois te protéger de l'écriture concurrentielle, avec FileLock.

    Ah, et puis je te le dis au cas où tu t'en sois pas rendu compte : ce que tu fais là c'est une base de donnée ultrasimplifiée. Ce pour quoi les fichiers XML sont effectivement très mauvais.
    C'est pour ça que tu trouves rien : normalement on utilise une base de données légère et les problèmes disparaissent.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 36
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Un fichier genre CSV serait plus simple, quand même.

    Le problème avec le XML c'est que tu ne peux pas rajouter de donnée sans le réécrire entièrement depuis le début. Ton fichier n'est pas trop gros et donc ça peut encore aller, mais c'est frustrant quand même. Avec du CSV tu ajoutes le nouvel enregistrement à la fin et puis voilà, c'est tout.
    Avec un fichier binaire ou utilisant du padding, tu pourrais même accélérer la recherche d'id.
    Oui le fichier CSV me parait une bonne idée, je ne suis pas fixé sur le XML.

    Citation Envoyé par thelvin Voir le message
    Dans tous les cas tu dois te protéger de l'écriture concurrentielle, avec FileLock.
    Ok merci c'est noté

    Citation Envoyé par thelvin Voir le message
    C'est pour ça que tu trouves rien : normalement on utilise une base de données légère et les problèmes disparaissent.
    Et bien ce que j'ai peur avec une base de donnée c'est la rapidité... non ?
    le fichier plat est + rapide non ?
    Je dois allez chercher l'id de l'Event (par rapport à sa description) tres souvent : environ 200 000 fois. Et selon s'il existe ou pas : faire un insert ou un delete.

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

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

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

    Le programme doit être le + rapide possible.
    Je crois que c'est faisable avec SAX.

    Problèmatique :
    - Plusieurs programmes java sont successibles d'acces simultanément à ce fichier (lecture / ecriture).
    Je ne pense pas que ce soit faisable avec SAX.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 36
    Par défaut
    Citation Envoyé par polymorphisme Voir le message
    Bonjour,


    Je crois que c'est faisable avec SAX.


    Je ne pense pas que ce soit faisable avec SAX.
    Oui SAX est + rapide mais apparemment il ne permet pas d'ecrire...

    L'histoire de la BDD ou du fichier plat cité plus haut me plait bien.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par thecrafty Voir le message
    Et bien ce que j'ai peur avec une base de donnée c'est la rapidité... non ?
    le fichier plat est + rapide non ?
    Pour un fichier aussi petit, je dois avouer que je n'en sais rien. C'est possible.
    Mais la différence ne sera pas fulgurante : une base de données ça sert à ça. Ce qui est d'ailleurs la raison pour laquelle tu ne trouves rien sur le sujet : dans le cas général c'est une base de données et c'est là que tu trouveras des infos.


    Citation Envoyé par thecrafty Voir le message
    Oui SAX est + rapide mais apparemment il ne permet pas d'ecrire...
    Techniquement si, mais c'est la plaie à utiliser. Si tes données ne peuvent pas possiblement avoir le moindre caractère spécial, il vaut mieux l'écrire à la main. (Mais s'il peut y avoir des caractères spéciaux, là il vaut mieux savoir ce qu'on fait. De toute façon de manière générale, CSV ou binaire indexé ou BDD seront plus pratiques.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 36
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Pour un fichier aussi petit, je dois avouer que je n'en sais rien. C'est possible.
    Mais la différence ne sera pas fulgurante : une base de données ça sert à ça. Ce qui est d'ailleurs la raison pour laquelle tu ne trouves rien sur le sujet : dans le cas général c'est une base de données et c'est là que tu trouveras des infos.
    ok v me rabattre sur une bdd alors.
    Pour la petite histoire, à la base je comptais mettre tout en mémoire, mais du fait de l'acces concurrentiel, cela aurait posé soucis (ou pas?)

Discussions similaires

  1. Base de données XML et accès concurrentiel
    Par FM_UA dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 25/08/2010, 10h38
  2. [Debutant][Store procedure][performance] plan d'acces
    Par Carmen dans le forum Débuter
    Réponses: 2
    Dernier message: 11/01/2005, 09h20
  3. [VB.NET] Accès concurrentiel aux fichiers
    Par david71 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 13/12/2004, 11h19
  4. [Access] Accès concurrentiels
    Par Benjamin GAGNEUX dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/07/2004, 17h56
  5. Performance xml
    Par MicKCanE dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 07/07/2003, 06h41

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