Cassandra - Colecciones CQL

CQL ofrece la posibilidad de utilizar tipos de datos de colección. Con estos tipos de colección, puede almacenar varios valores en una sola variable. Este capítulo explica cómo usar Colecciones en Cassandra.

Lista

La lista se utiliza en los casos en que

  • el orden de los elementos debe mantenerse, y
  • un valor debe almacenarse varias veces.

Puede obtener los valores de un tipo de datos de lista utilizando el índice de los elementos de la lista.

Crear una tabla con una lista

A continuación se muestra un ejemplo para crear una tabla de muestra con dos columnas, nombre y correo electrónico. Para almacenar varios correos electrónicos, estamos usando list.

cqlsh:tutorialspoint> CREATE TABLE data(name text PRIMARY KEY, email list<text>);

Insertar datos en una lista

Al insertar datos en los elementos de una lista, ingrese todos los valores separados por comas entre llaves [] como se muestra a continuación.

cqlsh:tutorialspoint> INSERT INTO data(name, email) VALUES ('ramu',
['[email protected]','[email protected]'])

Actualizar una lista

A continuación se muestra un ejemplo para actualizar el tipo de datos de la lista en una tabla llamada data. Aquí estamos agregando otro correo electrónico a la lista.

cqlsh:tutorialspoint> UPDATE data
... SET email = email +['[email protected]']
... where name = 'ramu';

Verificación

Si verifica la tabla usando la instrucción SELECT, obtendrá el siguiente resultado:

cqlsh:tutorialspoint> SELECT * FROM data;

 name | email
------+--------------------------------------------------------------
 ramu | ['[email protected]', '[email protected]', '[email protected]']

(1 rows)

CONJUNTO

Set es un tipo de datos que se utiliza para almacenar un grupo de elementos. Los elementos de un conjunto se devolverán en orden.

Crear una mesa con set

El siguiente ejemplo crea una tabla de muestra con dos columnas, nombre y teléfono. Para almacenar varios números de teléfono, usamos set.

cqlsh:tutorialspoint> CREATE TABLE data2 (name text PRIMARY KEY, phone set<varint>);

Insertar datos en un conjunto

Al insertar datos en los elementos de un conjunto, ingrese todos los valores separados por comas entre llaves {} como se muestra a continuación.

cqlsh:tutorialspoint> INSERT INTO data2(name, phone)VALUES ('rahman',    {9848022338,9848022339});

Actualizar un conjunto

El siguiente código muestra cómo actualizar un conjunto en una tabla denominada data2. Aquí estamos agregando otro número de teléfono al conjunto.

cqlsh:tutorialspoint> UPDATE data2
   ... SET phone = phone + {9848022330}
   ... where name = 'rahman';

Verificación

Si verifica la tabla usando la instrucción SELECT, obtendrá el siguiente resultado:

cqlsh:tutorialspoint> SELECT * FROM data2;

   name | phone
--------+--------------------------------------
 rahman | {9848022330, 9848022338, 9848022339}

(1 rows)

MAPA

Map es un tipo de datos que se utiliza para almacenar un par de elementos clave-valor.

Crear una tabla con mapa

El siguiente ejemplo muestra cómo crear una tabla de muestra con dos columnas, nombre y dirección. Para almacenar múltiples valores de dirección, usamos map.

cqlsh:tutorialspoint> CREATE TABLE data3 (name text PRIMARY KEY, address
map<timestamp, text>);

Insertar datos en un mapa

Mientras inserta datos en los elementos en un mapa, ingrese todos los key : value pares separados por comas entre llaves {} como se muestra a continuación.

cqlsh:tutorialspoint> INSERT INTO data3 (name, address)
   VALUES ('robin', {'home' : 'hyderabad' , 'office' : 'Delhi' } );

Actualizar un conjunto

El siguiente código muestra cómo actualizar el tipo de datos del mapa en una tabla denominada data3. Aquí estamos cambiando el valor de la oficina clave, es decir, estamos cambiando la dirección de la oficina de una persona llamada robin.

cqlsh:tutorialspoint> UPDATE data3
   ... SET address = address+{'office':'mumbai'}
   ... WHERE name = 'robin';

Verificación

Si verifica la tabla usando la instrucción SELECT, obtendrá el siguiente resultado:

cqlsh:tutorialspoint> select * from data3;

  name | address
-------+-------------------------------------------
 robin | {'home': 'hyderabad', 'office': 'mumbai'}

(1 rows)