all repos — gemini-redirect @ 4e76ffb372acbefd1eed19ac74caf7f564084240

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

 1<!DOCTYPE html>
 2<html>
 3<head>
 4<meta charset="utf-8" />
 5<meta name="viewport" content="width=device-width, initial-scale=1" />
 6<title>Cassandra: Operaciones Básicas y Arquitectura</title>
 7<link rel="stylesheet" href="../css/style.css">
 8</head>
 9<body>
10<main>
11<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>
12<div class="date-created-modified">Created 2020-03-05<br>
13Modified 2020-03-20</div>
14<p>Otros posts en esta serie:</p>
15<ul>
16<li><a href="/blog/mdad/cassandra-introduccion/">Cassandra: Introducción</a></li>
17<li><a href="/blog/mdad/cassandra-operaciones-basicas-y-arquitectura/">Cassandra: Operaciones Básicas y Arquitectura</a> (este post)</li>
18</ul>
19<p>Este post está hecho en colaboración con un compañero.</p>
20<hr />
21<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>:</p>
22<pre><code>$ cassandra-3.11.6/bin/cassandra
23</code></pre>
24<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>:</p>
25<pre><code>$ cassandra-3.11.6/bin/cqlsh
26Connected to Test Cluster at 127.0.0.1:9042.
27[cqlsh 5.0.1 | Cassandra 3.11.6 | CQL spec 3.4.4 | Native protocol v4]
28Use HELP for help.
29cqlsh&gt;
30</code></pre>
31<h2 class="title" id="crear"><a class="anchor" href="#crear">¶</a>Crear</h2>
32<h3 id="crear_una_base_de_datos"><a class="anchor" href="#crear_una_base_de_datos">¶</a>Crear una base de datos</h3>
33<p>Cassandra denomina a las «bases de datos» como «espacio de claves» (keyspace en inglés).</p>
34<pre><code>cqlsh&gt; create keyspace helloworld with replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
35</code></pre>
36<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.</p>
37<h3 id="crear_una_tabla"><a class="anchor" href="#crear_una_tabla">¶</a>Crear una tabla</h3>
38<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>).</p>
39<pre><code>cqlsh&gt; use helloworld;
40cqlsh:helloworld&gt; create table greetings(id int primary key, message text, lang varchar);
41</code></pre>
42<h3 id="crear_una_fila"><a class="anchor" href="#crear_una_fila">¶</a>Crear una fila</h3>
43<p>Insertar nuevas filas es similar a otros sistemas gestores de datos, mediante la sentencia <code>INSERT</code>:</p>
44<pre><code>cqlsh:helloworld&gt; insert into greetings(id, message, lang) values(1, '¡Bienvenido!', 'es');
45cqlsh:helloworld&gt; insert into greetings(id, message, lang) values(2, 'Welcome!', 'es');
46</code></pre>
47<h2 id="leer"><a class="anchor" href="#leer">¶</a>Leer</h2>
48<p>La lectura se lleva a cabo mediante la sentencia <code>SELECT</code>:</p>
49<pre><code>cqlsh:helloworld&gt; select * from greetings;
50
51 id | lang | message
52----+------+--------------
53  1 |   es | ¡Bienvenido!
54  2 |   es |     Welcome!
55
56(2 rows)
57</code></pre>
58<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>
59<p><img src="image.png" alt="" /></p>
60<h2 id="actualizar"><a class="anchor" href="#actualizar">¶</a>Actualizar</h2>
61<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:</p>
62<pre><code>cqlsh:helloworld&gt; update greetings set lang = 'en' where id = 2;
63</code></pre>
64<h2 id="indexar"><a class="anchor" href="#indexar">¶</a>Indexar</h2>
65<pre><code>cqlsh:helloworld&gt; create index langIndex on greetings(lang);
66</code></pre>
67<h2 id="borrar"><a class="anchor" href="#borrar">¶</a>Borrar</h2>
68<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:</p>
69<pre><code>cqlsh:helloworld&gt; delete message from greetings where id = 1;
70</code></pre>
71<p>Para eliminar la fila entera, basta con no especificar la columna:</p>
72<pre><code>cqlsh:helloworld&gt; delete from greetings where id = 1;
73</code></pre>
74<h2 id="referencias"><a class="anchor" href="#referencias">¶</a>Referencias</h2>
75<ul>
76<li><a href="https://www.tutorialspoint.com/cassandra/cassandra_create_keyspace.htm">tutorialspoint – Creating a Keyspace using Cqlsh</a></li>
77<li><a href="https://www.tutorialspoint.com/cassandra/cassandra_cql_datatypes.htm">tutorialspoint – Cassandra – CQL Datatypes</a></li>
78<li><a href="https://www.tutorialspoint.com/cassandra/cassandra_create_table.htm">tutorialspoint – Cassandra – Create Table</a></li>
79<li><a href="https://data-flair.training/blogs/cassandra-crud-operation/">Data Flair – Cassandra Crud Operation – Create, Update, Read &amp; Delete</a></li>
80<li><a href="https://cassandra.apache.org/doc/latest/cql/indexes.html">Cassandra Documentation – Secondary Indexes</a></li>
81</ul>
82</main>
83</body>
84</html>
85