2017 05 Apache Cassandra

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 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.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy