Publicité
Publicité

Contenu connexe

Publicité
Publicité

MongoDB

  1. MongoDB Fundamentos Rodolfo Campos @camposer Madrid, Junio de 2015
  2. 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
  3. Justificación Tendencia: Usuarios de Facebook
  4. Justificación Tendencia: Twitter. Tweets por día
  5. 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
  6. Justificación Tendencia: Crecimiento de la data en el mundo
  7. 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.
  8. 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.
  9. 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
  10. 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).
  11. Escalabilidad vs Complejidad
  12. 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.
  13. 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)
  14. Teorema de CAP
  15. 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) }
  16. 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.
  17. 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
  18. Arquitectura Sharding con Replica
  19. 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
Publicité