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

 Firebird Discussion :

Quand on a des accès concurrents, on utilise les transactions mais pas que


Sujet :

Firebird

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 59
    Points : 37
    Points
    37
    Par défaut Quand on a des accès concurrents, on utilise les transactions mais pas que
    Doit-on aussi changer sa façon de programmer en delphi??

    Doit-on faire attention à où mettre certains tests sur des objets de la base de données dans la partie client (delphi)?

    Ou doit-on programmer comme d'habitude et les transactions font le reste pour assurer la cohérence des données?

    Je dis ça parce que je viens de faire quelques expériences sur deux transactions utilisant un objet concurrent et je me suis rendu compte que malgrès l'utilisation des transactions (j'ai testé les modes [Snapshot] et [ReadCommitted]), les résultats obtenus étaient invraisemblables! Style le nombre de places libres dans un avion négatif!

    J'en conclus que lorsque l'on programme en delphi en environnement concurrent, on ne réfléchit pas de la même manière qu'en mode monoposte, je me trompe?
    Si c'est le cas, avez-vous des conseils à me donner ou de la doc à me proposer?

    Merci!

  2. #2
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    parce que tu ne pousses pas la logique jusqu'au bout
    si par exemple tu met une contrainte dans ta table disant que le nombre de place dans l'avion ne peut être négatif, ton problème est résolu
    mais ce n'est pas un problème de niveau d'isolement de transaction
    juste un problème de contrainte des données, ce n'est pas la même chose
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 59
    Points : 37
    Points
    37
    Par défaut
    les places d'avion n'étaient qu'un exemple. je peux vous trouver un autre cas ou il n'y aura pas de contraine possible à appliquer pour nous sortir de la! par exemple, la lecture fantôme que le [Committed] et le [Snapshot] permettent tout à fait (voir l'article : C:\Users\user\Desktop\site\articlestransactions [Firebird FR].mht) :

    Exemple :

    Transaction1

    si (select count(*) from vol) = 0 alors
    traitement1
    sinon
    traitement2

    Commit transaction1

    Transaction2

    insert into vol values('3')
    commit transaction2


    Si la transaction1 s'exécute en premier suivie de la transaction2. Supposons que le que le test de la traansaction1 donne 0 (ie, pas d'enregistrements dans la table Vol) et qu'avant que le traitement1 ne débute, la transaction2 exécute son commit, le nombre d'enregistrements dans la table Vol augmentera de 1. La transaction1 exécutera malgrès cela le traitement1 au lieu du 2 et ça donnera forcément, un jour ou l'autre des résultats imprévisibles!

    Certes, dans l'exemple on ne voit pas trop les eventuels dégats mais quand même, exécuter un traitement au lieu d'un autre ne peut pas être bon..

    D'ailleurs, les modes snapshot et read commited peuvent laisser passer la lecture fantôme et l'ecriture biaisée(voir le même article). Inquiétant non?

    A moins que j'ai mal compris..

  4. #4
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    mal compris pas vraiment, mais une connaissance que partielle oui
    et inquiétant surement pas
    il n'y a pas que snapshot et read committed, il y a aussi SNAPSHOT TABLE STABILITY
    mais aussi le select for update
    voir dans les cas necessitant un controle maximum, un select for update with lock
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 59
    Points : 37
    Points
    37
    Par défaut
    mal compris pas vraiment, mais une connaissance que partielle oui

    je débute Mr makowski, je débute...

  6. #6
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    ici
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

Discussions similaires

  1. Réponses: 9
    Dernier message: 30/04/2008, 09h55
  2. [SQL] Procédures de tests des accès concurrents
    Par remyli dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/02/2008, 09h13
  3. Gestion des accès concurrents sous DELPHI/PARADOX.
    Par tarbala dans le forum Bases de données
    Réponses: 8
    Dernier message: 04/02/2008, 19h13
  4. Gestion des accès concurrent
    Par nicoaix dans le forum Access
    Réponses: 3
    Dernier message: 06/07/2006, 15h54
  5. Gestion des accès concurrents à une table
    Par kodo dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 20/06/2006, 14h05

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