En fait, la PRIMARY KEY est pas identique à la clé de partition. La clé de partition fait partie de la clé PRIMARY. Et oui, c'est la partie qui détermine comment une ligne est distribuée à travers le cluster.
Comment les données seront-elles distribuées par nom d'utilisateur dans ce cas?
Si je crée votre table, insérez des valeurs et d'interroger ce que je peux obtenir un peu d'une fenêtre dans le processus de distribution en utilisant la fonction token
dans mon SELECT:
> SELECT token(user_name), user_name FROM user2;
system.token(user_name) | user_name
-------------------------+-----------
-5077180869401877077 | Patdard
-4874582970682694928 | Robo
4639906948852899531 | Bill
4645660266327417866 | Bob
4877648712764681009 | Valentina
5726383012007749221 | Helcine
7724711996172375448 | Jebediah
(7 rows)
Supposons que je avoir 5 nœuds. Dans Cassandra, chaque noeud est responsable d'une plage de jetons primaire. Supposons que les éléments suivants:
1) 5534023222112865485 to -9223372036854775808
2) -9223372036854775807 to -5534023222112865485
3) -5534023222112865484 to -1844674407370955162
4) -1844674407370955161 to 1844674407370955161
5) 1844674407370955161 to 5534023222112865484
Note: Plages calculées en exécutant:
python -c 'print [str(((2**64/5) * i) - 2**63) for i in range(5)]'
dépeignit aussi cette façon MVP Robbie Strickland de Cassandra High Availability.
Cassandra prend la valeur du jeton haché de la clé de partition (user_name
dans ce cas) et l'utilise pour déterminer le nœud sur lequel l'affichage de ligne doit être distribué. Compte tenu des valeurs symboliques hachurées ci-dessus, et les plages que je viens d'énumérer dehors, ce sont les noeuds que chaque nom d'utilisateur doit aller à:
Node 1: Helcine, Jebediah
Node 3: Patdard, Robo
Node 5: Bill, Bob, Valentina
En fonction de votre facteur de réplication (RF), Cassandra peut également placer des répliques supplémentaires de chaque rangée sur les autres noeuds.
Vous pouvez lire à propos de la différence entre la clé primaire et la clé de partition ici: http://stackoverflow.com/questions/24949676/difference-between-partition-key-composite-key-and-clustering-key-in-cassandra – grzesiekw
S'il vous plaît lire ma question à nouveau – farhawa