Jean-François wrote the following on 12.01.2007 17:12 :
apparaissent lorsqu’on n’utilise pas les contraintes d’intégrité
référentielle.Voir à ce sujet, l’optimist et le pessimist locking. Peut-être
pas la panacée, je ne suis pas un spécialiste de la question.
Ca ne résoud pas le problème des race-conditions sur les références. Ca
aide beaucoup sur les modifications concurrentes d’un même objet (encore
que cela ne fait que réduire la taille de la fenêtre temporelle pendant
laquelle un accès concurrent n’est pas détectable à un point où en
pratique il est très peu probable qu’on ne le détecte pas :
théoriquement il y a encore un défaut).
Sinon, il faut bien voir que si Rails n’encourage pas l’utilisation
de contraintes d’intégrité référentielle, il ne les interdit pas non
plus.
C’est clair ! Ce n’est pas pour rien que professionnellement je ne fais
que du dev Rails depuis presque un an Rails est suffisamment souple
pour qu’on contourne très facilement ses limitations à l’aide de
contributions externes ou de “monkey patching” personnels.
Et oui, il y a des manques dans ActiveRecord, comme le
Two-Phase commit distribué (là encore, pas spécialiste).
J’ai eu de longues discussions sur le sujet avec plusieurs personnes
familières du sujet et ce qu’il en sort c’est que :
1/ On est dans des cas où on ne maîtrise pas totalement l’archi (sinon
on aurait fait une seule base). Donc on rentre dans du spécifique.
2/ Il existe souvent des solutions de contournement applicatives (la
conservation de plusieurs versions des objets en base permet souvent
d’éliminer des problèmes solutionnés par le Two-Phase commit).
3/ J’ai des doutes sur le fait que le Two-Phase commit soit sans faille
(à la lecture de la théorie je vois encore une faille au moment de la
deuxième phase de commit, et je n’ai encore jamais rencontré un
spécialiste qui a pu me démontrer que c’était effectivement robuste).
Personnellement le point 1/ fait que je ne me sens pas trop concerné :
mon domaine n’est pas l’intégration mais la conception. Ca peut gêner
d’autres profils que le mien par contre.
Lionel.