all repos — gemini-redirect @ 920dbf76a2de03bdf23db741d4ca79433c7e3b7e

blog/mdad/cassandra-introduccion/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: Introducción | 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: Introducción</h1><div class=time><p>2020-03-05T00:00:33+00:00<p>last updated 2020-03-30T09:28:07+00:00</div><p><img src=https://lonami.dev/blog/mdad/cassandra-introduccion/1200px-Cassandra_logo.png><p>Este es el primer post en la serie sobre Cassandra, en el cuál introduciremos dicha bases de datos NoSQL y veremos sus características e instalación.<p>Otros posts en esta serie:<ul><li><a href=/blog/mdad/cassandra-introduccion/>Cassandra: Introducción</a> (este post)<li><a href=/blog/mdad/cassandra-operaciones-basicas-y-arquitectura/>Cassandra: Operaciones Básicas y Arquitectura</a></ul><p>Este post está hecho en colaboración con un compañero.<hr><h2 id=finalidad-de-la-tecnologia>Finalidad de la tecnología</h2><p>Apache Cassandra es una base de datos NoSQL distribuida y de código abierto (<a href=https://github.com/apache/cassandra>con un espejo en GitHub</a>). Su filosofía es de tipo «clave-valor», y puede manejar grandes volúmenes de datos<p>Entre sus objetivos, busca ser escalable horizontalmente (puede replicarse en varios centros manteniendo la latencia baja) y alta disponibilidad sin ceder en rendimiento.<h2 id=como-funciona>Cómo funciona</h2><p>Instancias de Cassandra se distribuyen en nodos iguales (es decir, no hay maestro-esclavo) que se comunican entre sí (P2P). De este modo, da buen soporte entre varios centros de datos, con redundancia y réplicas síncronas.<p><img src=https://lonami.dev/blog/mdad/cassandra-introduccion/multiple-data-centers-and-data-replication-in-cassandra.jpg><p>Con respecto al modelo de datos, Cassandra particiona las filas con el objetivo de re-organizarla a lo largo distintas tablas. Como clave primaria, se usa un primer componente conocido como «clave de la partición». Dentro de cada partición, las filas se agrupan según el resto de columnas de la clave. Cualquier otra columna se puede indexar independientemente de la clave primaria.<p>Las tablas se pueden crear, borrar, actualizar y consultar sin bloqueos. No hay soporte para JOIN o subconsultas, pero Cassandra prefiere de-normalizar los datos haciendo uso de características como coleciones.<p>Para realizar las operaciones sobre cassandra se usa CQL (Cassandra Query Language), que tiene una sintaxis muy similar a SQL.<h2 id=caracteristicas>Características</h2><p>Como ya hemos mencionado antes, la arquitectura de Cassandra es <strong>decentralizada</strong>. No tiene un único punto que pudiera fallar porque todos los nodos son iguales (sin maestros), y por lo tanto, cualquiera puede dar servicio a la petición.<p>Los datos se encuentran <strong>replicados</strong> entre los distintos nodos del clúster (lo que ofrece gran <strong>tolerancia a fallos</strong> sin necesidad de interrumpir la aplicación), y es trivial <strong>escalar</strong> añadiendo más nodos al sistema.<p>El nivel de <strong>consistencia</strong> para lecturas y escrituras es configurable.<p>Siendo de la familia Apache, Cassandra ofrece integración con Apache Hadoop para tener soporte MapReduce.<h2 id=arista-dentro-del-teorema-cap>Arista dentro del Teorema CAP</h2><p>Cassandra se encuentra dentro de la esquina «AP» junto con CouchDB y otros, porque garantiza tanto la disponibilidad como la tolerancia a fallos.<p>Sin embargo, puede configurarse como un sistema «CP» si se prefiere respetar la consistencia en todo momento.<p><img src=https://lonami.dev/blog/mdad/cassandra-introduccion/0.jpeg><h2 id=descarga>Descarga</h2><p>Se pueden seguir las instrucciones de la página oficial para <a href=https://cassandra.apache.org/download/>descargar Cassandra</a>. Para ello, se debe clicar en la <a href=https://www.apache.org/dyn/closer.lua/cassandra/3.11.6/apache-cassandra-3.11.6-bin.tar.gz>última versión para descargar el archivo</a>. En nuestro caso, esto es el enlace nombrado «3.11.6», versión que utilizamos.<h2 id=instalacion>Instalación</h2><p>Cassandra no ofrece binarios para Windows, por lo que usaremos Linux para instalarlo. En nuestro caso, tenemos un sistema Linux Mint (derivado de Ubuntu), pero una máquina virtual con cualquier Linux debería funcionar.<p>Debemos asegurarnos de tener Java y Python 2 instalado mediante el siguiente comando:<pre><code>apt install openjdk-8-jdk openjdk-8-jre python2.7
 2</code></pre><p>Para verificar que la instalación ha sido correcta, podemos mostrar las versiones de los programas:<pre><code>$ java -version
 3openjdk version "1.8.0_242"
 4OpenJDK Runtime Environment (build 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08)
 5OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
 6
 7$ python2 --version
 8Python 2.7.17
 9</code></pre><p>Una vez las dependencias estén instaladas, extraemos el fichero descargado o bien mediante la interfaz gráfica de nuestro sistema, o bien mediante un comando:<pre><code>tar xf apache-cassandra-3.11.6-bin.tar.gz
10</code></pre><p>Y finalmente, lanzar la ejecución de Cassandra:<pre><code>apache-cassandra-3.11.6/bin/cassandra
11</code></pre><p>Es posible que tarde un poco en abrirse, pero luego debería haber muchas líneas de log indicando. Para apagar el servidor, simplemente basta con pulsar <code>Ctrl+C</code>.<h2 id=referencias>Referencias</h2><ul><li><a href=https://blog.yugabyte.com/apache-cassandra-architecture-how-it-works-lightweight-transactions/>Apache Cassandra Architecture Fundamentals – The Distributed SQL Blog</a><li><a href=https://cassandra.apache.org/>Apache Cassandra</a><li><a href=https://www.datastax.com/blog/2019/05/how-apache-cassandratm-balances-consistency-availability-and-performance>How Apache Cassandra™ Balances Consistency, Availability, and Performance – Datasax</a><li><a href=https://blog.yugabyte.com/apache-cassandra-architecture-how-it-works-lightweight-transactions/>Apache Cassandra Architecture Fundamentals</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!