Ressource

Dans cette longue section dédiée aux transactions nous avons

  • revue la notion d’atomicité en SQL et en JAVA avec l’instruction setAutoCommit(true/false)
  • puis étudier en détail la notion d’isolation

Cette notion d’isolation nous a permis de comprendre comment on résout l’accès concurrent à la donnée

  • tout d’abord les SGBD implémente des mécanismes de Two-Phase Locking et de MVCC
  • mais, pour des raisons de performance nous ne souhaitons pas forcément les mettre en oeuvre complètement
  • ainsi, plusieurs niveaux d’isolation sont définis autorisant certaines anomalies

Mais malgré ce mécanisme, il nous reste le problème des transaction logiques, où ACID n’est pas suffisant

  • une solution naive (et fausse) de contrôler uniquement dans le code Java ne suffit pas
  • nous devons soit implémenter une approche pessimiste, mais qui va provoquer des latences
  • soit implémenter une approche optimiste qui consiste à détecter les conflits via @version