Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
1. Implementación de Almacenes de Datos
usando Gestores de Bases de Datos NOSQL
Ing. Roanny lamas López
@RoannyLL
Facebook.com/RoannyLL
27 de febrero de 2015
7. Y ellas querían libertad para irse
a ganar su dinero
El viejo sistema limitaba a estas empresas
8. “El problema fundamental es endémico a la mentalidad de una base de
datos relacional, que pone la carga de cómputo en la lectura más que
en la escritura. Esto es del todo equivocado para una aplicación web de
gran escala, en que el tiempo de respuesta es crítico.”
Ian Eure, Digg
12. Introducción a NOSQL
• NoSQL – es un término utilizado para describir un subconjunto de
bases de datos que difieren en varios aspectos de las bases de datos
tradicionales (RDBMS).
• No tienen schemas, no permiten JOINs, no intentan garantizar ACID y escalan
horizontalmente.
• El término fue acuñado en 1998 por Carlo Strozzi y resucitado en
2009 por Eric Evans.
• El propio Evans sugiere mejor referirse a esta familia de BBDD de nueva
generación como “Big Data”.
• Al igual que las bases de datos relacionales son tipos de
Almacenamiento Estructurado.
13. Introducción a NOSQL
• La principal diferencia radica en cómo guardan los datos (por
ejemplo, almacenamiento de un recibo):
• En un RDBMS tendríamos que distribuir la información en una o varias tablas.
• En NoSQL, simplemente guardas el recibo:
• NoSQL es libre de schemas, tú no diseñas tus tablas y su estructura por
adelantado.
• ¡¡¡NoSQL no es la solución!!!
• Si tus datos son relacionales, quedarte con tu RDBMS sería la opción correcta.
18. Son empresas que trabajan con aplicaciones web a gran escala
http://kwolek.org/andrew.htm
19. El teorema CAP
• Teorema de Brewer: “es imposible para un sistema computacional
distribuido ofrecer simultáneamente las siguientes tres garantías”:
• Consistencia (Consistency) – Todos los nodos ven los mismos datos al mismo
tiempo.
• Disponibilidad (Availability) – Garantiza que cada petición reciba una
respuesta acerca de si tuvo éxito o no. El fallo de uno o más nodos no impide
a los demás seguir funcionando.
• Tolerancia a la partición (Partition Tolerance) – El sistema continua
funcionando a pesar de pérdidas en los mensajes. (Las particiones son por lo
general de forma geográfica)
Un sistema puede tener no más de dos de estas tres características
simultáneamente.
20.
21. Características comunes de las DB NOSQL
• Consistencia eventual
• Estructura distribuida
• Escalabilidad horizontal
• Tolerancia a fallos y redundancia
25. Clasificación de las DB NOSQL
• Document Databases
• Graph Databases
• Key Value Data Stores
• Columnar Databases
26. Key Value Data Stores
• Su precursor fue Amazon Dynamo
• Basadas en DHT (Distributed Hash Tables)
• Modelo de datos: colección de pares clave/valor
27. Distributed Hash Table (DHT)
• Un distributed hash table (DHT) es una clase de sistema distribuido
que permite un servicio de lookup similar a un Hash Table
• Almacenan pares clave valor
• Cada nodo puede obtener eficientemente el valor asociado a una clave
• La responsabilidad de mantener los mapeos entre claves y valores está
distribuida entre los nodos
• Escalan a grandes números de nodos y gestionan la llegada continua de
nodos, salidas y fallos
28. Key Value Data Stores
• Riak (http://basho.com/riak/)
• Redis (http://redis.io/)
• Dynamo (http://aws.amazon.com/dynamodb/)
• Oracle NoSQL Database
(http://www.oracle.com/us/products/database/nosql/overview/index.html)
• Voldemort (http://www.project-voldemort.com/voldemort/)
• Aerospike (http://www.aerospike.com/)
• Berkeley DB (http://www.oracle.com/technology/products/berkeley-db)
• MemcacheDB (http://memcachedb.org/)
• memcached (http://memcached.org/)
• FoundationDB (https://foundationdb.com/)
30. • Su precursor es Google BigTable
• Modelo de datos: familia de columnas, esto es un modelo tabular
donde cada fila puede tener una configuración diferente de
columnas
• Buenas en:
• Gestión de tamaño
• Cargas de escrituras masivas orientadas al stream
• Alta disponibilidad
• MapReduce
Columnar Databases
33. • La precursora fue Lotus Notes
• Modelo de datos: colecciones de documentos que
contienen colecciones de claves-valor
• Buenas en:
• Modelado de datos natural
• Amigables al programador
• Desarrollo rápido
• Orientas a la web: CRUD
Document Databases
34. • Una base de datos orientada a documentos es un programa
diseñado para almacenar, recuperar y gestionar información semi-
estructurada orientada a documentos:
• Un documento encapsula información en un formato estándar (XML, YAML,
JSON o BSON):
• Los documentos en una BBDD orientada a documentos son similares a
registros pero no requieren un esquema estándar con la mismas
secciones, huecos, partes, claves y similar
• Los documentos suelen ser direccionables por una clave que los
representa unívocamente
• Además de la búsqueda por clave de documento, estas BBDD suelen
ofrecer una API o lenguaje de consultas que permite recuperar
documentos en base a sus contenidos
Document Databases
45. OLAP
Multidimensional Relacional Híbrido
• Toma de decisiones
• Reportes analíticos
• Alertas
• Análisis de Productos
• Análisis de Clientes
• Análisis de Facturación
• Análisis de la Producción
• Análisis de Servicios al cliente
• Evolución del Costo del producto
46. Definición de Almacén de Datos
“Un Data Warehouse es una colección de datos
orientados a temas, integrados, no volátiles y
variante en el tiempo, organizados para soportar
necesidades empresariales”.
W. H. Inmon, 2005
47. Concebir un Almacén de Datos
Niveles de la Arquitectura
de un Almacén de Datos:
• Operacional
• Datos del almacén
• Departamental
• Individual
Diseño de un Almacén
de Datos:
• Granularidad
• Particionamiento
• Desnormalización
Diseño Conceptual de
un Almacén de Datos:
• Hecho
• Dimensiones
• Medidas
• Cubo
Diseño lógico de un Almacén de
Datos:
• ETL
• Modelos Básicos Dimensionales
Diseño físico de un
Almacén de Datos:
• MOLAP
• ROLAP
• HOLAP
51. Apache Hive Apache Pig Apache HBase
Sqoop
Oozie
Hue
Flume Apache Whirr
Apache Zookeeper
Repositorio de
metadatos y lenguaje
SQL-like
Idioma de alto nivel
para expresar
programas de análisis
de datos
La base de datos de
Hadoop.Acceso
aleatorio,
lectura/escritura en
tiempo real
Servicio de
coordinación
distribuida altamente
confiable
Biblioteca para correr
Hadoop en la nube
Servicio distribuido
para la recogida y
agregación de datos
de registro y eventos
Interfaz de escritorio
basada en navegador
para interactuar con
Hadoop
Motor de workflow
basado en servidor
para actividades de
Hadoop
Integración de
Hadoop con RDBMS
Ecosistema HADOOP
55. Componentes básicos de HADOOP
• Hadoop Distributed File System (HDFS)
• Almacenamiento masivo redundante
alrededor de un cúmulo de materia.
• MapReduce
• Map: distribuir un problema
computacional a través de un clúster.
• Reduce: Nodo maestro recoge las
respuestas a todos los problemas
secundarios y los combina.
57. Implementación de Almacenes de Datos
usando Gestores de Bases de Datos NOSQL
Ing. Roanny lamas López
@RoannyLL
Facebook.com/RoannyLL
27 de febrero de 2015