Post on 13-Apr-2017
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
“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
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.
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.
Son empresas que trabajan con aplicaciones web a gran escala
http://kwolek.org/andrew.htm
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.
Características comunes de las DB NOSQL
• Consistencia eventual
• Estructura distribuida
• Escalabilidad horizontal
• Tolerancia a fallos y redundancia
RDBMS vs NOSQL
ACID
Atomicity
Consistency
Isolation
Durability
BASE
Basically Available
Soft-state
Eventual Consistency
RDBMS vs NOSQL
ACID
Atomicidad
Consistencia
Aislamiento
Durabilidad
BASE
BásicamenteDisponible
Flexible
ConsistenciaEventual
Clasificación de las DB NOSQL
• Document Databases
• Graph Databases
• Key Value Data Stores
• Columnar Databases
Key Value Data Stores
• Su precursor fue Amazon Dynamo• Basadas en DHT (Distributed Hash Tables)
• Modelo de datos: colección de pares clave/valor
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
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/)
• 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
Columnar Databases
• Cassandra (http://cassandra.apache.org/)
• Hbase (http://hbase.apache.org/)
• Amazon SimpleDB (http://aws.amazon.com/simpledb/)
• Apache Accumulo (http://accumulo.apache.org/)
• Hypertable (http://hypertable.org/)
• Azure Tables (http://www.windowsazure.com/en-us/develop/net/how-to-guides/table-services/)
• 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
• 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
Document Databases
• MongoDB (http://www.mongodb.org/)
• CouchDB (http://couchdb.apache.org/)
• Couchbase (http://www.couchbase.com/couchbase-open-source-project)
• RavenDB (http://ravendb.net/)
• MarkLogic (http://www.marklogic.com/what-is-marklogic/enterprise-nosql/)
• Inspiradas por Euler y la teoría de grafos
• Modelo de datos: nodos, relaciones con pares clave valor en ambos
Graph Databases
Graph Databases
• Neo4j (http://www.neo4j.org/)
• InfiniteGraph (http://www.objectivity.com/infinitegraph)
• AllegroGraph (http://www.franz.com/agraph/allegrograph/)
• HyperGraphDB (http://www.hypergraphdb.org/)
• OrientDB (http://www.orientdb.org/)
DB-Engines
DB-Engines is an initiative to collect and present information on database management systems (DBMS).
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
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
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
Apache Hive Apache Pig Apache HBase
SqoopOozie
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.Accesoaleatorio, 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 workflowbasado en servidor para actividades de Hadoop
Integración de Hadoop con RDBMS
Ecosistema HADOOP
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.