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

Autres Discussion :

Comment et où gérer les transactions ?


Sujet :

Autres

  1. #1
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 96
    Points : 110
    Points
    110
    Par défaut Comment et où gérer les transactions ?
    Les transactions (suite d'opérations atomiques) peuvent elles être gérées dans la BLL de manière efficace et performante ? N'est ce pas trop lourd ?

    La DAL n'est elle pas le lieu pour les transactions ?

    Ou plutôt les PS du SGBD (question performance et gestion auto par le SGBD .. commit ... rollback) mais là on perd la notion d'objet et de réutilisabilité ?

    MERCI

  2. #2
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    La notion de transaction est une notion métier pas d'accès aux données. En général, au sein d'une seule transaction, on fait plusieurs accès aux données en lecture/écriture.
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  3. #3
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 96
    Points : 110
    Points
    110
    Par défaut
    Donc lors d'un échec d'accès aux données il faut gérer soit même le rétablissement des données à l'initiale ?

  4. #4
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Cela se fait en effectuant un rollback sur la transaction, soit de façon intentionnelle, soit automatique (par un aspect par exemple).

    Bien que plusieurs écoles existent, il me semble plus approprié de démarquer les transactions au niveau BLL (de façon à réunir au sein d'une unique transaction un ensemble d'accès qui concourent à un but métier bien identifié).

  5. #5
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 96
    Points : 110
    Points
    110
    Par défaut
    Mais que les transactions soient sure et efficace il faut qu'elles soient au plu près du serveur donc dans une PS ... sinon gare au dead loack !

    Donc l'aspect métier se trouve donc dans le SGBD.

    Cela me parait contraire à la POO (réutilisabilité ...).

    Quelle est la bonne solution ?

  6. #6
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par brice01 Voir le message
    Mais que les transactions soient sure et efficace il faut qu'elles soient au plu près du serveur donc dans une PS ... sinon gare au dead loack !

    Donc l'aspect métier se trouve donc dans le SGBD.

    Cela me parait contraire à la POO (réutilisabilité ...).

    Quelle est la bonne solution ?
    C'est l'objet d'un long et mouvementé débat qui voit l'affrontement de deux visions. Celle que tu mets en avant, ou pour des question de performance ou de fiabilité, on exploite au maximum le potentiel de la base de données, et une autre vision qui consiste à faire reposer sur le sgbd la seule responsabilité de la persistance de l'information, sans aucune autre fonctionnalité métier.

    Pour le problème qui t'inquiète, lorsque la connexion avec le sgbd s'interrompt, il y a normalement libération des ressources. De ce fait, j'ai du mal à voir le deadlock dont tu parles ?

  7. #7
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2004
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 96
    Points : 110
    Points
    110
    Par défaut
    1.7. Où placer les transactions ? Sur le serveur ou sur le client ?
    OUI, mais... on peut gérer des transactions soit dans des procédures stockées au sein du serveur, soit dans du code client... Qu'est ce qui est préférable ?

    L'idée de manipuler des transactions depuis un code client (VB, Delphi, Java, C++...) est séduisante mais "casse gueule" et peut entraîner le pire du pire : un blocage total du serveur. En effet dès que l'on entame une transaction, le SGBDR pose les verrous adéquats sur les ressources visées par la procédure. Si le client perd la main sur son code et ne provoque jamais de COMMIT ou ROLLBACK, les ressources ne sont pas libérées et entraînent l'impossibilité pour les autres utilisateurs d'accèder aux données vérouillées. C'est pourquoi une logique transactionnelle doit toujours être exécutée au plus près du serveur et non sur le poste client, à moins que vous ayez prévue l'artillerie lourde : poste sur onduleur on line ou réseau électrique sur alimentation secourue, OS hyper stable, anti virus, etc...
    De plus, il convient que la procédure ne soit jamais en attente d'une manipulation de l'utilisateur (comme une demande de saisie ou de confirmation) car toute attente bloque les ressources un certain temps et met en attente d'autres utilisateurs. C'est alors le château de carte, chaque utilisateur attend qu'un autre libère les ressources et cela peut entraîner le blocage total du SGBDR, par exemple un verrou mortel...

    C'est pourquoi on veillera à placer les transactions, soit dans une procédure stockée (l'idéal en terme de sécurité et d'intégrité) soit dans des objets métiers appelés par une serveur d'application ou d'objet aussi bien sécurisé que le serveur SGBDR et dans un réseau connectiquement proche.
    Issue de SQLPro :
    http://sqlpro.developpez.com/cours/s...chniques/#L1.7

    Donc la vision qui l'emporte c'est celle du développeur objet car c'est qui décide de la structure de son code.
    A moins qu'il travaille en étroite collaboration avec un spéciale SQL et là il y aura un choc de vision différente, peut être sans issu.

    Quelles sont donc les pratiques les plus courantes ?

    MERCI

Discussions similaires

  1. Comment gérer les transactions convenablement ?
    Par Dufok dans le forum Accès aux données
    Réponses: 7
    Dernier message: 08/03/2010, 16h14
  2. Réponses: 13
    Dernier message: 02/12/2007, 12h39
  3. java/gérer les transactions d'un block
    Par snetechen dans le forum Général Java
    Réponses: 4
    Dernier message: 26/05/2007, 16h40
  4. gérer les transactions avec php/sql server
    Par loukili81 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/05/2007, 18h39
  5. Où gérer les transactions avec Firebird ?
    Par DMO dans le forum Débuter
    Réponses: 2
    Dernier message: 26/04/2005, 10h21

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