Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité de passage
    Inscrit en
    mai 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 1
    Points : 0
    Points
    0

    Par défaut Problème Transactions SQL multiserveur

    Hello,

    Ai un probleme un peu pointu, des idées pour le résoudre mais préfere des avis avant....

    Vais essayer d'etre simple...

    On part sur la base d'un système bancaire qui tourne sur plusieurs serveurs et UNE base de données SQL..

    J'ai un probleme qui se produit une fois par mois environ ...

    Supposons qu'un client fasse un retrait d'argent et qu'exactement au même moment on lui paye ses intérets bancaires...

    Le but d'un mouvement financier est de prendre le solde précédent et de le mouvementer du montant (+ ou -) de la transaction...

    Or quand je regardes mes logs serveurs les 2 transactions se débutent (à la meme milliseconde pret) en même temps et prennent dont toutes les 2 le même solde précédent ce qui provoque une incohérence (détectées vu qu'on check toutes les nuits) du solde du client...

    Aucun lock au niveau du serveur ne peut fonctionner car ce sont plusieurs serveurs distincts qui font les transactions..

    Mon idée .. une table de locks temporaires au niveau sql qui contient l'id du client et qui empeche toute autre transation tant qu'un lock est présent... le hic ... si pour une raison quelquonque de lock reste.. client bloqué ...

    Je suis prenneur de toute idée

  2. #2
    Membre à l'essai
    Inscrit en
    mars 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 29
    Points : 21
    Points
    21

    Par défaut

    Bonjour,

    l'idée est bonne.
    Pour ton problème de lock bloqué, tu peux faire tourner un script qui déloque au bout d'un certain délai (ta table temporaire prend le moment du lock)
    A toi de voir si tu le déloques automatique ou pas.

    exemple pour un delock au bout de 30 secondes et un script qui tourne toutes les minutes :
    Lock se fait à 20:00:05
    A 20:01:00 le lock existe depuis 55 secondes (> 30 secondes) => Delock

  3. #3
    Membre Expert
    Homme Profil pro Fabio
    Développeur Java
    Inscrit en
    octobre 2002
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Nom : Homme Fabio
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2002
    Messages : 1 376
    Points : 1 901
    Points
    1 901

    Par défaut

    Bonjour,

    Il suffit d'utiliser correctement le mécanisme de transaction de ta base de données SQL. Pas besoin de réinventer la roue. Quelle base utilises-tu?
    Bien le bonjour chez vous
    Jowo

  4. #4
    Nouveau Membre du Club
    Inscrit en
    décembre 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 31
    Points : 32
    Points
    32

    Par défaut

    cflock ? sans définir de scope ?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •