Cassandra Colecciones: establecer, enumerar y asignar en CQL con ejemplo
⚡ Resumen inteligente
Cassandra Las colecciones almacenan varios valores en una sola columna utilizando los tipos de conjunto, lista y mapa. Esta página explica cada tipo, la sintaxis CQL para crearlos y rellenarlos, cómo actualizar elementos y los límites de tamaño que determinan cuándo una colección no es la opción adecuada.

¿Qué son Cassandra Colecciones?
Cassandra Las colecciones son una buena forma de manejar tareas. Se pueden almacenar varios elementos en colecciones. Hay limitaciones en Cassandra .
- Una columna de colección no puede almacenar más de 64 KB de datos en un solo valor.
- Mantén la colección pequeña para evitar la sobrecarga que supone consultarla, ya que se lee toda la colección incluso cuando solo se necesita un elemento.
- Almacenar más de 64 KB implica que solo se pueden consultar los primeros 64 KB, lo que conlleva una pérdida de datos.
- Una colección no congelada está limitada a aproximadamente 65,535 elementos, y cada elemento se lee conjuntamente como una sola unidad.
Estos límites apuntan a una regla: las colecciones son adecuadas para un número reducido de atributos asociados a una fila, no para una lista abierta que crece con el uso. Todo aquello que crece continuamente debe agruparse en columnas de su propia tabla.
Tipos de Cassandra Colecciones
Existen principalmente tres tipos de colecciones que Cassandra apoya:
- Establecer
- Lista
- Mapear
Cassandra Colección Set
Un conjunto almacena un grupo de elementos que devuelve elementos ordenados al realizar una consulta.
Sintaxis
Aquí está la sintaxis de la colección Set que almacena múltiples direcciones de correo electrónico para el profesor.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
Ejemplo
Aquí está la instantánea donde se crea la tabla “Profesor” con la columna “Correo electrónico” como colección.
Aquí está la instantánea donde se insertan los datos en la colección.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
Se pueden agregar o eliminar elementos individuales sin reescribir todo el conjunto, lo cual es la principal ventaja de dejar una colección sin congelar.
UPDATE University.Teacher SET Email = Email + {'new@guru99.com'} WHERE id = 1; UPDATE University.Teacher SET Email = Email - {'xyz@hotmail.com'} WHERE id = 1;
Cassandra Colección de listas
Cuando el orden de los elementos importa, se utiliza la lista.
Ejemplo
Aquí se muestra la captura de pantalla donde se agrega la columna "cursos de tipo lista" en la tabla "Profesor".
ALTER TABLE University.Teacher ADD coursenames list<text>;
Aquí está la instantánea donde se insertan los datos en la columna "nombres de cursos".
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Aquí está la instantánea que muestra el estado actual de la base de datos después de la inserción.
Los elementos se pueden agregar al principio o al final, aunque agregar al principio y actualizar por índice requieren Cassandra leer primero la lista, lo que las hace más lentas que agregarlas.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Colección de mapas
El mapa es un tipo de colección que se utiliza para almacenar pares clave-valor. Como su nombre lo indica, asigna una cosa a otra.
Por ejemplo, si desea guardar el nombre del curso con el nombre del curso de requisito previo, puede utilizar la colección de mapas.
Ejemplo
Aquí está la instantánea donde se crea el tipo de mapa para el nombre del curso y el nombre del curso de requisito previo.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Aquí está la instantánea donde se insertan los datos en el tipo de colección de mapas.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
Se puede añadir o eliminar una sola entrada sin modificar el resto del mapa.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Conjunto vs Lista vs Mapa: Elegir una colección
Los tres tipos parecen intercambiables, pero difieren en las garantías de pedido y el coste de actualización.
| Aspecto | Establecer | Lista | Mapear |
|---|---|---|---|
| Órdenes | Ordenado por valor | Se conservó el orden de inserción. | Ordenado por clave |
| Duplicados | No se permiten | Permitido | Llaves únicas |
| Costo de actualización | Barato, no requiere lectura. | Agregar barato; anteponer y actualizar el índice requieren una lectura | Barato por llave |
| Mejores para | Etiquetas, direcciones de correo electrónico, etiquetas únicas | Pasos ordenados donde los duplicados son significativos | Atributos con nombre y claves impredecibles |
Prefiera un conjunto a una lista a menos que el orden realmente importe, porque las operaciones de índice de lista crean marcadores de eliminación y pueden producir resultados sorprendentes bajo escrituras concurrentes. Agregar frozen En cualquiera de los tres almacenes, se guarda como un valor inmutable, lo que permite que la colección aparezca en una clave primaria, pero elimina las actualizaciones a nivel de elemento.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Cuando una colección exceda unas pocas docenas de elementos, modele como una tabla separada con el elemento como una columna de agrupación en su lugar, siguiendo el enfoque en el Cassandra reglas del modelo de datosEl filtrado por contenido de colección requiere un índice, cubierto en el crear y eliminar índice tutorial.






