Vidéo 34 • Intégrité de Données
Le Verrouillage
Optimiste
Apprenez à détecter et empêcher les collisions de données quand plusieurs sites modifient le même enregistrement.
Le Drame du "Dernier Arrivé"
Mise à jour "Fantôme"
Le Site A modifie le client. 2 min après, le Site B modifie le MÊME client sans savoir que le Site A est passé avant.
SANS VERSIONING : Le Site B écrase le travail du Site A. La donnée est perdue.
La Garde Optimiste
Le serveur vérifie le numéro de version. Si celui du client est plus petit que celui du Cloud, la porte se ferme.
SOLUTION : "Désolé Site B, la donnée a changé entre temps. Rechargez-la."
Laboratoire : Détection de Conflit
Poste Paris
CLIENT_7F4D
Stock : 80
VER: 5
VER: 5
En attente de paquets...
Poste Lyon
CLIENT_7F4D
Stock : 75
VER: 5
L'Algorithme du Garde-Fou
Règle de l'Expert SaaS
Chaque table de votre analyse doit posséder une rubrique RowVersion (Entier 8 octets ou DateHeure précises).
À chaque modification réussie sur le Cloud, le serveur incrémente ce numéro.
"Si (Version_Reçue < Version_Cloud) ALORS REJET."
Metadata Row
CURRENT_VERSION = 102
Implémentation de l'API Cloud
// 1. On lit l'enregistrement actuel sur le serveur Cloud HLitRecherchePremier(F_CLIENT, ID, stMonPaquetRecu.ID) // 2. VERROUILLAGE OPTIMISTE : On compare les versions SI F_CLIENT.RowVersion > stMonPaquetRecu.Version ALORS // La donnée a été modifiée par un autre site entre temps ! HTTPRéponse(409, "CONFLICT_ERROR") RETOUR FIN // 3. OK : On applique les modifs et ON INCRÉMENTE LA VERSION F_CLIENT.RowVersion++ HModifie(F_CLIENT)