Impact sur les Performances
La lecture pour le client
Pour les valeurs de CL :
ONE : Une augmentation du RF améliore les performances en lecture du point de vue du client. Il y a plus de chance que le client demande la donnée à un nœud qui la contient et donc cette dernière serait retournée plus rapidement. GAIN
QUORUM/ALL : Une augmentation du RF augmenterai le nombre de nœuds devant être consultés avant que la donnée ne soit retournée, ce qui augmente le temps de réponse. PERTE
L'écriture pour le client
Pour les valeurs de CL :
ONE : Une augmentation du RF n'impacte pas le temps mis par le cluster à valider l'écriture du client. (le noeud sur lequel la donnée va être écrite dépend de la clé de partition et non du RF). IDEM
QUORUM/ALL : Une augmentation du RF augmenterai le nombre de nœuds devant valider l'écriture de la donnée avant que la validation d'écriture ne soit retournée au client, ce qui augmente le temps de réponse. PERTE
Pour le cluster
Une augmentation du CL se traduit par davantage de communication inter-nœuds. PERTE
Une augmentation du RF diminue la communication inter-nœuds en lecture. GAIN
Une augmentation du RF augmente la communication inter-nœuds en écriture. PERTE
Fondamental :
Il est donc fondamental de connaître le domaine d'application du cluster.
S'il est important que le client ait une réponse extrêmement rapide même s'il la réponse peut être erronée alors un RF élevé et un CL à ONE semblent être appropriés.
S'il est important que le client ait une réponse rapide même s'il la réponse peut être erronée alors un RF faible et un CL à ONE semblent être appropriés.
S'il est important que le client ait une réponse extrêmement fiable quitte à être lente alors un RF élevé et un CL à ALL semblent être appropriés.
Plus la tolérance aux pannes doit être faible, plus le RF doit être important et le CL faible.
Complément :
Dans l'exemple précédent, avec le CL à ALL, si un des nœuds 3, 4, 5 avait été en panne, alors la requête n'aurait pas fonctionnée. En effet tous les nœuds contenant la donnée doivent répondre à la requête pour que celle-ci passe. Donc il n'y a pas de tolérance aux pannes.
Néanmoins, si nous avions mis le CL à ONE, alors il aurait pu y avoir de l'incohérence. Il aurait simplement fallu que le nœud 3 renvoie sa valeur, qui est à 4. Or la valeur vraie est 6.
Pour faire le compromis entre la tolérance aux pannes et la cohérence de données, un CL à QUORUM semble être idéal. C'est d'ailleurs le plus utilisé dans la pratique.
Remarque :
En pratique, le QUORUM est souvent utilisé.