desarrollo de almacenes de datos con sistemas gestores de bases de datos nosql

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

Upload: geocom-uruguay-sa

Post on 13-Apr-2017

388 views

Category:

Data & Analytics


7 download

TRANSCRIPT

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

Introducción

Las RDBMS han sido la primera opción, pero,

... los problemas nos alcanzaron

Amazon necesitaba disponibilidad total y tolerancia a fallas

Google necesitaba almacenar petabytesen un sistema distribuido entre miles de servidores

Facebook necesitaba disponibilidad,y desempeño sin límite de nodos

Y ellas querían libertad para irsea ganar su dinero

El viejo sistema limitaba a estas empresas

“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

NO SQLNo significa lo que estás pensando

X

Introducción a NOSQL

Not-Only SQLX

Introducción a NOSQL

NO RELX

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.

Amazon desarrolló Dynamo

Google inventó BigTable

Facebook creó Cassandra

Digg adoptó Cassandra

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 DB NOSQL

RDBMS

ACID

DB NOSQL

BASE

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/)

Key Value Data Stores

• 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/)

Columnar Databases

• 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/)

Document Databases

• 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/)

Graph Databases

DB-Engines

DB-Engines is an initiative to collect and present information on database management systems (DBMS).

SQL vs NOSQL

Inteligencia de Negocios

OLTP vs OLAP

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

Desarrollo

NO SQLX

Ecosistema HADOOP

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

Ecosistema HADOOP

Ecosistema HADOOP

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.

Diseño de un esquema HBASE

VS

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