MongoDB
-
Upload
camposer -
Category
Engineering
-
view
79 -
download
0
Transcript of MongoDB
![Page 1: MongoDB](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/1.jpg)
MongoDBFundamentos
Rodolfo Campos@camposer
Madrid, Junio de 2015
![Page 2: MongoDB](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/2.jpg)
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](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/3.jpg)
Justificación
Tendencia: Usuarios de Facebook
![Page 4: MongoDB](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/4.jpg)
Justificación
Tendencia: Twitter. Tweets por día
![Page 5: MongoDB](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/5.jpg)
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](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/6.jpg)
Justificación
Tendencia: Crecimiento de la data en el mundo
![Page 7: MongoDB](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/7.jpg)
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](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/8.jpg)
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](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/9.jpg)
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](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/10.jpg)
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](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/11.jpg)
Escalabilidad vs Complejidad
![Page 12: MongoDB](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/12.jpg)
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](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/13.jpg)
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](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/14.jpg)
Teorema de CAP
![Page 15: MongoDB](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/15.jpg)
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](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/16.jpg)
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](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/17.jpg)
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](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/18.jpg)
Arquitectura Sharding con Replica
![Page 19: MongoDB](https://reader030.fdocuments.es/reader030/viewer/2022020218/55c07eb2bb61eb64708b468b/html5/thumbnails/19.jpg)
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