Précédent   Forum du club des développeurs et IT Pro > Webmasters - Développement Web > Autres langages pour le Web > Coldfusion
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/05/2010, 19h30   #1
patrick1140
Invité de passage
 
Inscription : 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
patrick1140 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2010, 01h36   #2
djtadpole
Futur Membre du Club
 
Inscription : mars 2007
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 29
Points : 19
Points : 19
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
djtadpole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2010, 09h27   #3
jowo
Membre Expert
 
Homme Fabio
Développeur Java
Inscription : octobre 2002
Messages : 1 358
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 358
Points : 1 905
Points : 1 905
Envoyer un message via Skype™ à jowo
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
jowo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 01h22   #4
LarZuK
Nouveau Membre du Club
 
Inscription : décembre 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 31
Points : 30
Points : 30
cflock ? sans définir de scope ?
LarZuK est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h42.


 
 
 
 
Partenaires

Hébergement Web