À retenir
- Ne bloque pas l'accès aux autres utilisateurs pendant la modification.
- Repose sur un système de versionnement (numéro de version ou date).
- Améliore la fluidité et les performances globales du système.
- Déplace la gestion du conflit au moment de l'écriture finale.
Le verrouillage optimiste est une méthode de gestion des accès simultanés à une donnée qui part du principe que les conflits entre utilisateurs sont rares. Contrairement à un verrou classique qui bloque l'accès, cette technique laisse tout le monde lire et modifier l'information librement, mais vérifie au dernier moment (lors de l'enregistrement) si quelqu'un d'autre a modifié la donnée entre-temps.
Étymologie
Traduction directe de l'anglais optimistic locking. Le terme « optimiste » souligne la confiance du système dans le fait que les collisions de données ne se produiront probablement pas. Il s'oppose au verrouillage « pessimiste », qui part du principe qu'un conflit va arriver et bloque donc la ressource préventivement.
Exemples d'usage
- Gestion de stock : Deux employés ouvrent la fiche d'un même produit. Le premier réduit le stock de 10 à 8 et enregistre. Quand le second tente de passer de 10 à 5, le système détecte que la valeur n'est plus 10 et refuse la modification pour éviter une erreur de calcul.
- Édition de wiki : Si deux contributeurs modifient le même paragraphe, le système compare les versions au moment de la sauvegarde pour signaler un conflit de modification au deuxième arrivant.
Cas d'usage
On l'utilise principalement dans les applications web à fort trafic, les bases de données distribuées et les systèmes où les lectures sont beaucoup plus fréquentes que les écritures. C'est idéal pour éviter de ralentir un système en « gelant » des données inutilement.
Bonnes pratiques
Il est recommandé d'ajouter une colonne de version (un nombre entier qui s'incrémente) ou un horodatage (timestamp) à chaque ligne de la base de données. Il faut également toujours prévoir un mécanisme dans l'interface utilisateur pour gérer l'échec de l'enregistrement (par exemple, proposer de fusionner les modifications ou de recharger la page).
Synonymes
Antonymes
Conseil
Si vous débutez en développement, privilégiez le verrouillage optimiste pour vos applications web. C'est la méthode standard car elle évite qu'un utilisateur ne bloque une donnée indéfiniment s'il oublie de fermer son navigateur ou s'il perd sa connexion internet.
Questions fréquentes
Que se passe-t-il en cas de conflit ?
Le système rejette la demande de mise à jour. L'application doit alors informer l'utilisateur que les données ont changé et lui demander de renouveler son action après avoir consulté les nouvelles informations.
Est-ce plus rapide que le verrouillage pessimiste ?
Oui, pour la lecture et la navigation globale, car aucune ressource n'est réellement verrouillée. Cependant, cela demande plus de travail au niveau du code de l'application pour gérer les échecs d'enregistrement.