Écriture sale

Définition, exemples et bonnes pratiques

À retenir

  • Risque de perte irrémédiable de données.
  • Survient lors de modifications simultanées sur une même ressource.
  • Nécessite des mécanismes de contrôle de concurrence pour être évité.

L'écriture sale désigne une situation problématique où une modification est enregistrée dans une base de données en se basant sur une version périmée de l'information. C'est un peu comme si deux personnes modifiaient simultanément la même case d'un tableau Excel partagé : la deuxième personne enregistre ses changements sans voir ceux de la première, effaçant ainsi son travail par accident.

Étymologie

Il s'agit d'une traduction directe de l'anglicisme dirty write. En informatique, l'adjectif dirty (sale) qualifie souvent une donnée qui a été modifiée en mémoire mais qui n'est pas encore synchronisée ou validée de manière sécurisée avec le stockage principal.

Exemples d'usage

  • Deux agents de voyage réservent le dernier siège d'un avion au même millième de seconde : l'un risque d'écraser la réservation de l'autre.
  • Un système d'inventaire où deux préparateurs de commande déduisent un article du stock simultanément, aboutissant à un calcul final erroné.

Cas d'usage

Ce concept intervient principalement dans la gestion des bases de données (SGBD) et le développement d'applications multi-utilisateurs où la concurrence (plusieurs accès simultanés) doit être gérée.

Bonnes pratiques

Pour éviter ce piège, il est conseillé d'utiliser des niveaux d'isolation de transactions robustes ou des mécanismes de verrouillage (locking). On peut aussi utiliser le versioning : avant d'écrire, le programme vérifie que le numéro de version de la donnée est toujours le même que celui qu'il a lu au départ.

Synonymes

perte de mise à jour lost update écriture incohérente

Antonymes

écriture atomique isolation sérialisable

Conseil

Si vous débutez en base de données, renseignez-vous sur le concept ACID. Il s'agit d'un ensemble de règles garantissant que vos transactions (opérations d'écriture) se déroulent de manière sûre et sans erreurs de ce type.

Questions fréquentes

Quelle est la différence avec une lecture sale ?

La lecture sale consiste à lire une donnée qui n'a pas encore été validée, tandis que l'écriture sale consiste à écraser une donnée en se basant sur une version déjà dépassée.

Est-ce grave ?

Oui, car cela corrompt l'intégrité des données sans que les utilisateurs ne s'en rendent forcément compte immédiatement.