Итак, я думаю , что я понял то, что вы пытаетесь спросить здесь.При определении распределения данных ключ раздела (первая часть PRIMARY KEY) хэшируется для получения токена.Затем эта строка записывается в узлы, ответственные за этот конкретный диапазон токенов.
Что касается того же значения хеша * , важно отметить, что ПЕРВИЧНЫЕ КЛЮЧИ в Cassandra уникальны,Поэтому, чтобы иметь одинаковое значение хэшированного токена, строки должны иметь идентичные ключи разделов, что невозможно.
Чтобы продемонстрировать это, я заново создал вашу таблицу и вставил несколько строк:
CREATE TABLE student (
studentid TEXT PRIMARY KEY,
fname TEXT,
lname TEXT);
INSERT INTO student (studentid, fname, lname) VALUES ('aploetz','Aaron','Ploetz');
INSERT INTO student (studentid, fname, lname) VALUES ('aploetz','Avery','Ploetz');
INSERT INTO student (studentid, fname, lname) VALUES ('janderson','Jordy','Anderson');
INSERT INTO student (studentid, fname, lname) VALUES ('mgin','Micah','Gin');
Теперь я сделаю запрос к этой таблице, используя функцию token
для ключа раздела (studentid):
SELECT token(studentid),studentid,fname,lname FROM student ;
system.token(studentid) | studentid | fname | lname
-------------------------+-----------+-------+----------
-5626264886876159064 | janderson | Jordy | Anderson
-1472930629430174260 | aploetz | Avery | Ploetz
8993000853088610283 | mgin | Micah | Gin
(3 rows)
Примечания:
- При использовании
token
функция ключа раздела, я могу видеть значения хешированного токена, таким образом я могу определить, какой узел (узлы) в кластере будет содержать эти данные. - Первые два студента, которых я вставил, имели разные имена,но они закончили тем же
studentid
из aploetz
.Поскольку ПЕРВИЧНЫЕ КЛЮЧИ уникальны, сохранился только один. - Строка для Avery Ploetz "победил", как это было написано в прошлом.
Дайте мне знать, если вам требуется какое-либо дальнейшее объяснение,но я надеюсь, что это поможет ответить на ваш вопрос.