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

Java Discussion :

Ecriture concurrente dans un fichier


Sujet :

Java

  1. #21
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Normalement, on fait ça avec une base de données, il n'y a aucune raison logique de ne pas le faire. A la base, faire ça avec un fichier excel est une erreur (voire une faute...).

    Je ferais une BDD avec entre autres une liste de users, et ce qu'ils peuvent faire comme modifs, avec un admin qui peut faire ce qu'il veut. Rien que des choses très banales, ça n'a vraiment rien de très particulier comme appli, c'est même hyper-classique depuis au moins les années 1960. Ton tuteur de stage n'est pas développeur, visiblement... Rien que l'idée de faire ça sous excel est absurde, alors que Access, déjà, fait ça mieux. D'ailleurs, en fait, le mieux c'est d'utilsier Access, à mon avis.
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  2. #22
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Encore une fois, le probleme ne vient pas de xml ou de droits qu'auront ou pas les utilisateurs. A partir du moment ou il peut y avoir 2 personnes qui modifient un meme fichier, il y a un risque en cas de modification simultanée. Il faut donc voir avec ton tuteur si le risque de corruption de données est acceptable. Et si non, utiliser une BDD. Il n'y a pas 36000 solutions. On peut tourner autour du pot encore longtemps, en parlant de droits, de sécurité ou de serveur mais on en reviendra toujours au meme point.

  3. #23
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Trés bien merci,
    Je vais essayer de négocier ça avec lui, je reviendrai vous dire ce qu'il m'a dit

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Au passage, faire une petite application "serveur" qui tournerais sur la machine du tuteur en démarrage automatique. C'est moche, c'est anti production, mais au moins, le problème de concurrence est réglé.

    De plus, si chacun peux changer des données différents, il serait plutot préférable de partir de l'idée que chaque "employé" a son propre fichier avec uniquement ses données et que l'application merge ces fichiers à l'écran, non?

  5. #25
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Citation Envoyé par BenWillard Voir le message
    D'ailleurs, en fait, le mieux c'est d'utilsier Access, à mon avis.
    Je plussoie

    ... si les postes sont sous Windows.

    Cela me fait bizarre dans un forum java de recommander Access mais, si tu connais un peu Access, tu vas pouvoir régler le problème en deux coups de cuillère à pot.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Attention que, si le réseau est controlé par l'administration centrale, une base de données access, autant que je sache, a la réputation de pas mal "crier" sur le réseau

  7. #27
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Bonjour Tchize

    Qu'entends-tu par crier ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    beaucoup de broadcast

  9. #29
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Ah ben ça c'est possible.

    La gestion de verrou par Access se fait avec un petit fichier ldb placé à côté de la base mdb.
    Dans ce système, il n'y a pas de serveur de base et les accès concurrents sont gérés par chaque Access installés sur les postes !

    En pratique ça marche bien tant qu'on ne dépasse pas une dizaine d'utilisateurs.
    Donc pour @Carvallegro cela devrait convenir s'il ne trouve pas son bonheur avec Java.

    En java, il est clair que la solution la moins mauvaise est celle que tu as suggéré :
    - le fichier XML installé sur un poste
    - une application serveur en java qui attend les requêtes des utilisateurs sur un port convenu
    et qui se charge des ajouts/modifications/suppressions/consultation
    - l'application cliente (sur les postes) qui communique avec le serveur par socket
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Ah ben ça c'est possible.

    La gestion de verrou par Access se fait avec un petit fichier ldb placé à côté de la base mdb.
    T'es sûr qu'il n'y a que ça? Parce que, dans l'absolu, ce n'est pas fiable. tu pourrais avoir 2 poste qui crée ce fichier en même temps. Le protocole CIFS dans certaines condition va laisser passer.... C'est justement ce qui empêche SQLLite de travailler en montage réseau :/

  11. #31
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Ben oui.
    Ce fichier est créé lors du premier accès à la base mdb par Access.
    Ensuite chaque utilisateur qui se connecte sera enregistré dans le ldb avec des infos de sécurités
    et des locks sur des pages de données (je n'ai pas les détails mais en gros c'est ça. Plus d'info : http://support.microsoft.com/kb/208778/fr)

    Après, quand tout le monde est parti, le fichier ldb est supprimé.

    Le système n'est théoriquement pas idéal mais franchement, après l'avoir utilisé pendant des années
    les plantages sont rares à condition de bien concevoir la base.
    J'ai même fait une gestion de production pour une usine qui tournait 24h/24h avec une base Access.
    Il n'y avait que 20 postes de connectés (cela dit, après 3 ans d'utilisation, on est quand même passé à Oracle).

    Il est clair que la solution Access est limitée à quelques utilisateurs.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

Discussions similaires

  1. Ecriture multiple dans un fichier Excel
    Par oregos dans le forum MATLAB
    Réponses: 6
    Dernier message: 14/03/2007, 14h50
  2. ecriture lecture dans un fichier
    Par maz dans le forum C
    Réponses: 3
    Dernier message: 19/10/2006, 11h21
  3. [C#]Ecriture/Suppression dans un fichier
    Par torNAdE dans le forum Windows Forms
    Réponses: 8
    Dernier message: 11/05/2006, 09h11
  4. Ecriture simultanée dans un fichier
    Par doudou34 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 30/09/2005, 14h26
  5. écritures concurrentes dans un fichier
    Par djmalo dans le forum C
    Réponses: 9
    Dernier message: 06/03/2005, 01h45

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