Как первичные ключи и кластерные столбцы работают в Cassandra? - PullRequest
0 голосов
/ 11 октября 2018

Я не совсем понимаю, как первичные ключи в Cassandra обеспечивают быстрый доступ к данным.Например, я создаю таблицу «Студенты» со следующими столбцами схемы:

Я выбираю первичный ключ для идентификатора студента.Насколько я понимаю, все студенты будут размещены вокруг кластера на основе некоторого хэша этого значения.Скажем, я также выбрал страну в качестве столбца кластеризации.Таким образом, в каждом разделе учащихся (которые были разделены на основе их идентификатора) они будут упорядочены по странам (предположительно в алфавитном порядке).

Поэтому, если я затем захочу получить всех учащихся для конкретной страны, у меня будетпосетить несколько узлов в кластере?В то время как студенты были упорядочены по странам в каждом узле, нет ничего, чтобы сказать, что все студенты для определенной страны были сохранены в одном узле?Поддерживается ли этот тип запроса?

Если бы я добавил только 5 учеников в кластер из 5 узлов, возможно ли, чтобы все ученики были сохранены на отдельных узлах, если идентификатор ученика был UUID?

1 Ответ

0 голосов
/ 11 октября 2018

Итак, если я захочу получить всех студентов для определенной страны, мне придется посетить несколько узлов в кластере?

Да.

В то время как студенты были отсортированы по стране в каждом узле, нет ничего, чтобы сказать, что все студенты для определенной страны были сохранены в одном узле?

Исправить.

Поддерживается ли этот тип запроса?

Но в Кассандре это считается антипаттерном.Что происходит, так это то, что координатор (узел, который получает запрос от клиента) должен будет запросить ВСЕ другие узлы, так как ему придется сканировать все строки для этого семейства столбцов.

Если бы я имел толькодобавил 5 студентов в кластер из 5 узлов, возможно ли, чтобы все студенты были сохранены на отдельных узлах, если идентификатор студента был UUID?

Да.

Способ, которым вашПроблема может быть решена с помощью семейства столбцов для каждого запроса (один для выбора по идентификатору студента, а другой для выбора по стране, у каждого свой основной запрос) при дублировании строк (когда вы создаете студента, вы должны вставитьэто в обоих семействах столбцов).

...