Verrouillage d'enregistrement

Lorsque plusieurs utilisateurs tentent simultanément de mettre à jour un enregistrement, le modèle de verrouillage de la base de données garantit que la mise à jour de chaque utilisateur réussit en tant que telle, mais chaque mise à jour écrase la mise à jour précédente.

Un modèle de verrouillage explicite (pessimiste) empêche les pertes de mises à jour des données imprévues et contrôle l'enchaînement d'activités lorsque des mises à simultanées sont effectuées par plusieurs utilisateurs.

Vous pouvez utiliser deux modèles de verrouillage :

Verrouillage optimiste

Le modèle de verrouillage optimiste permet à plusieurs utilisateurs d'afficher et de tenter de modifier un enregistrement en même temps mais n'autorise que le premier utilisateur à valider ses changements. Les utilisateurs ne sont pas informés que d'autres utilisateurs tentent également de mettre à jour l'enregistrement.

Les changements apportés à l'enregistrement sont validés lorsque l'enregistrement est validé. Si un utilisateur a déjà réussi à mettre à jour l'enregistrement, les utilisateurs ayant effectué des mises à jour simultanées sont informés de l'existence d'un conflit lorsqu'ils tentent de soumettre leurs mises à jour .

Par défaut, les enregistrements ne sont pas verrouillés tant qu'ils sont affichés dans une application client ClearQuest. En conséquence, les conceptions de schéma utilisant un site unique ou un environnement répliqué doivent en tenir compte.

Pour assurer l'intégrité des données, lorsqu'un utilisateur clique sur le bouton Appliquer, un contrôle est effectué pour déterminer si un autre utilisateur a mis à jour l'enregistrement et validé ses changements pendant que les changements étaient encore en cours. Si tel est le cas, les mises à jour de l'utilisateur ne peuvent pas être validées sur la base de données car cela entraînerait la perte de certains changements effectués par d'autres utilisateurs. L'utilisateur essayant de valider ses changements après la mise à jour de l'enregistrement par un autre utilisateur reçoit un message d'erreur signalant que ses changements n'ont pas été validés sur la base de données.

Dans les scénarios complexes impliquant des mises à jour coordonnées sur plusieurs enregistrements liés, une attention particulière doit être apportée afin de s'assurer que ce comportement n'entraîne pas d'incident. Le verrouillage optimiste étant effectif sur chaque enregistrement individuellement, votre application doit garantir que les enregistrements sont mis à jour dans le bon ordre et gérer les échecs de mise à jour d'un enregistrement subalterne si un autre utilisateur l'a mis à jour entre le début de votre action et la validation de vos changements. Votre conception de schéma peut relancer l'opération, accepter l'échec et annuler la mise à jour de l'enregistrement parent ou valider la mise à jour de l'enregistrement parent même si la mise à jour de l'enregistrement subalterne a échoué.

Votre conception de schéma doit gérer les cas où un enregistrement est modifiable,
  • mais où la modification échoue car l'enregistrement a été modifié par un autre utilisateur pendant la modification
  • et où un enregistrement subalterne est modifiable mais où la modification échoue car l'enregistrement subalterne a été modifié par un autre utilisateur pendant la modification

Verrouillage pessimiste

Le verrouillage pessimiste fournit un mécanisme qui empêche les situations dans lesquelles plusieurs utilisateurs éditent simultanément un enregistrement. Le modèle de verrouillage pessimiste applique une modification séquentielle des enregistrements et empêche les mises à jours simultanées des enregistrements. Dès qu'un utilisateur commence à mettre à jour l'enregistrement, ce modèle verrouille l'enregistrement. Tout autre utilisateur qui tente de mettre à jour cet enregistrement est informé qu'un autre utilisateur effectue actuellement une mise à jour et qu'il ne peut pas modifier l'enregistrement car il est verrouillé. Les utilisateurs souhaitant mettre à jour simultanément l'enregistrement doivent attendre que le premier utilisateur ait fini de valider l'enregistrement. Le verrou est alors accordé à l'utilisateur suivant qui peut effectuer ses changements après ceux de l'utilisateur précédent. Ce modèle évite les incidents de résolution de conflit en empêchant les conflits. Les mises à jour sont sérialisées et chaque mise à jour consécutive commence à partir de l'enregistrement déjà mis à jour par les changements apportés par les utilisateurs précédents.

L'acquisition d'un verrou est cependant nécessaire pour empêcher les autres utilisateurs de mettre à jour l'enregistrement. Ce modèle nécessite une stratégie de gestion des verrous qui gère :
  • L'obtention du verrou
  • L'information des utilisateurs qui souhaitent mettre à jour simultanément l'enregistrement qu'ils doivent attendre que le verrou soit libéré
  • L'information des utilisateurs de la libération du verrou
  • La libération des verrous abandonnés (lors d'une panne du système ou d'un oubli de validation d'une mise à jour)

Pour utiliser d'un verrouillage d'enregistrement pessimiste, un code de point d'ancrage doit être ajouté aux types d'enregistrement qui l'utiliseront. Le code de point d'ancrage doit être ajouté en tant que nouvelle action de type BASE pour chaque type d'enregistrement. La suppression manuelle des verrous peut-être effectuée avec un code de point d'ancrage implémenté en tant qu'alias de script d'enregistrement. Vous pouvez utiliser un requête ClearQuest pour identifier les enregistrements verrouillés en recherchant les enregistrements dont la zone locked_by a une valeur définie. Le colonne de base de données locked_by user est une colonne d'entier qui enregistre l'ID de connexion de l'utilisateur lorsqu'un enregistrement est verrouillé.

Le verrouillage pessimiste est un modèle très utile lorsque des véritables mises à jour simultanées ne sont pas nécessaires et que les mises à jours suivantes peuvent être différées jusqu'à ce que la précédente soit terminée. Cela implique généralement que les mises à jour sont effectuées dans un intervalle de temps très court. Les mises à jour qui conservent le verrou pendant un intervalle de temps assez long empêchent les autres utilisateurs de mettre à jour l'enregistrement.


Retour d'informations