Transactions nécessaires ou non ?

Transactions nécessaires ou non ? - SQL/NoSQL - Programmation

Marsh Posté le 16-10-2015 à 12:52:09    

Hello,
 
Ma situation : j'ai plusieurs scripts qui sont lancés régulièrement (via crontab) pour mettre à jour les données d'une partie de ma table. Plusieurs scripts sont susceptibles d'agir en même temps sur une même ligne de ma table, mais à aucun moment sur les mêmes champs de cette ligne. Autrement dit, mon premier script va par exemple modifier le champ A et le champ B de ma ligne n°4, et il est possible que, au même moment, un autre script modifie les champs C et D de cette même ligne.
Du coup, ma question : ai-je besoin d'utiliser des transactions pour m'assurer que tout se passe bien ? Ou est-ce que je peux faire sans les transactions et ça posera pas de problème ?
 
Merci d'avance :)

Reply

Marsh Posté le 16-10-2015 à 12:52:09   

Reply

Marsh Posté le 16-10-2015 à 15:39:11    

saint malo a écrit :

Hello,
 
Ma situation : j'ai plusieurs scripts qui sont lancés régulièrement (via crontab) pour mettre à jour les données d'une partie de ma table. Plusieurs scripts sont susceptibles d'agir en même temps sur une même ligne de ma table, mais à aucun moment sur les mêmes champs de cette ligne. Autrement dit, mon premier script va par exemple modifier le champ A et le champ B de ma ligne n°4, et il est possible que, au même moment, un autre script modifie les champs C et D de cette même ligne.
Du coup, ma question : ai-je besoin d'utiliser des transactions pour m'assurer que tout se passe bien ? Ou est-ce que je peux faire sans les transactions et ça posera pas de problème ?
 
Merci d'avance :)


A priori, les transactions n'ont rien à voir avec ça.
Il s'agira plutôt de problème de lock que de transaction.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 16-10-2015 à 16:03:40    

Ok, merci ! Je vais me renseigner sur le sujet des locks (sauf si tu as un lien vers un tuto clair de comment ça fonctionne à me conseiller).
 
PS : du coup, ne te fatigue pas trop sur l'autre topic si je n'ai pas besoin des transactions :) (quoique j'avoue que j'aimerais bien cerner l'origine du problème, par curiosité intellectuelle)

Reply

Marsh Posté le 16-10-2015 à 16:08:14    

saint malo a écrit :

Ok, merci ! Je vais me renseigner sur le sujet des locks (sauf si tu as un lien vers un tuto clair de comment ça fonctionne à me conseiller).

 

PS : du coup, ne te fatigue pas trop sur l'autre topic si je n'ai pas besoin des transactions :) (quoique j'avoue que j'aimerais bien cerner l'origine du problème, par curiosité intellectuelle)


Si ton script fonctionne de base, t'embêtes pas. Les locks sont normalement transparent à ton niveau, c'est le serveur de BDD qui gère ça.

 

En l’occurrence, je serais curieux de savoir malgré tout ce qu'il se passe (rapport à l'autre topic) ;)


Message édité par kao98 le 16-10-2015 à 16:12:50

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 16-10-2015 à 17:01:31    

Ben en gros, comme je le dis en premier post, j'ai plusieurs scripts susceptibles d'agir chacun sur des champs (forcément différents, aucun de mes scripts n'agit sur un champ sur lequel un autre script agit) d'une (ou plusieurs) mêmes lignes, et je veux m'assurer que ça fonctionnera même si deux scripts (ou plus) modifient la même ligne en même temps. A partir de vagues souvenirs, j'ai pensé aux transactions, mais j'étais pas certain d'en avoir besoin, d'où la question sur ce topic. Et si j'en avais besoin, alors j'avais un problème parce que ça voulait pas bien marcher, d'où l'autre topic :)

 

Merci pour ton aide en tout cas, pour te remercier, si tout se casse, je te fais un procès :o

Message cité 1 fois
Message édité par saint malo le 16-10-2015 à 17:02:40
Reply

Marsh Posté le 23-10-2015 à 20:24:22    

saint malo a écrit :

je veux m'assurer que ça fonctionnera même si deux scripts (ou plus) modifient la même ligne en même temps.


 
Sur un SGBD relationnel qui respecte les propriétés ACID lorsque tu update une ligne un lock est posé à minima sur la ligne, et tant qu'il n'est pas levé ton autre script ne pourra pas mettre à jour cette ligne. C'est pour garantir la cohérence des données.
Sur d'autres types de SGBD (NoSQL) je ne connais pas le fonctionnement mais il me semble que les propriétés ACID ne sont pas respectées (enfin pas toutes...) du coup mettre à jour la même ligne en même temps c'est peut être possible, à vérifier.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed