Transactions nécessaires ou non ? - SQL/NoSQL - Programmation
Marsh Posté le 16-10-2015 à 15:39:11
saint malo a écrit : Hello, |
A priori, les transactions n'ont rien à voir avec ça.
Il s'agira plutôt de problème de lock que de transaction.
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)
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)
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
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.
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