Crear y colocar ÍNDICE en Cassandra
⚡ Resumen inteligente
Crear y eliminar índice en Cassandra Permite filtrar columnas que no forman parte de la clave principal. Esta página describe los comandos CREATE INDEX y DROP INDEX, las reglas de nomenclatura, los tipos de índice disponibles y los casos en los que un índice no es la solución adecuada.

Cassandra Crear índice
El comando 'Crear índice' crea un índice en la columna especificada por el usuario. Si los datos ya existen para la columna que desea indexar, Cassandra crea índices en los datos durante la ejecución de la instrucción 'crear índice'.
- Después de crear un índice, Cassandra indexa nuevos datos automáticamente cuando se insertan datos.
- El índice no se puede crear en la clave principal porque una clave principal ya está indexada.
- Se admiten índices en las columnas de la colección, utilizando el formato CLAVE, VALORES o ENTRADAS, según lo que se necesite buscar.
- Sin indexar en la columna, Cassandra No se puede filtrar esa columna a menos que sea una clave primaria.
Por eso, para filtrar columnas en CassandraEs necesario crear índices.
Sintaxis
CREATE INDEX IndexName ON KeyspaceName.TableName (ColumnName);
Ejemplo
Aquí está la instantánea donde se intentó filtrar la columna "departamento" sin crear el índice. En respuesta, se devolvió el error.
Aquí está la instantánea donde se crea el índice en la columna del departamento.
CREATE INDEX DeptIndex ON University.Student (dept);
Aquí está la instantánea donde se filtrará con éxito la columna "departamento".
SELECT * FROM University.Student WHERE dept = 'CS';
El nombre del índice es opcional. Si se omite, se permite Cassandra Generar uno automáticamente, lo cual es importante cuando posteriormente hay que eliminar el índice.
CREATE INDEX IF NOT EXISTS ON University.Student (dept);
Cassandra Índice de caída
El comando "Eliminar índice" elimina el índice especificado. Si no se proporcionó el nombre del índice durante la creación del índice, entonces el nombre del índice es NombreTabla_NombreColumna_idx.
- Si el índice no existe, devolverá un error a menos que se utilice IF EXISTS, que devolverá no operativo.
- Debes especificar el nombre del espacio de claves junto con el nombre del índice; de lo contrario, el índice se buscará en el espacio de claves actual.
Sintaxis
DROP INDEX IF EXISTS KeyspaceName.IndexName;
Ejemplo
Aquí está la instantánea del comando ejecutado "Eliminar índice" que elimina el índice DeptIndex.
DROP INDEX IF EXISTS University.DeptIndex;
Después de la ejecución exitosa del comando, DeptIndex se eliminará del espacio de claves. Ahora los datos no se pueden filtrar por el departamento de columna.
Para confirmar qué índices existen antes de la caídaping Primero, describa la tabla y lea las definiciones de índice que aparecen al final del resultado.
DESCRIBE TABLE University.Student;
Tipos de índice en Cassandra
El comando anterior crea un índice secundario estándar, pero existen tres mecanismos distintos y se comportan de manera muy diferente.
| Tipo | Cómo funciona | Mejores para |
|---|---|---|
| Índice secundario | Cada nodo indexa únicamente sus propios datos locales, por lo que una consulta sin clave de partición debe contactar con todos los nodos. | Columnas de cardinalidad moderada consultadas junto con una clave de partición. |
| Índice SASI | Un índice adjunto que admite la coincidencia de prefijos y sufijos LIKE, además de rangos numéricos. | Patrones de búsqueda de texto. Aún se considera experimental, por lo que se recomienda probarlo antes de usarlo en producción. |
| Índice adjunto de almacenamiento (SAI) | El neumático VXNUMX se presentó el Cassandra 5.0, compartiendo una estructura de índice entre columnas con menor sobrecarga de escritura. | El reemplazo moderno para ambos de los anteriores en Cassandra 5 grupos. |
La indexación de una columna de colección utiliza un modificador que indica qué parte se debe indexar.
CREATE INDEX ON University.Teacher (VALUES(Email)); CREATE INDEX ON University.Course (KEYS(prereq)); CREATE INDEX ON University.Course (ENTRIES(prereq));
VALUES busca los elementos de un conjunto o lista, KEYS busca las claves de un mapa y ENTRIES compara un par clave-valor. La indexación de colecciones se trata con más detalle en el Cassandra colecciones tutorial.
Cuándo no usar un índice en Cassandra
Un índice secundario es práctico, pero no es un índice relacional, y usarlo en el lugar equivocado suele ser causa de lentitud en la agrupación de clústeres. Cuatro situaciones requieren un enfoque diferente.
- Cardinalidad muy alta. Indexar algo casi único, como una dirección de correo electrónico, significa que casi cada partición contiene una fila coincidente, por lo que la consulta se extiende por todo el clúster para devolver un único registro.
- Cardinalidad muy baja. La indexación de un indicador de dos valores, como activo o inactivo, produce particiones de índice enormes, y la lectura de una de ellas devuelve la mitad de la tabla.
- Columnas actualizadas con frecuencia. Cada cambio escribe una entrada en el índice y una marca de eliminación para la anterior, por lo que la acumulación de marcas de eliminación degrada la velocidad de lectura con el tiempo.
- Consultas sin clave de partición. Sin él, el coordinador debe contactar con cada nodo y fusionar los resultados, lo cual no resulta escalable a medida que se añaden nodos.
La alternativa duradera es una segunda tabla indexada por la columna que necesita ser buscada, escrita al mismo tiempo que la primera. Esto sigue el principio de consulta primero descrito en el Cassandra reglas del modelo de datosy mantiene cada lectura en una única partición en un único nodo.
Como regla general, un índice es adecuado para una columna de cardinalidad moderada que se consulta junto con una clave de partición conocida. Para cualquier otro caso, es mejor utilizar una tabla diseñada específicamente para ello.




