A documentação do Cassandra declara,
Não use um índice nestas situações:
- Nas colunas de alta cardinalidade, você consulta um grande volume de registros para obter um pequeno número de resultados. Consulte Problemas usando um índice de coluna de alta cardinalidade abaixo.
Continua
Se você criar um índice em uma coluna de alta cardinalidade, que possui muitos valores distintos, uma consulta entre os campos incorrerá em muitas buscas por muito poucos resultados. Na tabela com um bilhão de músicas, procurar músicas por compositor (um valor que é normalmente único para cada música) em vez de por seu artista, provavelmente será muito ineficiente. Provavelmente seria mais eficiente manter a tabela manualmente como uma forma de índice, em vez de usar o índice interno Cassandra. Para colunas que contêm dados exclusivos, às vezes é bom usar o índice por conveniência, desde que o volume da consulta na tabela que possui uma coluna indexada seja moderado e não esteja sob carga constante.
Mas nunca realmente responde à pergunta: por que é ineficiente? Não tenho idéia do que significa "manter manualmente a tabela como uma forma de índice". Mas então se contradiz com "... às vezes é bom usar o índice por conveniência, desde que o volume da consulta seja moderado ..."
Isso está apenas tentando me dizer para usar o PK quando e onde posso? Qual é a ineficiência? Meu entendimento é que uma consulta que atingisse um índice precisaria consultar todos os nós no cluster e, em seguida, cada nó faria uma pesquisa em seu índice local e os resultados seriam agregados. Isso não é necessariamente caro (cada pesquisa de índice deve ser bastante barata), exceto que pagamos na latência da rede, pois precisamos esperar pelo nó mais lento do lote. Estou perdendo alguma coisa aqui?
Mas se eu tenho uma coleção que possui vários bilhões de itens que - em raras ocasiões - precisam ser procurados por um atributo diferente, mas quase único ... esse é um uso apropriado, certo?
“Todo mundo? IDK se replicação significa que isso pode atingir 1/3 do cluster por um fator de replicação 3 ou não?