MongoDB

19
MongoDB Fundamentos Rodolfo Campos @camposer Madrid, Junio de 2015

Transcript of MongoDB

Page 1: MongoDB

MongoDBFundamentos

Rodolfo Campos@camposer

Madrid, Junio de 2015

Page 2: MongoDB

Agenda●Introducción a las Bases de datos NoSQL●MongoDB

● Filosofía y conceptos● Modelo de los documentos (JSON) ● Operaciones sobre MongoDB: Crear, leer, actualizar y borrar● Indexación

●Características especiales● Soporte Geoespacial● GridFS● MapReduce

●Administración● Backup y recovery● Replicación● Sharding

Page 3: MongoDB

Justificación

Tendencia: Usuarios de Facebook

Page 4: MongoDB

Justificación

Tendencia: Twitter. Tweets por día

Page 5: MongoDB

Justificación

En 2013:●Walmart maneja más de 1M de transacciones por hora●Google procesa aprox. 24PB de data al día●AT&T transfiere aprox. 30PB de data al día●Todos los días son enviados aprox. 90 trillones de correos electrónicos●World of Warcraft utiliza 1.3PB de almacenamiento

Page 6: MongoDB

Justificación

Tendencia: Crecimiento de la data en el mundo

Page 7: MongoDB

Definición

Según Wikipedia en Español, Big Data es:●Big Data es en el sector de tecnologías de la información y la comunicación una referencia a los sistemas que manipulan grandes conjuntos de datos (o data sets). ●Las dificultades más habituales en estos casos se centran en la captura, el almacenado, búsqueda, compartición, análisis, y visualización. ●La tendencia a manipular ingentes cantidades de datos se debe a la necesidad en muchos casos de incluir los datos relacionados del análisis en un gran conjunto de datos relacionado, tal es el ejemplo de los análisis de negocio, los datos de enfermedades infecciosas, o la lucha contra el crimen organizado.

Page 8: MongoDB

El almacenamiento●El almacenamiento se lleva a cabo generalmente apoyándose en motores de bases de datos NoSQL●El volumen de datos es un reto, por lo que las escalabilidad y la

tolerancia a fallos son de los principales retos a manejar.●Generalmente el almacenamiento se realiza en Sistemas●Distribuidos en lugar de Centralizados.

Page 9: MongoDB

La búsqueda●La búsqueda de datos se realiza a través de diferentes herramientas, generalmente: lenguajes SQL, pseudo SQL y específicos.●Debido a la naturaleza, generalmente distribuida del almacenamiento, algunos motores se valen de entornos de trabajo específicos como MapReduce que buscan operar sobre los diferentes nodos del sistema de forma independiente y generar resultados independientes a partir de estos

Page 10: MongoDB

El análisis●El análisis de los datos se realiza de forma inline y offline, dependiendo del problema a resolver y del motor de base de datos utilizado.●La mayoría de motores de bases de datos (en la mayoría NoSQL) proveen conectores para trabajar con los lenguajes de programación más populares.●Si el problema a resolver no requiere de un mayor procesamiento, el análisis de los datos se puede elaborar de forma inline, en caso contrario, se suelen utilizar técnicas offline (Ej. trabajos por lote).

Page 11: MongoDB

Escalabilidad vs Complejidad

Page 12: MongoDB

NoSQL

Según la Wikipedia en Español, NoSQL se refiere a:●Una amplia clase de sistemas de gestión de bases de datos que difieren del modelo clásico del sistema de gestión de bases de datos relacionales (RDBMS) en aspectos importantes, el más destacado que no usan SQL como el principal lenguaje de consultas.●Los datos almacenados no requieren estructuras fijas como tablas, normalmente no soportan operaciones JOIN, ni garantizan completamente ACID (atomicidad, coherencia, aislamiento y durabilidad), y habitualmente escalan bien horizontalmente.

Page 13: MongoDB

Motores NoSQL●Los tipos de motores NoSQL más importantes son:●Tabulares (Ej. Cassandra, HBase)●Orientadas a documentos (Ej. MongoDB)●De clave-valor (Ej. Redis)●Orientadas a grafos (Ej. Neo4J)

Page 14: MongoDB

Teorema de CAP

Page 15: MongoDB

Map – Shuffle – Reduce

Map(k1, v1) => list(k2, v2)Reduce(k2, list(v2)) => list(v3)

// Cuenta número de palabras// por documento

function map(String name, String document) { for each word w in document: emit (w, 1)}

function reduce(String word, Iterator partialCounts) { sum = 0 for each pc in partialCounts: sum += ParseInt(pc) emit (word, sum)}

Page 16: MongoDB

MongoDB

Según Wikipedia en Español:●MongoDB (de la palabra en inglés “humongous” que significa enorme) es un sistema de base de datos NoSQL orientado a documentos, desarrollado bajo el concepto de código abierto.●MongoDB guarda estructuras de datos en documentos tipo JSON con un esquema dinámico (MongoDB llama ese formato BSON)●El código binario está disponible para los sistemas operativos Windows, Linux, OS X y Solaris.

Page 17: MongoDB

Características principales●Consultas Ad hoc●Consistencia eventual●Indexación●Replicación●Balanceo de carga (con Sharding)●Almacenamiento de archivos●Agregación (MapReduce y Pipeline)●Ejecución de JavaScript del lado del servidor

Page 18: MongoDB

Arquitectura Sharding con Replica

Page 19: MongoDB

Pros y Cons●Pros:

● Schema-less● Facilidad para escalar horizontalmente● Costo● Diferentes niveles de consistencia

●Cons:● Cada documento es autodescriptivo y esto incrementa su

tamaño● Queries limitadas (Ej. no JOINs)● No hay soporte transaccional – Consistencia eventual● Implementación de MapReduce simple● Documentación no siempre actualizada

(*) Fuente original