1 Un índice (nombre anterior: índice secundario) proporciona medios para acceder a los datos en Cassandra utilizando campos de clave no primaria que no sean la clave de partición. El beneficio es la búsqueda rápida y eficiente de datos que coincidan con una condición determinada. En realidad, si no hay un índice en una columna normal, incluso no se permite consultar condicionalmente por la columna.
Un índice indexa los valores de columna en una familia de columnas (tabla) oculta y separada de la que contiene los valores indexados. Los datos de un índice son solo locales, lo que significa que no se replicarán en otros nodos. Esto también significa que, para la consulta de datos por columna indexada, las solicitudes deben enviarse a todos los nodos, esperando todas las resonancias, y luego los resultados se fusionan y devuelven. Por lo tanto, si tiene muchos nodos, la respuesta de la consulta se ralentiza a medida que se agregan más máquinas al clúster.
Precaución:
En la versión actual (2.0.7) de Apache Cassandra, solo se podía consultar mediante una columna indexada con condición de comparación de igualdad. No se admite la selección de rango u orden por por una columna indexada. La razón es que las claves almacenadas en la familia de columnas ocultas no están ordenadas.
¿Cuándo Usar un Índice?
2 Los índices integrados de Cassandra son mejores en una tabla que tiene muchas filas que contienen el valor indexado. Cuantos más valores únicos existan en una columna en particular, más sobrecarga tendrá para consultar y mantener el índice. Por ejemplo, supongamos que tiene una tabla de listas de reproducción con mil millones de canciones y desea buscar canciones del artista. Muchas canciones compartirán el mismo valor de columna para el artista. La columna de artista es un buen candidato para un índice.
¿Cuándo No Usar un Índice?
2no use un índice en estas situaciones:
- En columnas de alta cardinalidad porque luego consulta un gran volumen de registros para un pequeño número de resultados
- En tablas que usan una columna de contador
- En una columna que se actualiza o elimina con frecuencia
- Para buscar una fila en una partición grande a menos que se realice una consulta estrecha