blog/mdad/cassandra-operaciones-basicas-y-arquitectura/index.html (view raw)
1<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=description content="Official Lonami's website"><meta name=viewport content="width=device-width, initial-scale=1.0, user-scalable=yes"><title> Cassandra: Operaciones Básicas y Arquitectura | Lonami's Blog </title><link rel=stylesheet href=/style.css><body><article><nav class=sections><ul class=left><li><a href=/>lonami's site</a><li><a href=/blog class=selected>blog</a><li><a href=/golb>golb</a></ul><div class=right><a href=https://github.com/LonamiWebs><img src=img/github.svg alt=github></a><a href=/blog/atom.xml><img src=/img/rss.svg alt=rss></a></div></nav><main><h1 class=title>Cassandra: Operaciones Básicas y Arquitectura</h1><div class=time><p>2020-03-05T02:00:41+00:00<p>last updated 2020-03-20T11:36:18+00:00</div><p>Este 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.<p>Otros posts en esta serie:<ul><li><a href=/blog/mdad/cassandra-introduccion/>Cassandra: Introducción</a><li><a href=/blog/mdad/cassandra-operaciones-basicas-y-arquitectura/>Cassandra: Operaciones Básicas y Arquitectura</a> (este post)</ul><p>Este post está hecho en colaboración con un compañero.<hr><p>Antes 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 <code>cassandra</code>:<pre><code>$ cassandra-3.11.6/bin/cassandra
2</code></pre><p>Sin cerrar esta consola, abrimos otra en la que podamos usar la <a href=https://cassandra.apache.org/doc/latest/tools/cqlsh.html>CQL shell</a>:<pre><code>$ cassandra-3.11.6/bin/cqlsh
3Connected to Test Cluster at 127.0.0.1:9042.
4[cqlsh 5.0.1 | Cassandra 3.11.6 | CQL spec 3.4.4 | Native protocol v4]
5Use HELP for help.
6cqlsh>
7</code></pre><h2 id=crear>Crear</h2><h3 id=crear-una-base-de-datos>Crear una base de datos</h3><p>Cassandra denomina a las «bases de datos» como «espacio de claves» (keyspace en inglés).<pre><code>cqlsh> create keyspace helloworld with replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
8</code></pre><p>Cuando creamos un nuevo <em>keyspace</em>, indicamos el nombre y la estrategia de replicación a usar. Nosotros usamos la estrategia simple con un factor 3 de replicación.<h3 id=crear-una-tabla>Crear una tabla</h3><p>Una vez estemos dentro de un <em>keyspace</em>, podemos crear tablas. Vamos a crear una tabla llamada «greetings» con identificador (número entero), mensaje (texto) y lenguaje (<code>varchar</code>).<pre><code>cqlsh> use helloworld;
9cqlsh:helloworld> create table greetings(id int primary key, message text, lang varchar);
10</code></pre><h3 id=crear-una-fila>Crear una fila</h3><p>Insertar nuevas filas es similar a otros sistemas gestores de datos, mediante la sentencia <code>INSERT</code>:<pre><code>cqlsh:helloworld> insert into greetings(id, message, lang) values(1, '¡Bienvenido!', 'es');
11cqlsh:helloworld> insert into greetings(id, message, lang) values(2, 'Welcome!', 'es');
12</code></pre><h2 id=leer>Leer</h2><p>La lectura se lleva a cabo mediante la sentencia <code>SELECT</code>:<pre><code>cqlsh:helloworld> select * from greetings;
13
14 id | lang | message
15----+------+--------------
16 1 | es | ¡Bienvenido!
17 2 | es | Welcome!
18
19(2 rows)
20</code></pre><p><code>cqlsh</code> 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:<p><img src=https://lonami.dev/blog/mdad/cassandra-operaciones-basicas-y-arquitectura/image.png><h2 id=actualizar>Actualizar</h2><p>La actualización se lleva a cabo con la sentencia <code>UPDATE</code>. Vamos a arreglar el fallo que hemos cometido al insertar «Welcome!» como español:<pre><code>cqlsh:helloworld> update greetings set lang = 'en' where id = 2;
21</code></pre><h2 id=indexar>Indexar</h2><pre><code>cqlsh:helloworld> create index langIndex on greetings(lang);
22</code></pre><h2 id=borrar>Borrar</h2><p>Finalmente, el borrado se lleva a cabo con la sentencia <code>DELETE</code>. Es posible borrar solo campos individuales, lo cuál los pone a nulos:<pre><code>cqlsh:helloworld> delete message from greetings where id = 1;
23</code></pre><p>Para eliminar la fila entera, basta con no especificar la columna:<pre><code>cqlsh:helloworld> delete from greetings where id = 1;
24</code></pre><h2 id=referencias>Referencias</h2><ul><li><a href=https://www.tutorialspoint.com/cassandra/cassandra_create_keyspace.htm>tutorialspoint – Creating a Keyspace using Cqlsh</a><li><a href=https://www.tutorialspoint.com/cassandra/cassandra_cql_datatypes.htm>tutorialspoint – Cassandra – CQL Datatypes</a><li><a href=https://www.tutorialspoint.com/cassandra/cassandra_create_table.htm>tutorialspoint – Cassandra – Create Table</a><li><a href=https://data-flair.training/blogs/cassandra-crud-operation/>Data Flair – Cassandra Crud Operation – Create, Update, Read & Delete</a><li><a href=https://cassandra.apache.org/doc/latest/cql/indexes.html>Cassandra Documentation – Secondary Indexes</a></ul></main><footer><div><p>Share your thoughts, or simply come hang with me <a href=https://t.me/LonamiWebs><img src=/img/telegram.svg alt=Telegram></a> <a href=mailto:totufals@hotmail.com><img src=/img/mail.svg alt=Mail></a></div></footer></article><p class=abyss>Glaze into the abyss… Oh hi there!