You are on page 1of 41

Universidad Simón Bolívar

Departamento de Computación y Tecnología de la Información


Ingeniería de Software II - (CI4712)

Apache Cassandra
Prof. Ascander Suárez Alejandra Cordero / 12-10645
Pablo Maldonado / 12-10561

Noviembre, 2017
CONTENIDOS

● Introducción - ¿Qué es Apache Cassandra?


● Casos en los que se usa Apache Cassandra.
● Caso de estudio - Spotify.
● Arquitectura.
● Funcionalidades principales de CQL.
● Instalación.
● Demostración.
● Conclusiones.
INTRODUCCIÓN -
¿QUÉ ES APACHE CASSANDRA?

● Sistema de Gestión de Bases de Datos NoSQL.


○ Distribuido
■ Puede correr en distintas máquinas mientras que es presentado a
los usuarios como un sistema único.
○ Descentralizado
■ Todos los nodos del sistema son considerados como iguales.
○ Escalable elásticamente - Horizontal
■ Se pueden agregar o eliminar nodos sin comprometer el
funcionamiento del sistema.
INTRODUCCIÓN -
¿QUÉ ES APACHE CASSANDRA?

● Sistema de Gestión de Bases de Datos NoSQL.


○ Altamente disponible y Tolerante a fallos
■ No existe lo que se conoce como un “Punto único de fallo”.
○ Código abierto
■ Fue creado en Facebook para mejorar la búsqueda de mensajes en la
bandeja de entrada.
■ Publicado en 2008 como un proyecto de código abierto en Google
Code.
■ En marzo de 2009 fue incluido en Apache Incubatorpara luego formar
parte de la Apache Software Foundation.
INTRODUCCIÓN -
¿QUÉ ES APACHE CASSANDRA?

● Sistema de Gestión de Bases de Datos NoSQL.


○ Orientado a “columnas”
■ Hace referencia a la forma en la que se almacenan los datos en
cuanto al número “flexible” de columnas para cada “fila” en la
Base de Datos.
■ Se verá en detalle más adelante.
○ “Libre” de esquemas
■ Se define un keyspace para las familias de columnas.
○ Consistencia ajustable
■ Nivel de consistencia.
CASOS EN LOS QUE SE USA APACHE
CASSANDRA

● Aplicaciones para Grandes Volúmenes de Datos


■ Análisis de datos en tiempo real.
■ Sistemas que involucren escritura intensiva de datos.
■ Análisis y consumo de datos en dispositivos de alta velocidad.
■ Carga de trabajo de grandes volúmenes de datos en tiempo real.
CASOS EN LOS QUE SE USA APACHE
CASSANDRA

● Algunos ejemplos
○ Juegos en línea
■ Mensajería instantánea.
○ Redes sociales
■ Creación y análisis de datos no estructurados.
○ Gestión de aplicaciones de streaming
■ Música, películas.
○ Comercio en lína
■ Transacciones de los usuarios, carritos de compra.
CASO DE ESTUDIO - SPOTIFY

● Servicio de música por streaming de origen Sueco.


● Se contabilizan más de 24 millones de canciones disponibles en el sitio.
● 40 millones de usuarios activos al mes.
● En sus inicios:
○ Manejo de información con una Base de Datos Relacional en
PostgreSQL.
○ Problemas de rendimiento y de escalabilidad.
CASO DE ESTUDIO - SPOTIFY

● Retos
○ Escalabilidad limitada entre data centers y zonas geográficas.
○ Un sistema relacional no garantiza el 100% de disponibilidad del
servicio de streaming.
○ Dificultad para analizar grandes volúmenes de datos.
CASO DE ESTUDIO - SPOTIFY

● Solución
○ Apache Cassandra para almacenar:
■ Catálogo de productos.
■ Listas de reproducción, estaciones de radio, notificaciones.
■ Listas personalizadas de artistas
■ Entre otros.
○ Replicación de datos en múltiples data centers sin un punto único de falla
para disponibilidad al 100%.
○ Integración con Apache Spark para procesamiento de datos y de
analíticas en tiempo real.
CASO DE ESTUDIO - SPOTIFY

● Resultados
○ Más de 1.5 billones de listas de reproducción creadas y gestionadas
en tiempo real.
○ Más de 40 mil solicitudes por segundo manejadas sin latencia
considerable.
○ Más de 500 nodos Cassandra repartidos en 4 mil servidores en 4 data
centers.
CASO DE ESTUDIO - OTRAS COMPAÑÍAS

● Facebook
○ Objetivo: optimizar la búsqueda de mensajes (Fork propietario)
● Netflix
○ Ratings de las películas, favoritos, historial de visualizaciones.
● Twitter
○ Analíticas.
○ Datos de geolocalización y de lugares de interés.
○ Minería de Datos.
ARQUITECTURA

● Creada bajo la concepción de que los errores de hardware y de sistema


pueden ocurrir.
● Arquitectura de red “de pares”, del inglés “peer-to-peer” que forma un
“anillo”.
● Comunicación entre los nodos a través de un protocolo de “gossip”.
● Capaz de manejar petabytes de información y miles de
usuarios/operaciones por segundo (a través de múltiples nodos).
● No existe la noción de “Punto único de falla”.
ARQUITECTURA - PEER TO PEER
ARQUITECTURA - PROTOCOLO GOSSIP

● Intercambio periódico del estado del propio nodo y de los otros nodos que
conoce.
● Ocurre cada segundo y el intercambio ocurre hasta con 3 nodos más del
cluster.
● Un mensaje gossip contiene una versión asociada. Esto permite conservar
sólo el más reciente.
● Un nodo recuerda los nodos con los que ha hecho gossip.
REPLICACIÓN Y DISTRIBUCIÓN DE LOS DATOS

● Distribución automática de los datos a través de todos los nodos que


participan en el “anillo”.
○ Esto se puede hacer de forma aleatoria u ordenada.
● Facilidad de configuración de la replicación
○ El administrador sólo debe indicar cuántas réplicas de los datos
desea en cada nodo.
LECTURA Y ESCRITURA DE LOS DATOS

● Diseño de lectura/escritura de datos en “cualquier lugar”.


● Secuencia de escritura:
○ Commit log.
○ Memtable.
○ Sstable (sorted string table).
● Ofrece “AID” de las propiedades ACID.
○ Atomic.
○ Isolated.
○ Durable.
○ Consistent, es ajustable.
LECTURA Y ESCRITURA DE LOS DATOS
CONSISTENCIA DE LOS DATOS

● El administrador puede decidir el nivel de consistencia que garantizará el


sistema.
○ Fuerte - todos los nodos deben responder antes de que una
transacción sea considerada como completa.
○ Eventual - un nodo responde y los demás se van actualizando de
forma progresiva.
■ Ejemplo: actualización de un post en una red social.
● El nivel de consistencia se puede configurar por operación (SELECT,
INSERT, UPDATE, DELETE)
MODELO DE DATOS DE APACHE CASSANDRA

Keyspace

● Keyspace: Serían las bases de Familia de columnas


datos en los modelos
Filas
relacionales.
○ Replication factor Columnas

œ
MODELO DE DATOS DE APACHE CASSANDRA

● Familia de columnas: Sería el


análogo de las tablas en los
modelos relacionales.
● Filas: Son los identificadores de
las columnas.
● Columnas. Permiten primary y
secondary indexes.
○ Clave
○ Valor
MODELO DE DATOS DE APACHE CASSANDRA

● Familia de columnas: Sería el


análogo de las tablas en los
modelos relacionales. Hotel{
● Filas: Son los identificadores de key: NYN_04 {
name: Waldorf Hotel,
de las columnas. phone: 212-555-5555
● Columnas. Estructura de datos }
}
mas básica de Cassandra.
○ Clave
○ Valor
MODELO DE DATOS DE APACHE CASSANDRA

● Super columnas: Tipo especial


de columna que puede
almacenar como valor más Cines{
columnas. key: Caracas {
key: Cines Unidos 1 {
ubicación: CC.el Líder,
número_salas: 9
}
}
ESTRUCTURA DE APACHE CASSANDRA

● Los objetos son creados y manipulados a través del Lenguaje de


Consultas de Cassandra, CQL, del inglés “Cassandra Query Language”.
○ Similar a SQL.
● No posee SQL joins.
● Existen drivers para el uso de Apache Cassandra en distintos lenguajes.
○ Java, Python, Ruby, C# / .NET, NodeJs, PHP, C++, Scala, Clojure, Erlang,
Go, Haskell, Rust, Perl.
CQL - FUNCIONALIDADES PRINCIPALES

● Tipos de datos:
○ Nativos
○ Creados por los usuarios
CQL - FUNCIONALIDADES PRINCIPALES

● Manipulación de keyspace
○ Creación de un keyspace.
CREATE KEYSPACE Prueba
WITH replication = {‘class’: ‘SimpleStrategy’, ‘replication_factor’ : 3};

○ Modificación de un keyspace.
ALTER KEYSPACE Prueba
WITH replication = {‘class’: ‘SimpleStrategy’, ‘replication_factor’ : 4};
CQL - FUNCIONALIDADES PRINCIPALES

● Manipulación de keyspace
○ Eliminación de un keyspace.

DROP KEYSPACE Prueba;


CQL - FUNCIONALIDADES PRINCIPALES

● Manipulación de tablas
○ Creación de tablas.
CREATE TABLE timeline (
userid uuid,
posted_month int,
body text,
posted_by text,
PRIMARY KEY (userid, posted_month)
) WITH compaction = {‘class’: ‘LeveledCompactionStrategy’};
CQL - FUNCIONALIDADES PRINCIPALES

● Manipulación de tablas
○ Modificación de tablas.
ALTER TABLE timeline ADD comments text;

○ Eliminación de tablas.

DROP TABLE timeline;


CQL - FUNCIONALIDADES PRINCIPALES
● Manipulación de datos
○ SELECT.
SELECT time, value
FROM events
WHERE event_type = ‘myEvent’
AND time > ‘2011-02-03’
AND time >= ‘2011-01-01’

○ INSERT.
INSERT INTO Movies (movie, director, main_actor, year)
VALUES (‘Serenity’, ‘Joss’, ‘Nathan’, 2005)
CQL - FUNCIONALIDADES PRINCIPALES

● Manipulación de datos
○ UPDATE.
UPDATE Movies USING TTL 400
SET year = 2005
WHERE movie = ‘Serenity’;
○ DELETE.
DELETE FROM Movies
WHRE movie = ‘Serenity’;
CQL - FUNCIONALIDADES PRINCIPALES

● Manipulación de datos
○ BATCH.

BEGIN BATCH
INSERT INTO users (userid, password, name) VALUES (‘user2’, ‘1234’, ‘otro user’)
UPDATE users SET password = ‘5678’ WHERE userid = ‘user3’;
DELETE name FROM users WHERE userid = ‘user1’;
APPLY BATCH;
CQL - FUNCIONALIDADES PRINCIPALES

● Triggers
○ Creación de triggers.
CREATE TRIGGER myTrigger ON myTable USING ‘cassandra.triggers.InvertedIndex’;

○ Eliminción de triggers.

DROP TRIGGER myTrigger ON myTable;


CQL - FUNCIONALIDADES PRINCIPALES

● Soporte de JSON
○ Inserción de datos
○ Selección de datos
INSTALACIÓN - REQUISITOS

● La última versión de Java 8. Puede ser:


○ OpenJDK8.
○ Oracle Java Standard Edition 8.
● Para usar el shell de CQL (cqlsh)
○ Python 2.7
INSTALACIÓN

● Linux
○ En Linux se instala mediante el manejador de paquetes.
● Windows
○ Descargar e instalar el ejecutable que se encuentra en la página de
DataStax Community.
● MacOS
○ Descargar el paquete de instalación que se encuentra en la página de
DataStax y ejecutar el script que se encuentra dentro del mismo.
DEMOSTRACIÓN
CONCLUSIONES

● Apache Cassandra permite resolver problemas de sistemas que involucran


grandes volúmenes de datos.
○ Eficiencia en cuanto a disponibilidad y tolerancia a fallas.
○ Facilidad para su escalabilidad horizontal.
● No es la solución perfecta para todos los problemas de gestión de datos.
○ Es necesario definir los requerimientos de la aplicación a desarrollar
para determinar si vale la pena utilizar un enfoque no relacional.
¿PREGUNTAS?
REFERENCIAS CONSULTADAS

● Hewitt, Eben. “Cassandra: The Definitive Guide”. 2011. Capítulos 1 al 3.


● Apache Software Foundation. “Apache Cassandra Documentation v4.0”.
Disponible en internet: http://cassandra.apache.org/doc/latest/. Consultado el:
18 de noviembre de 2017.
● Datastax. “Internode communications (gossip)”. Disponible en internet:
http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/architecture/
architectureGossipAbout_c.html. Consultado el: 18 de noviembre de 2017.
REFERENCIAS CONSULTADAS

● Datastax. “SPOTIFY SUPPORTS 40K REQUESTS/ SECOND TO DELIVER THE


RIGHT MUSIC TO THEIR CUSTOMERS’ FINGERTIPS”. Disponible en internet:
https://www.datastax.com/wp-content/themes/datastax-2014-08/images/cas
e-studies/DataStax-CS-Spotify.pdf. Consultado el: 18 de noviembre de 2017.

You might also like