2011-01-03 5 views
9

Quelle est la signification de la cohérence éventuelle dans Cassandra lorsque les nœuds d'un même cluster ne contiennent pas les copies des mêmes données mais que les données sont réparties entre les nœuds. Maintenant, depuis une seule pièce de données est enregistrée à un seul endroit (noeud). Pourquoi Cassandra ne retournerait-elle pas la valeur récente de ce seul lieu d'enregistrement? Comment plusieurs copies se produisent-elles dans cette situation?Signification de la cohérence éventuelle dans Cassandra?

Répondre

1

C'est au client de décider du niveau de cohérence approprié (zéro, un, un, quoram ou tout). (Le niveau de cohérence contrôle les comportements de lecture et d'écriture en fonction de votre facteur de réplication.) Dans un cluster à un seul nœud, les niveaux de cohérence any, one, quorom et tous sont équivalents.

+0

mais la cohérence entre les données?, Car une seule donnée est située à un seul endroit dans un cluster .. il n'y a pas plusieurs copies de données .. alors quelle cohérence? –

+0

sur un cluster à un seul nœud, vous n'avez pas à vous soucier de la cohérence (tant que vous ne faites pas d'écritures asynchrones (CL.ZERO, n'utilisez pas celui-ci)). – Schildmeijer

+0

je suis désolé je pense que vous me avez mal ... je veux dire dans un cluster avec plusieurs nœuds, les données sont distribuées/sharded (et ** non répliquées **) donc il n'y a pas de copies multiples d'une seule donnée entre différents nœuds dans le cluster de cassandra n-noeud, alors comment est la cohérence définie dans ce cas où il n'y a, en fait, pas de copies multiples? ... j'espère que vous avez obtenu mon point .. –

2

Même avec le facteur de réplication = 1, la cohérence n'est pas forcément immédiate car les écritures sont tamponnées sur le noeud auquel vous les envoyez et ne sont donc pas forcément envoyées immédiatement au noeud responsable de cette clé.

Mais cela dépend du niveau de cohérence que vous choisissez.

La plupart des cas d'utilisation de Cassandra sont liés au facteur de réplication> 1, où la cohérence devient plus problématique. RF = 3 semble être un cadre commun (car il permet Quorum lecture/écriture avec un nœud indisponible)

+1

Combien de temps cela peut-il prendre avant que l'écriture soit vidée de memtable (mémoire tampon) vers le disque? – Kozuch

0

Cassandra a tendance à compromettre la latence et la cohérence de la disponibilité . C'est "finalement cohérent", un modèle de cohérence de base de données NoSQL utilisé avec les configurations distribuées. Plutôt que de maintenir une cohérence stricte qui pourrait vraiment ralentir les choses, la cohérence éventuelle permet une haute disponibilité, au prix que chaque instance de vos données ne soit pas immédiatement synchronisée sur tous les serveurs.

2

La consistance de Cassandra est accordable. Qu'est-ce qui peut être réglé?
* Nombre de nœuds nécessaires pour convenir des données pour les lectures .. appelez-le R * Nombre de nœuds nécessaires pour convenir des données pour les écritures .. appelez-le W
Dans le cas de 3 nœuds, si nous avons choisi 2R et 2W .. puis lors d'une lecture, si 2 nœuds sont d'accord sur une valeur, c'est la vraie valeur. Le 3 mai mai ou ne pas avoir la même valeur.
En cas d'écriture, si 2W est choisi, alors si les données sont écrites sur 2 nœuds, cela est considéré comme suffisant. Ce modèle est cohérent.
Si R + w < = N où N est le nombre de nœuds, il sera finalement cohérent.
Cassandra maintient un horodatage avec chaque colonne et chaque champ de colonne pour finalement devenir cohérent. Il y a un mécanisme en arrière-plan pour atteindre un état cohérent.
Mais comme je l'ai dit, si R + W> N, alors il est cohérent solide. C'est pourquoi la consistance est considérée comme accordable à Cassandra.

Questions connexes