SlideShare une entreprise Scribd logo
1  sur  35
@sgcampus
@sgcampus
Arturo Ivan Govea Flores
El poder de las NoSQL con MongoDB
Objetivos de la Plática
Objetivo: Mostrar una “Big Picture” sobre las ventajas de utilizar MongoDB con detalles finos y
ejemplos prácticos
Arturo Govea
Telematics Engineer
-Chief Architect at modelonow.com by Sngular
-Platform “BTL | MOBILE & ANALYTICS” (start-up mintelligence.mx) a logistic
system for retail companies.
Table tennis/Play guitar
https://www.linkedin.com/in/agoveaarch
NoSQL(Not Only Sql) vs SQL
● Las aplicaciones actuales crecen velozmente para adaptarse a las nuevas
maneras de consumo
● Esto implica romper paradigmas y ver de diferente perspectiva todo lo que
nos enseñaron… al menos en la creación de software
● El modelo relacional está desde 1970 y SQL desde 1984
“Hay que aprender a
desaprender”
Si sabes que guardas sabes que construyes
¿Que tipo de información se almacena?
¿MB,GB...TB?
¿Se escribe más que leer?
¿Se calculan Montos?
¿Solo catálogos?
¿Necesitamos Agregaciones exacta?
¿Se almacenan puntos geolocalizados?
El movimiento NoSQL… ¿Cúal es el Mejor?
Tipos de NoSql
POO … ¿Que es un Objeto?
● Un objeto es la abstracción de un ente del mundo real al mundo virtual,
generalmente de todo lo que hacemos
-Consumidor
-Producto
-nombre
-edad
-correo
-celular
-Nombre
-monto
-SKU
-presentación
Objeto -> Entidad Relación -> SQL -> Objeto
Filosofía NoSql
● Los objetos se guardan de manera natural sin tener que pasar por un
proceso intermedio
NoSQL
Query
Lenguague
“¿Los joins son costosos?”
Mitos sobre NoSQL
● No se pueden manejar transacciones, por lo tanto puedes perder datos
● No es bueno para manejar montos($)
● No se puede usar en e-commerce
● No existen Joins por lo tanto no puedes relacionar datos
● No soportan agregaciones de datos
● Solo sirve para pequeñas aplicaciones
● No son robustas
Verdades NoSQL
● Pueden ser hasta un 35 veces más rápidas que una base de datos relacional
● Puedes tener soluciones Híbridas y utilizar diferentes NoSQL en el mismo
proyecto
● El soportar las transacciones queda de nuestro lado
● Hay una nueva guerra entre NoSQL
MongoDB
● Almacena documentos JSON
(Orientada 100% a objetos)
● Soporta tolerancia a fallos y escala
horizontalmente casi instantáneamente
● El verdadero poder de mongo es el
soportar documentos embebidos
● Tiene un poderoso Query Language
(Agregation Pipeline) para poder
explotar los datos
● Soporta agregación exacta
SQL -> MongoDB
Documentos
JSON
Documentos embebidos
1
2
3
4
5
6
7
AHORRAR 7 POSIBLES
JOINS EN UNA
CONSULTA
Linking
ORDER
LOCALITY
let's play….
● Dowloas mongo 3.2 https://www.mongodb.com/download-center#community
● Data:
https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/prim
er-dataset.json
● cd mongo/bin
● ./mongod
● ./mongo
● mongoimport --db test --collection restaurants --drop --file ~/downloads/primerdataset.json
CRUD
Find
Query Operators
Verdades NoSQL 2
● Las colecciones tienen un tamaño máximo de 32 MB (no muy recomendable)
● Por default el tamaño de las colecciones son de 16 MB
● Cuando se modifica un documento esta se bloquea (Atomicidad)
● Las agregaciones regresan 1 documento por lo que estan limitadas de 16 a
32 MB
● Los id de mongo son irrepetibles, ya que toman el timestamp, macaddress y
un numero random para su generación
● Mongo debe soporte índices únicos
● Para mejorar el performance hay que utilizar índices
● Mientras más se utilicen índices más se tarda en hacer el insert
Map Reduce & Agregation Pipeline
● ¿ Que nos dicen los datos si no los podemos agrupar ?
● ¿Que pasa si los datos están distribuidos en múltiples nodos?
● El escalamiento horizontal supone un reto para muchos casos de uso, en
especial para las agregaciones en datos que están distribuidos en la nube
Map Reduce & Agregation Pipeline
edad:22
edad:35
edad:18
1 NODO
edad:15
edad:50
edad:1
edad:1
edad:15
edad:18
edad:22
edad:35
edad:50
Map Reduce & Agregation Pipeline
edad:22
edad:35
edad:18
edad:15
edad:50
edad:1
NODO 1 NODO 2 NODO 3
Map Reduce & Agregation Pipeline
edad:22
edad:35
edad:18
edad:15
edad:50
edad:1
NODO 1 NODO 2 NODO 3
MongoDB - Fail Over
¿ Ya acabamos?
● Conector de BI
● Integración Spring Data / NodeJs
● Seguridad
● Infraestructura
● Geolocalización
● Manejo de indices
GRACIAS… ¿Preguntas?

Contenu connexe

Similaire à Lunch & Learn: El poder de las NoSQL con mongoDB

Investigación de sobre los conceptos que se deben de tratar en Mongo DB
Investigación de sobre los conceptos que se deben de tratar en Mongo DBInvestigación de sobre los conceptos que se deben de tratar en Mongo DB
Investigación de sobre los conceptos que se deben de tratar en Mongo DBJeffLere
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db.. ..
 
Instalacion mongo db_2.4.9
Instalacion mongo db_2.4.9Instalacion mongo db_2.4.9
Instalacion mongo db_2.4.9Daniel Moo Moo
 
Características MONGO DB
Características MONGO DBCaracterísticas MONGO DB
Características MONGO DBmaxfontana90
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrolloJuan Ladetto
 
Mongo bd michael landeo vargas
Mongo bd michael landeo vargasMongo bd michael landeo vargas
Mongo bd michael landeo vargasMichaelAngel1000
 
MongoDB Atlas: La mejor forma de utilizar MongoDB en la nube 1
MongoDB Atlas: La mejor forma de utilizar  MongoDB en la nube 1MongoDB Atlas: La mejor forma de utilizar  MongoDB en la nube 1
MongoDB Atlas: La mejor forma de utilizar MongoDB en la nube 1MongoDB
 
Software libre y abierto en la empresa y la enseñanza de sistemas
Software libre y abierto en la empresa y la enseñanza de sistemasSoftware libre y abierto en la empresa y la enseñanza de sistemas
Software libre y abierto en la empresa y la enseñanza de sistemasJuan Eladio Sánchez Rosas
 
Cloud para tu juego en una tarde
Cloud para tu juego en una tardeCloud para tu juego en una tarde
Cloud para tu juego en una tardeIgnacio Segura
 
Seminario web: Simplificando el uso de su base de datos con Atlas
Seminario web: Simplificando el uso de su base de datos con AtlasSeminario web: Simplificando el uso de su base de datos con Atlas
Seminario web: Simplificando el uso de su base de datos con AtlasMongoDB
 
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.Victor Cuervo
 
Mongodb: Un pequeño sorbo
Mongodb: Un pequeño sorboMongodb: Un pequeño sorbo
Mongodb: Un pequeño sorboAbirtone S.L.
 

Similaire à Lunch & Learn: El poder de las NoSQL con mongoDB (20)

Investigación de sobre los conceptos que se deben de tratar en Mongo DB
Investigación de sobre los conceptos que se deben de tratar en Mongo DBInvestigación de sobre los conceptos que se deben de tratar en Mongo DB
Investigación de sobre los conceptos que se deben de tratar en Mongo DB
 
Mongo db
Mongo dbMongo db
Mongo db
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db
 
FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017
 
Instalacion mongo db_2.4.9
Instalacion mongo db_2.4.9Instalacion mongo db_2.4.9
Instalacion mongo db_2.4.9
 
Mongo db
Mongo dbMongo db
Mongo db
 
Semana 3 Mongodb
Semana 3   MongodbSemana 3   Mongodb
Semana 3 Mongodb
 
Mongodb
MongodbMongodb
Mongodb
 
Características MONGO DB
Características MONGO DBCaracterísticas MONGO DB
Características MONGO DB
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrollo
 
Introducción a ROS
Introducción a ROSIntroducción a ROS
Introducción a ROS
 
Mongo bd michael landeo vargas
Mongo bd michael landeo vargasMongo bd michael landeo vargas
Mongo bd michael landeo vargas
 
MongoDB Atlas: La mejor forma de utilizar MongoDB en la nube 1
MongoDB Atlas: La mejor forma de utilizar  MongoDB en la nube 1MongoDB Atlas: La mejor forma de utilizar  MongoDB en la nube 1
MongoDB Atlas: La mejor forma de utilizar MongoDB en la nube 1
 
Software libre y abierto en la empresa y la enseñanza de sistemas
Software libre y abierto en la empresa y la enseñanza de sistemasSoftware libre y abierto en la empresa y la enseñanza de sistemas
Software libre y abierto en la empresa y la enseñanza de sistemas
 
MongoDB
MongoDBMongoDB
MongoDB
 
Cloud para tu juego en una tarde
Cloud para tu juego en una tardeCloud para tu juego en una tarde
Cloud para tu juego en una tarde
 
Seminario web: Simplificando el uso de su base de datos con Atlas
Seminario web: Simplificando el uso de su base de datos con AtlasSeminario web: Simplificando el uso de su base de datos con Atlas
Seminario web: Simplificando el uso de su base de datos con Atlas
 
NoSQL, Mongo DB & Google Maps
NoSQL, Mongo DB & Google MapsNoSQL, Mongo DB & Google Maps
NoSQL, Mongo DB & Google Maps
 
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
 
Mongodb: Un pequeño sorbo
Mongodb: Un pequeño sorboMongodb: Un pequeño sorbo
Mongodb: Un pequeño sorbo
 

Plus de Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

Plus de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Lunch & Learn: El poder de las NoSQL con mongoDB

  • 1. @sgcampus @sgcampus Arturo Ivan Govea Flores El poder de las NoSQL con MongoDB
  • 2. Objetivos de la Plática Objetivo: Mostrar una “Big Picture” sobre las ventajas de utilizar MongoDB con detalles finos y ejemplos prácticos
  • 3. Arturo Govea Telematics Engineer -Chief Architect at modelonow.com by Sngular -Platform “BTL | MOBILE & ANALYTICS” (start-up mintelligence.mx) a logistic system for retail companies. Table tennis/Play guitar https://www.linkedin.com/in/agoveaarch
  • 4. NoSQL(Not Only Sql) vs SQL ● Las aplicaciones actuales crecen velozmente para adaptarse a las nuevas maneras de consumo ● Esto implica romper paradigmas y ver de diferente perspectiva todo lo que nos enseñaron… al menos en la creación de software ● El modelo relacional está desde 1970 y SQL desde 1984 “Hay que aprender a desaprender”
  • 5. Si sabes que guardas sabes que construyes ¿Que tipo de información se almacena? ¿MB,GB...TB? ¿Se escribe más que leer? ¿Se calculan Montos? ¿Solo catálogos? ¿Necesitamos Agregaciones exacta? ¿Se almacenan puntos geolocalizados?
  • 6. El movimiento NoSQL… ¿Cúal es el Mejor?
  • 8. POO … ¿Que es un Objeto? ● Un objeto es la abstracción de un ente del mundo real al mundo virtual, generalmente de todo lo que hacemos -Consumidor -Producto -nombre -edad -correo -celular -Nombre -monto -SKU -presentación
  • 9. Objeto -> Entidad Relación -> SQL -> Objeto
  • 10. Filosofía NoSql ● Los objetos se guardan de manera natural sin tener que pasar por un proceso intermedio NoSQL Query Lenguague
  • 11.
  • 12. “¿Los joins son costosos?”
  • 13. Mitos sobre NoSQL ● No se pueden manejar transacciones, por lo tanto puedes perder datos ● No es bueno para manejar montos($) ● No se puede usar en e-commerce ● No existen Joins por lo tanto no puedes relacionar datos ● No soportan agregaciones de datos ● Solo sirve para pequeñas aplicaciones ● No son robustas
  • 14. Verdades NoSQL ● Pueden ser hasta un 35 veces más rápidas que una base de datos relacional ● Puedes tener soluciones Híbridas y utilizar diferentes NoSQL en el mismo proyecto ● El soportar las transacciones queda de nuestro lado ● Hay una nueva guerra entre NoSQL
  • 15. MongoDB ● Almacena documentos JSON (Orientada 100% a objetos) ● Soporta tolerancia a fallos y escala horizontalmente casi instantáneamente ● El verdadero poder de mongo es el soportar documentos embebidos ● Tiene un poderoso Query Language (Agregation Pipeline) para poder explotar los datos ● Soporta agregación exacta
  • 16.
  • 19. JSON
  • 20. Documentos embebidos 1 2 3 4 5 6 7 AHORRAR 7 POSIBLES JOINS EN UNA CONSULTA
  • 22. let's play…. ● Dowloas mongo 3.2 https://www.mongodb.com/download-center#community ● Data: https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/prim er-dataset.json ● cd mongo/bin ● ./mongod ● ./mongo ● mongoimport --db test --collection restaurants --drop --file ~/downloads/primerdataset.json
  • 23. CRUD
  • 24. Find
  • 26. Verdades NoSQL 2 ● Las colecciones tienen un tamaño máximo de 32 MB (no muy recomendable) ● Por default el tamaño de las colecciones son de 16 MB ● Cuando se modifica un documento esta se bloquea (Atomicidad) ● Las agregaciones regresan 1 documento por lo que estan limitadas de 16 a 32 MB ● Los id de mongo son irrepetibles, ya que toman el timestamp, macaddress y un numero random para su generación ● Mongo debe soporte índices únicos ● Para mejorar el performance hay que utilizar índices ● Mientras más se utilicen índices más se tarda en hacer el insert
  • 27. Map Reduce & Agregation Pipeline ● ¿ Que nos dicen los datos si no los podemos agrupar ? ● ¿Que pasa si los datos están distribuidos en múltiples nodos? ● El escalamiento horizontal supone un reto para muchos casos de uso, en especial para las agregaciones en datos que están distribuidos en la nube
  • 28. Map Reduce & Agregation Pipeline edad:22 edad:35 edad:18 1 NODO edad:15 edad:50 edad:1 edad:1 edad:15 edad:18 edad:22 edad:35 edad:50
  • 29. Map Reduce & Agregation Pipeline edad:22 edad:35 edad:18 edad:15 edad:50 edad:1 NODO 1 NODO 2 NODO 3
  • 30. Map Reduce & Agregation Pipeline edad:22 edad:35 edad:18 edad:15 edad:50 edad:1 NODO 1 NODO 2 NODO 3
  • 31.
  • 32.
  • 34. ¿ Ya acabamos? ● Conector de BI ● Integración Spring Data / NodeJs ● Seguridad ● Infraestructura ● Geolocalización ● Manejo de indices