высокая и низкая кардинальность в Cassandra

Я постоянно сталкиваюсь с этими терминами: high cardinality и low cardinality в Cassandra.

Я не понимаю, что именно они имеют в виду. какое влияние они оказывают на запросы и что предпочтительнее. Пожалуйста, объясните на примере, так как это будет легко следовать.


person eagertoLearn    schedule 03.08.2014    source источник


Ответы (1)


Мощность X — это не что иное, как количество элементов, составляющих X. В Cassandra мощность ключа раздела очень важна для разделения данных.

Поскольку ключ секции отвечает за распределение данных по кластеру, выбор ключа с низкой кардинальностью может привести к тому, что ваши данные не будут распределены.

Представьте, что у вас есть кластер из 20 узлов, в которых хранятся комментарии — RF равен 2. У каждого комментария есть собственный голос от 1 до 5. Теперь, поскольку вы хотите легко получать комментарии по голосам, у вас может возникнуть соблазн выбрать голосование в качестве ключа раздела.

CREATE TABLE comments(vote int, content text, id uuid, PRIMARY KEY(vote, id));

В этой ситуации единственным ключом, отвечающим за распределение данных, является голосование, которое имеет очень низкую кардинальность, так как может содержать только 5 значений (1,2,3,4,5). Это означает, что в наилучшем случае 5 разных узлов будут владельцами 5 разных разделов (которые являются "всеми комментариями с 1 голосом" ... "всеми комментариями с 5 голосами"), и Опять же, в лучшем ситуации с RF, равным 2, ваши данные будут храниться на 10 разных узлах. Как видите, у вас есть кластер из 20 узлов, который в лучшем случае используется не более чем на 50%.

Распределение данных очень важно, поэтому краткость ключа раздела имеет большое значение.

ХТХ, Карло

person Carlo Bertuccini    schedule 03.08.2014
comment
Я отредактировал свой пост — как видите, для каждого голоса вы получите много комментариев. Так что это очень широкий ряд ситуаций. Если у вас есть 10 миллионов комментариев, скажем, равномерно распределенных по голосам, для каждого раздела голосования вы получите 2 миллиона результатов. Это очень широкий ряд. - person Carlo Bertuccini; 03.08.2014
comment
stackoverflow.com/ вопросы/25102969/ - person eagertoLearn; 03.08.2014
comment
Что означает аббревиатура РФ? Редактировать: для тех, кто интересуется, это означает фактор репликации. Я думаю, что формулировку ответа можно было бы улучшить, чтобы она звучала так: Представьте, что у вас есть кластер из 20 узлов, хранящих комментарии, с коэффициентом репликации (RF), равным 2. - person Rylan Schaeffer; 11.03.2019