2017 05 Apache Cassandra
2017 05 Apache Cassandra
2017 05 Apache Cassandra
Apache Cassandra
Prof. Ascander Suárez Alejandra Cordero / 12-10645
Pablo Maldonado / 12-10561
Noviembre, 2017
CONTENIDOS
● 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
● 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
● 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
Keyspace
œ
MODELO DE DATOS DE APACHE CASSANDRA
● 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.
● 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.
○ 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.
● Soporte de JSON
○ Inserción de datos
○ Selección de datos
INSTALACIÓN - REQUISITOS
● 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