Cassandra Token или Hash Values - PullRequest
       12

Cassandra Token или Hash Values

0 голосов
/ 30 ноября 2018

У меня есть ученическая таблица в Кассандре со столбцом с именем StudentId в качестве первичного ключа.Могут ли два значения из этого столбца иметь одинаковое значение токена / хэша?

Структура таблицы |-----------|-------------| | StudentId | Primary Key | | FName | | | FName | | |-----------|-------------|

1 Ответ

0 голосов
/ 30 ноября 2018

Итак, я думаю , что я понял то, что вы пытаетесь спросить здесь.При определении распределения данных ключ раздела (первая часть 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 "победил", как это было написано в прошлом.

Дайте мне знать, если вам требуется какое-либо дальнейшее объяснение,но я надеюсь, что это поможет ответить на ваш вопрос.

...