2. Índice
• Introducción a NoSQL
• ¿Qué es Cassandra?
• Arquitectura
• Modelado de datos
• Otras consideraciones
3. Índice
• Introducción a NoSQL
• ¿Qué es Cassandra?
• Arquitectura
• Modelado de datos
• Otras consideraciones
4. Introducción a NoSQL
¿Qué es NoSQL?
➔ Un conjunto de bases de datos NO relacionales donde SQL ya no es
el único lenguaje de consulta
➔ Son sistemas distribuidos, almacenan información de forma no
estructurada o semiestructurada
➔ Emplean lenguajes de consultas distintos
➔ Son soluciones independientes desarrolladas por distintas compañías
➔ No permiten hacer JOINs
➔ No garantizan ACID
5. Introducción a NoSQL
Paradigmas de NoSQL
➔Escalabilidad horizontal (levantando nodos), frente a
escalabilidad vertical de las RDBMS (aumentando la
capacidad de cómputo)
➔Distribución
➔Flexibilidad en las estructuras de datos
➔Alto rendimiento en escenarios donde se producen
escrituras/lecturas de forma masiva
9. Introducción a NoSQL
Clasificación de los sistemas NoSQL
● Almacenes Clave-Valor
● Almacenes familias de columnas
● Almacenes de documentos
● Almacenes de grafos
12. Introducción a NoSQL
Desnormalización
➔Normalizar acaba con la redundancia de los datos, pero hace
más muchísimo más lentas las consultas al tener que
acceder a distintos esquemas de almacenamiento.
➔La desnormalización intenta agilizar las búsquedas, porque
en NoSQL se almacenan los términos de las consultas.
17. Introducción a NoSQL
Desnormalización
Relaciones 1:1
➔Se pone todo en el mismo esquema de almacenamiento
100, Max, Power, 01/01/1985
101, Bender, Bending, 02/01/1990
100, Max, Power, 01/01/1985, Responsable de seguridad
101, Bender, Bending, 02/01/1990, Doblador
100, Responsable de seguridad
101,Doblador
PERSONAS PUESTO PERSONAS_por_Puesto
18. Introducción a NoSQL
Desnormalización
Relaciones 1:N o N:N
➔Varias opciones:
● Tablas distintas claves
○ Ej: Usuarios, ideas_por_usuario, temas, ideas_por_temas,etc.
● Emplear colecciones (set, list, map)
19. Índice
• Introducción a NoSQL
• ¿Qué es Cassandra?
• Arquitectura
• Modelado de datos
• Otras consideraciones
20. Índice
• Introducción a NoSQL
• ¿Qué es Cassandra?
• Arquitectura
• Modelado de datos
• Otras consideraciones
21. ¿Qué es Cassandra?
➔Sistema NoSQL, distribuido y preparado para Big Data
➔Software libre (Apache Software Foundation)
APACHE
CASSANDRA
32. ¿Qué es Cassandra?
➔Novedades en la versión 3.0
● Soporte de JSON
● Índice globales
● Funciones definidas por el usuario
● Mejoras rendimiento (commitlog...)
● Compatibilidad con Microsoft Windows
● Mejoras seguridad
● Saldrá en Junio (aprox)
33. Índice
• Introducción a NoSQL
• ¿Qué es Cassandra?
• Arquitectura
• Modelado de datos
• Otras consideraciones
34. Índice
• Introducción a NoSQL
• ¿Qué es Cassandra?
• Arquitectura
• Modelado de datos
• Otras consideraciones
36. Arquitectura
➔Las filas se distribuyen mediante una función hash
➔Cada nodo es responsable de un rango de claves hash
➔La arquitectura puede ser vista como un anillo
41. Arquitectura
123
456
789
2015-20-01 27.8
2015-19-01 25.3
2015-10-01 23.4 12
2015-19-01 54.3 32
2015-09-01 24.03 10
➔Los datos se almacenan en tablas (column families)
➔Las tablas se guardan en keyspaces (bases de datos)
➔Las estructuras son flexibles
CLUSTERING KEYPARTITION KEY
42. Arquitectura
➔Nuevos nodos son añadidos gracias a nodos semilla
➔Protocolo de comunicación Gossip (cotilleos)
➔Nodos intercambian información (P2P)
4
1
2
5
3
6
¡Hola! Soy el nodo 2, semilla 1
Qué fuerte tío, mi red tiene estos
nodos, el 1 que menudo es... y...
¡Hola! Soy el nodo 6.
Uy uy, qué fuerte...
Te has
enterado....
No tenía ni
idea...
43. Arquitectura
➔Cliente puede contactar con cualquier nodo (coordinador)
➔Coordinador contacta con los nodos involucrados replicación
➔... o contactan con coordinadores locales de otros DC
➔Replicación se configura en el keyspace
A
Cliente
4
1
2
5
6
3
RF = 2
Coordinador = Nodo 4
A
44. Arquitectura
➔Cliente puede contactar con cualquier nodo (coordinador)
➔Coordinador contacta con los nodos involucrados replicación
➔... o contactan con coordinadores locales de otros DC
➔Replicación se configura en el keyspace
A
Cliente
4
1
2
5
6
3
RF = 2
Coordinador = Nodo 4
A
A A
47. Índice
• Introducción a NoSQL
• ¿Qué es Cassandra?
• Arquitectura
• Modelado de datos
• Otras consideraciones
48. Índice
• Introducción a NoSQL
• ¿Qué es Cassandra?
• Arquitectura
• Modelado de datos
• Otras consideraciones
49. Modelado de datos
CQL 3.0
➔CQL = Cassandra Query Language
➔No tiene nada que ver con SQL (solo se le parece)
➔Ayuda a los que vienen del mundo relacional
➔Hay que cambiar de lógica, NO HAY RELACIONES
50. Modelado de datos
CQL 3.0
CREATE KEYSPACE demo
WITH REPLICATION = { ‘class’ = ‘SimpleStrategy’, ‘replication_factor’ = 3 };
CREATE TABLE tweets_by_user (
user_id uuid,
created_at timestamp,
user text,
tweet text,
PRIMARY KEY (user_id, created_at));
51. Modelado de datos
CQL 3.0
CREATE KEYSPACE demo
WITH REPLICATION = { ‘class’ = ‘SimpleStrategy’, ‘replication_factor’ = 3 };
CREATE TABLE tweets_by_user (
user_id uuid,
created_at timestamp,
user text,
tweet text,
PRIMARY KEY (user_id, created_at));
PK CK
52. Modelado de datos
PARTITION KEY CLUSTERING KEY
123
456
789
2015-20-01 14:28:03
SELECT * FROM demo.tweets_by_user
WHERE user_id = ‘123’
AND timestamp >= ‘2015-20-01’;
demo.tweets_by_user
...
... ...
2015-18-01 22:12:14 ...
2015-20-01 13:18:33 ...
2015-20-01 11:05:22 ...
OBLIGATORIO
53. Modelado de datos
➔Conocer tus datos
➔Conocer tus consultas
➔Conocer el “workflow” del sistema
➔¡Optimización!
● Tamaño de los datos
● Tamaño de los particiones (límite 2 billones registros)
● Costes de las consultas y joins en el lado del cliente
● Uso adecuado de los drivers
54. Modelado de datos
➔¿Cómo modelar?
● Almacena los términos de la consulta
➔¿Hay dudas
● Replica la información
● Escalar el espacio es barato
55. Modelado de datos
Ejemplo
Descripción de los datos
➔ Hay espacios, edificios o zonas abiertas, que no se solapan y
contienen sensores.
➔ Los espacios están identificados por un nombre.
➔ Un sensor tiene un identificador único, localización y
características.
➔ Un sensor pertenece únicamente a un espacio.
➔ Un sensor proporciona medidas periódicamente.
56. Modelado de datos
ESPACIO SENSOR MEDIDAtiene toma
1 N N1
Nombre
#Sensores
Descripción
ID
Localización
Características
Marca tiempo
Valor
Parámetro
Ejemplo
57. Modelado de datos
Ejemplo
Consultas de la aplicación
➔ C1: Listar todos los espacios, ordenado por el nombre (ASC).
➔ C2: Encontrar la media de medidas de todos los sensores de un
espacio específico, ordenar por fecha (DESC).
➔ C3: Encontrar información de todos los sensores de un espacio
➔ C4: Obtener las medidas de un sensor en particular en un
tiempo en concreto, ordenar por la marca de tiempo (DESC).
58. Modelado de datos
C2
Ejemplo
➔ C1: Listar todos los espacios, ordenado por el nombre (ASC).
➔ C2: Encontrar la media de medidas de todos los sensores de un espacio específico,
ordenar por fecha (DESC).
➔ C3: Encontrar información de todos los sensores de un espacio
➔ C4: Obtener las medidas de un sensor en particular en un tiempo en concreto, ordenar por
la marca de tiempo (DESC).
Espacio
id
PK
nombre CK
datos
n_sensores
Medidas_por_sensor
sensor PK
fecha
PK
marca_tiemp CK
parametro
medida
Medidas_por_espacio
espacio PK
fecha
PK
marca_tiempo CK
sensor
localizacion
descripcion
media_medida
C1
Sensores_por_espacio
espacio PK
sensor CK
localizacion
descripcion
C2 C3 C4