all repos — gemini-redirect @ bb4c617475d7a9c420ce2ec06fbf54e2e4a5e01b

content/blog/mdad/cassandra-operaciones-basicas-y-arquitectura/index.md (view raw)

  1+++
  2title = "Cassandra: Operaciones Básicas y Arquitectura"
  3date = 2020-03-05T02:00:41+00:00
  4updated = 2020-03-20T11:36:18+00:00
  5+++
  6Este es el segundo post en la serie sobre Cassandra, con una breve descripción de las operaciones básicas (tales como inserción, recuperación e indexado), y ejecución por completo junto con el modelo de datos y arquitectura.
  7
  8Otros posts en esta serie:
  9
 10* [Cassandra: Introducción](/blog/mdad/cassandra-introduccion/)
 11* [Cassandra: Operaciones Básicas y Arquitectura](/blog/mdad/cassandra-operaciones-basicas-y-arquitectura/) (este post)
 12
 13Este post está hecho en colaboración con un compañero.
 14
 15----------
 16
 17Antes de poder ejecutar ninguna consulta, debemos lanzar la base de datos en caso de que no se encuentre en ejecución aún. Para ello, en una terminal, lanzamos el binario de `cassandra`:
 18
 19```
 20$ cassandra-3.11.6/bin/cassandra
 21```
 22
 23Sin cerrar esta consola, abrimos otra en la que podamos usar la [CQL shell](https://cassandra.apache.org/doc/latest/tools/cqlsh.html):
 24
 25```
 26$ cassandra-3.11.6/bin/cqlsh
 27Connected to Test Cluster at 127.0.0.1:9042.
 28[cqlsh 5.0.1 | Cassandra 3.11.6 | CQL spec 3.4.4 | Native protocol v4]
 29Use HELP for help.
 30cqlsh>
 31```
 32
 33## Crear
 34
 35### Crear una base de datos
 36
 37Cassandra denomina a las «bases de datos» como «espacio de claves» (keyspace en inglés).
 38
 39```
 40cqlsh> create keyspace helloworld with replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
 41```
 42
 43Cuando creamos un nuevo _keyspace_, indicamos el nombre y la estrategia de replicación a usar. Nosotros usamos la estrategia simple con un factor 3 de replicación.
 44
 45### Crear una tabla
 46
 47Una vez estemos dentro de un _keyspace_, podemos crear tablas. Vamos a crear una tabla llamada «greetings» con identificador (número entero), mensaje (texto) y lenguaje (`varchar`).
 48
 49```
 50cqlsh> use helloworld;
 51cqlsh:helloworld> create table greetings(id int primary key, message text, lang varchar);
 52```
 53
 54### Crear una fila
 55
 56Insertar nuevas filas es similar a otros sistemas gestores de datos, mediante la sentencia `INSERT`:
 57
 58```
 59cqlsh:helloworld> insert into greetings(id, message, lang) values(1, '¡Bienvenido!', 'es');
 60cqlsh:helloworld> insert into greetings(id, message, lang) values(2, 'Welcome!', 'es');
 61```
 62
 63## Leer
 64
 65La lectura se lleva a cabo mediante la sentencia `SELECT`:
 66
 67```
 68cqlsh:helloworld> select * from greetings;
 69
 70 id | lang | message
 71----+------+--------------
 72  1 |   es | ¡Bienvenido!
 73  2 |   es |     Welcome!
 74
 75(2 rows)
 76```
 77
 78`cqlsh` colorea la salida, lo cuál resulta muy útil para identificar la clave primaria y distintos tipos de datos como texto, cadenas o números:
 79
 80![](image.png)
 81
 82## Actualizar
 83
 84La actualización se lleva a cabo con la sentencia `UPDATE`. Vamos a arreglar el fallo que hemos cometido al insertar «Welcome!» como español:
 85
 86```
 87cqlsh:helloworld> update greetings set lang = 'en' where id = 2;
 88```
 89
 90## Indexar
 91
 92```
 93cqlsh:helloworld> create index langIndex on greetings(lang);
 94```
 95
 96## Borrar
 97
 98Finalmente, el borrado se lleva a cabo con la sentencia `DELETE`. Es posible borrar solo campos individuales, lo cuál los pone a nulos:
 99
100```
101cqlsh:helloworld> delete message from greetings where id = 1;
102```
103
104Para eliminar la fila entera, basta con no especificar la columna:
105
106```
107cqlsh:helloworld> delete from greetings where id = 1;
108```
109
110## Referencias
111
112* [tutorialspoint – Creating a Keyspace using Cqlsh](https://www.tutorialspoint.com/cassandra/cassandra_create_keyspace.htm)
113* [tutorialspoint – Cassandra – CQL Datatypes](https://www.tutorialspoint.com/cassandra/cassandra_cql_datatypes.htm)
114* [tutorialspoint – Cassandra – Create Table](https://www.tutorialspoint.com/cassandra/cassandra_create_table.htm)
115* [Data Flair – Cassandra Crud Operation – Create, Update, Read & Delete](https://data-flair.training/blogs/cassandra-crud-operation/)
116* [Cassandra Documentation – Secondary Indexes](https://cassandra.apache.org/doc/latest/cql/indexes.html)