Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Cohérence forte et cohérence à terme

Après cette leçon: Je peux dire ce qu’un lecteur voit après une écriture et quel compromis cela coûte.

Leçon de 55 min5 commandesLab Valkey : apprendre un magasin clé-valeur compatible Redis, avec expiration, listes et compteurs

Que voit-on juste après une écriture ?

La cohérence dit ce qu’un lecteur voit juste après une écriture, quand une donnée existe en plusieurs copies. Elle décide si tout le monde lit tout de suite la nouvelle valeur, ou si certains lisent encore l’ancienne.

Inès paie 20 € et son solde passe de 100 € à 80 €. Si elle ouvre l’application sur une copie en retard, elle voit encore 100 €.

À la fin de cette leçon

Remarque

Je peux dire ce qu’un lecteur voit après une écriture et quel compromis cela coûte.

Mots clés

MotCe que ça veut dire
Cohérence fortetout lecteur voit la dernière écriture terminée
Cohérence à termeles copies finissent par être égales, pas tout de suite
Lecture périméeune lecture qui rend une ancienne valeur
Délai de propagationle temps qu’une écriture met à atteindre une copie
Compromisun gain d’un côté qui coûte quelque chose de l’autre

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

La cohérence forte : toujours la dernière valeur

Avec la cohérence forte, une lecture qui commence après la fin d’une écriture voit cette écriture, quelle que soit la copie interrogée. Le système se comporte comme s’il n’y avait qu’une copie.

Pour y arriver, une écriture n’est terminée que lorsque les copies concernées l’ont reçue. Cela prend du temps, et cela échoue si une copie ne répond pas.

Fabriquer un petit client nommé v

Commande
v() ( printf '%s\r\n' "$*" | nc -w 1 valkey 6379 )

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire le solde d’Inès

Commande
v SET dist:solde:ines 100

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Le relire

Commande
v GET dist:solde:ines

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Écrire le solde après le paiement

Commande
v SET dist:solde:ines 80

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Relire : l’ancienne valeur a disparu

Commande
v GET dist:solde:ines

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

La cohérence à terme : les copies se rattrapent

Avec la cohérence à terme, une écriture est confirmée dès que le primaire l’a reçue. Les autres copies la reçoivent après un délai de propagation. Si plus rien n’est écrit, toutes finissent par être égales.

Entre-temps, une lecture sur une copie en retard est une lecture périmée.

Exemple : les lectures d’Inès au fil du temps

InstantPrimaireRéplique (2 s de retard)Lecture sur la réplique
0 s : solde de départ100rien encorerien
4 s100100à jour
5 s : paiement de 20 €80100périmée
7 s8080à jour

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Rejouer des écritures et des lectures

Code: python
# Le primaire reçoit deux écritures. La réplique les voit 2 secondes plus tard.
ecritures = [[0, 100], [5, 80]]
delai = 2
for instant in [1, 4, 6, 7, 8]:
    primaire = None
    replique = None
    for ecriture in ecritures:
        if ecriture[0] <= instant:
            primaire = ecriture[1]
        if ecriture[0] + delai <= instant:
            replique = ecriture[1]
    print("t =", instant, "primaire", primaire, "réplique", replique)
# Passez le délai à 0 : les deux colonnes sont toujours égales.

Le choix dépend de ce qu’une erreur coûte

On ne peut pas avoir à la fois l’attente la plus courte et la valeur toujours à jour. Il faut choisir selon l’usage.

Un solde bancaire ou le dernier billet d’un concert demandent la cohérence forte : une valeur périmée coûte de l’argent. Un compteur de mentions « j’aime » peut attendre quelques secondes sans dommage.

Une erreur fréquente

Attention

On croit souvent que « à terme » veut dire « parfois faux pour toujours ». Ce n’est pas le cas : sans nouvelle écriture, les copies deviennent égales. Le risque est une lecture périmée pendant le délai, pas une valeur fausse définitive.

À propos de ce labo et de sa source: Lab Valkey : apprendre un magasin clé-valeur compatible Redis, avec expiration, listes et compteurs

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.