Я не уверен, что лучше, по эффективности, использовать очень частое значение общего столбца (например, Country
) в качестве ключа раздела для составного первичного ключа или довольно уникального значения столбца (например, Last_Name
).
Глядя на Документация Cassandra 1.2 об индексах Я получаю это:
" Когда использовать индекс: Встроенные индексы Cassandra лучше всего на столе имеющих много строк, которые содержат индексированное значение. Чем уникальнее значения, которые существуют в конкретном столбце, тем больше в среднем, запрашивать и поддерживать индекс. Например, предположим, что у вас была пользовательская таблица с миллиардом пользователей и хотела посмотреть в которых они жили. Многие пользователи будут делиться одним и тем же значение столбца для состояния (например, CA, NY, TX и т.д.). Это было бы хороший кандидат на индекс."
" Если не использовать индекс: Не используйте индекс для запроса огромного объема записей для небольшого количество результатов. Например, если вы создаете индекс в столбце который имеет много разных значений, запрос между полями будет многие ищут очень мало результатов. В таблице с миллиардом пользователей, поиск пользователей по их адресу электронной почты (значение, которое обычно уникальные для каждого пользователя), а не их состояние, вероятно, будет очень неэффективно. Возможно, было бы более эффективно поддерживать вручную таблица как форма индекса вместо использования Cassandra встроенный индекс. Для столбцов, содержащих уникальные данные, иногда с высокой эффективностью использовать индекс для удобства, если объем запроса к таблице с индексированным столбцом является умеренным, а не при постоянной нагрузке."
Посмотрите на примеры из CQL SELECT для
"Запрос основных первичных ключей и результатов сортировки", я вижу что-то вроде UUID, используемого в качестве ключа раздела... , который указывает, что предпочтительнее использовать что-то уникальное?