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

Bases de données Delphi Discussion :

Enregistrements simultanés dans fichier


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Par défaut Enregistrements simultanés dans fichier
    Bonjour.

    Dans mon entreprise, nous avons hérité un logiciel dont nous ne possédons pas les sources.

    Ce programme qui a été conçu pour travailler en mode local est quand même installé sur le serveur et nous sommes deux utilisateurs de ce programme.

    Nous avons accès simultanément en lecture et en écriture à un seul fichier de données.

    Ma question est la suivante

    Si les deux utilisateurs effectuent un enregistrement au même moment dans le fichier de données, celui-ci risque t-il d'être détruit
    ou Windows gère t-il une file d'attente qui échelonne les enregistrements ?

    Nous avons effectué beaucoup de tests d'enregistrements simultanés sur une copie du fichier et nous ne sommes jamais
    parvenu à le détruire.

    Personnellement j'ai quand même un doute. Je n'ai pas trouvé de lecture précise à ce niveau.

    Quelqu'un peut-il apporter une réponse franche à notre préoccupation?

    Merci.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Détruire le fichier non, mais avoir une incohérence de données possible ... par contre, selon comment le programma a été fait, si il est vraiement fait pour le local, c'est disons la chance qui vous protège ... et faut-il encore que parfois, Windows ne refuse par l'ouverture du fichier en écriture à l'un des programmes parce qu'il n'y a pas de partage (par défaut il n'y en a pas)

    Si en fait, le programme avait été conçu pour supporter le multi-utilisateur (on ne sait jamais, un programmeur qui fait du zèle pour le plaisir de programmer un truc différent), il peut très bien attendre si le fichier est occupé, et afficher une erreur après n tentative, ou alors les fichiers sont ouverts en partage et dans ce cas, c'est au dernier qui a écrit qui à raison ... en fait, je n'ai jamais essayé de voir ce que cela donnait, un test à faire tien !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Par défaut
    Merci pour votre réponse.

    En fait il est affiché clairement sur le programme, qu'il n'a pas été développé pour travailler en réseau.

    Citation Envoyé par ShaiLeTroll Voir le message
    ou alors les fichiers sont ouverts en partage et dans ce cas, c'est au dernier qui a écrit qui à raison ...
    Au cours de nos tests nous avons effectivement constaté que c'est le dernier enregistrement qui est pris en considération. Ce genre de conflit éventuel ne nous dérange pas tellement. Chaque modification est datée dans un champ prévu à cet effet.

    C'est surtout la destruction totale éventuelle du fichier qui nous interpelle.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Je ne penses pas qu'il puisse y avoir une destruction du fichier à cause d'un accès concurrent, comme l'a fait remarqué ShaiLeTroll c'est plus le contenu du fichier qui va pâtir de ces accès en prenant la dernière modification comme celui ayant raison.

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Ensuite, si ce fichier contient des enregistrements de longueur fixe, normalement cela ne pose pas de problème lors de la modification d'un existant, ni lors d'un ajout, cela écrit toujours dans les bonnes cases ... même si le fichier a été modifié par un autre programme, le positionnement dans un fichier est logique et non physique lorsque l'on utilise les API Windows ... par contre, si le fichier est raccourci via un SetEndOfFile pour la suppression d'un enregistrement, et qu'un autre programme tentait d'écrire dans une zone qui n'existe plus, j'ignore ce qui peut se produire ...

    un fichier avec des enregistrements à longueur variable, c'est nettement plus casse-gueule, cela peut écrire n'importe quoi n'importe où ... et détruire la logique même du fichier, mais en général ces fichiers sont indexés (un autre fichier en parallèle), ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 68
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Ensuite, si ce fichier contient des enregistrements de longueur fixe, normalement cela ne pose pas de problème lors de la modification d'un existant, ni lors d'un ajout, cela écrit toujours dans les bonnes cases ...
    C'est Effectivement le cas, la longueur totale du fichier est toujours multiple de UN enregistrement.

    Merci à ShaiLeTroll et à Aka Guymelef pour vos informations.

Discussions similaires

  1. Problème Enregistré informations dans fichier .
    Par Xtremmax dans le forum VB.NET
    Réponses: 9
    Dernier message: 04/04/2011, 15h31
  2. Enregistrer picture dans fichier bmp pour imprimer ?
    Par charif591 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 23/11/2010, 20h37
  3. [1.x] Relation n:n, enregistrement simultané dans les deux tables
    Par etoileweb dans le forum Symfony
    Réponses: 0
    Dernier message: 11/11/2010, 17h19
  4. Réponses: 3
    Dernier message: 19/12/2009, 21h22
  5. Réponses: 3
    Dernier message: 24/04/2007, 15h44

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