Lecture non répétable

Définition, exemples et bonnes pratiques

À retenir

  • Le phénomène se produit uniquement à l'intérieur d'une seule et même transaction.
  • Il est causé par une modification validée par un tiers entre deux lectures.
  • Le réglage du niveau d'isolation permet de choisir entre performance et précision absolue.

Une lecture non répétable se produit dans une base de données lorsqu'un utilisateur lit une information deux fois au cours d'une même opération, mais que la valeur a changé entre les deux lectures. C'est comme si vous consultiez le prix d'un billet de train et qu'au moment de cliquer pour l'acheter, le prix affiché avait déjà changé parce qu'un autre client a validé une transaction entre-temps.

Étymologie

Traduction directe de l'anglais non-repeatable read. Le terme souligne l'impossibilité de reproduire (répéter) un résultat identique lors d'un second accès à la même donnée au sein d'un bloc de travail appelé transaction.

Exemples d'usage

  • Une application de gestion de stock lit qu'il reste 5 articles. Un client achète le dernier article sur le site. Lorsque l'application relit le stock une seconde plus tard pour confirmer l'expédition, elle trouve 4 articles.
  • Un logiciel de reporting calcule la moyenne des salaires ; pendant le calcul, un employé est augmenté, ce qui fausse la cohérence de la lecture globale.

Cas d'usage

Ce concept est crucial dans la gestion des bases de données relationnelles (SQL) lors de l'utilisation de transactions. Il intervient dès que plusieurs utilisateurs ou programmes accèdent et modifient simultanément les mêmes données.

Bonnes pratiques

Si la cohérence stricte des données est indispensable (comme dans le secteur bancaire), il faut augmenter le 'niveau d'isolation' de la transaction (en choisissant REPEATABLE READ ou SERIALIZABLE). Cependant, soyez vigilant : plus l'isolation est forte, plus la base de données risque de ralentir car elle doit 'verrouiller' les informations pour empêcher les autres de les modifier.

Synonymes

lecture non reproductible

Antonymes

lecture répétable lecture consistante

Conseil

Lorsque vous développez une application, demandez-vous toujours : 'Est-ce grave si cette valeur change pendant que mon programme tourne ?'. Si la réponse est oui, renseignez-vous sur les niveaux d'isolation SQL de votre base de données.

Questions fréquentes

Est-ce une erreur informatique ?

Non, c'est un comportement standard des bases de données réglées sur des niveaux d'isolation intermédiaires pour favoriser la rapidité.

Quelle est la différence avec une 'lecture fantôme' ?

La lecture non répétable concerne une donnée qui change de valeur, alors que la lecture fantôme concerne l'apparition de nouvelles lignes de données qui n'existaient pas lors de la première requête.