Я не уверен, насколько лучше, по эффективности использовать широко распространенное значение столбца (например, Country
) в качестве ключа раздела для составного первичного ключа или довольно уникального значения столбца (например, Last_Name
).Cassandra: выбирая ключ раздела
Глядя на Cassandra 1.2's documentation about indexes я получаю это:
"Когда использовать индекс:. Кассандр встроенных индексов лучше всего на столе , имеющие много строк, которые содержат индексированное значение Чем больше уникальные значения , которые существуют в конкретном столбце, тем больше накладных расходов вы должны в среднем запросить и поддерживать индекс. Например, предположим, что у вас была пользовательская таблица с миллиардом пользователей и хотела посмотреть до пользователей, в которых они проживали. Многие пользователи будут иметь одинаковое значение столбца для состояния (например, CA, NY, TX и т. Д.). Это будет хорошим кандидатом на индекс. «
» Если не использовать индекс: Не использовать индекс для запроса огромного объема записей для небольшого числа результатов. Например, если вы создаете индекс в столбце , который имеет много разных значений, запрос между полями будет занимать . Многие поиски за очень небольшое количество результатов. В таблице с миллиардом пользователей, , глядя на пользователей по их адресу электронной почты (значение, которое обычно , уникальное для каждого пользователя), а не по их состоянию, вероятно, будет очень неэффективным. Возможно, было бы более удобно вручную поддерживать таблицу как форму индекса вместо использования встроенного индекса Cassandra . Для столбцов, содержащих уникальные данные, иногда тонкой производительности целесообразна использовать индекс для удобства, при условии, что объем запроса к таблице, имеющий индексированный столбец является умеренным, а не при постоянной нагрузке.»
Looking at the examples from CQL's SELECT для
«Запрашивания составных первичных ключей и сортировки результатов», я вижу что-то вроде UUID используется в качестве ключа секционирования ... который будет означать, что предпочтительнее использовать что-то довольно уникальное?
Означает ли это, что «ключ разделения» - это одна строка, а «кластеризация key_1» и т. Д., Упорядочивает ли значение внутри одной строки? Спасибо за ваш ответ, это ответ, который я приземлился после долгого поиска корреляции между Partitioner, Partition Key и Compound Primary Key. Из того, что я вижу, это ключ раздела, который испортил распределение между кластером, и если это случайный случай, остальная часть составного ключа, то есть кластеризация key_1 и т. Д., КЛАВИАТУРНЫЕ КЛАВИШИ НЕ ВЛИЯЮТ РАСПРОСТРАНЕНИЕ ИЗ УДОВЛЕТВОРЕНИЙ , –
@RavindranathAkila Кластерный ключ влияет на выравнивание столбцов (упорядоченных) в физическом узле, но вы правы, что распределение между узлами зависит исключительно от ключа секционирования. –
Спасибо, Любен! Это очень помогает! –