SlideShare una empresa de Scribd logo
1 de 38
MongoDB y Bluemix
“Ejecutando MongoDB en un PaaS”
{ nombre:”Víctor Cuervo” }
http://twitter.com/victor_cuervo
https://github.com/victorcuervo/lineadecodigo_mongodb
http://www.slideshare.net/victorcuervo/
http://lineadecodigo.com
Disclaimer
¿Qué es MongoDB?
MongoDB para Iniciados
Cosas diferentes en MongoDB
Servicio MongoDB en Bluemix
Compose.io y Bluemix
Recursos
2
3
4
5
6
Índice
1
¿Qué es MongoDB?
MongoDB y Bluemix
1
SELECT array_agg(players), player_teams
FROM (
SELECT DISTINCT t1.t1player AS players, t1.player_teams
FROM (
SELECT
p.playerid AS t1id,
concat(p.playerid,':', p.playername, ' ') AS t1player,
array_agg(pl.teamid ORDER BY pl.teamid) AS player_teams
FROM player p
LEFT JOIN plays pl ON p.playerid = pl.playerid
GROUP BY p.playerid, p.playername
) t1
INNER JOIN (
SELECT
p.playerid AS t2id,
array_agg(pl.teamid ORDER BY pl.teamid) AS player_teams
FROM player p
LEFT JOIN plays pl ON p.playerid = pl.playerid
GROUP BY p.playerid, p.playername
) t2 ON t1.player_teams=t2.player_teams AND t1.t1id <> t2.t2id
) innerQuery
GROUP BY player_teams
¿Qué hace esto?
MongoDB es una base de datos opensource NOSQL basada en
documentos. Es creada por la empresa 10gen, la cual se transforma a
posteriori en MongoDB Inc.
El nombre de MongoDB proviene de “humongous”, que significa enorme en
inglés.
La web de MongoDB está accesible en http://www.mongodb.org
¿Qué es MongoDB?
• Base de datos NOSQL orientada a documentos
(BSON-JSON).
• Trabajo con modelos de datos flexibles.
• Proporciona alto rendimiento y alta escalabilidad.
• Ofrece múltiples APIs sobre diferentes lenguajes de programación: java,
python, shell, node.js, go,…
• Maneja bases de datos, colecciones, campos, indices,…y no permite hacer
un xxxxxx join. $lookup
¿Qué es MongoDB?
Documento BSON
{
"_id": ObjectId("565914732c23d80f730a1f49"),
"gender": "M",
"name": “Julio Sanchez",
"username": "jsanchezs",
"birthday": "06/11/1977",
"email": "jsanchez@gmail.com",
"social": {
"facebook": “http://facebook.com/julio.sanchez“,
"twitter": “http://twitter.com/jjsanch“,
"linkedin": “http://es.linkedin.com/juliosanchez“
},
"description": "Soy una persona afable, estudioso y amigo de mis amigos.”,
"hobbies": [
"python",
"angularjs",
"mongodb"
]
}
MongoDB para Iniciados
MongoDB y Bluemix
2
• Las operaciones del CRUD en MongoDB se realizan con los métodos:
• Insert
• Find
• Update/Save
• Delete
• Siempre se antepone el nombre de la colección:
db.collection.operacion({documento})
• El contenido de la operación siempre será un documento JSON.
CRUD
Consultas
• Consulta Básica
db.ciudades.find({ciudad:’Madrid'});
• Consulta con Filtro
db.ciudades.find({
habitantes:{$lt:400000}
});
• Ordenaciones
db.ciudades.find().sort({
ciudad:1
});
• Consultas con conjuntos
db.ciudades.find({ciudad:
{$in:[‘Avila','Zamora','Madrid']}});
• Projection
db.ciudades.find({
habitantes:{$gt:1000000}},
{ciudad:1});
Actualizaciones
• Actualización Básica
db.ciudades.update(
{ciudad:'Avila'},
{$set:{habitantes:58915}
});
• Actualización Múltiple
db.ciudades.update({
habitantes:{$gt:600000}},
{$set:{‘grande’:true}},
{multi:true}
);
• Upsert - Se puede hacer con un
Save
db.ciudades.update({
ciudad:'Zamora'},
{$set:{habitantes:65362}},
{upsert:true}
);
• Inserción
db.ciudades.insert(
{'ciudad':'Avila',
‘habitantes':58915}
);
• Borrado
db.ciudades.delete(
{ciudad:’Zamora’}
);
Insercción y Borrado
Cosas diferentes en MongoDB
MongoDB y Bluemix
3
Modelos de Datos con Arrays
• Una de las características de MongoDB es poder
crear campos que sean arrays de datos.
• Los Arrays pueden contener valores o una colección
de subdocumentos.
• Existen los operadores $push, $pull, $each que nos
ayudan a manipular los arrays.
{
…
“hobbies": [
"python",
"angularjs",
"mongodb"
]
…
}
• $push - Insertar un elemento en el array
db.users.update({username:"rigodon"},{$push:{hobbies:"Javascript"}})
• $each - Insertar N elementos en el array
db.users.update({username:"rigodon"},
{$push:{hobbies:{$each:["Java","Python","AngularJS"]}}})
• $pull - Eliminar un elemento del array
db.users.update({username:"rigodon"},
{$pull:{hobbies:"Java"}})
Manipulando Arrays
Servicio MongoDB en Bluemix
MongoDB y Bluemix
4
MongoDB en Bluemix
• Sobre nuestra aplicación de
Bluemix añadiremos el
servicio de MongoDB o
enlazaremos el servicio si ya
lo hemos instanciado.
• El servicio MongoDB de Bluemix es un servicio experimental
– Se encuentra en el Bluemix Labs Catalog (*)
• Está catalogado como Data and Analytics
• En estos momentos está disponible la versión MongoDB 2.4
• Plan gratuito de consumo
• Dedicated server, shared VM, 250MB storage, 100 connections
Servicio MongoDB
(*) https://console.ng.bluemix.net/catalog/labs/
{
"mongodb-2.4": [
{
"name": "mongodb-7b",
"label": "mongodb-2.4",
"plan": "100",
"credentials": {
"hostname": "75.126.37.98",
"host": "75.126.37.98",
"port": 10063,
"username": "1c20340a-5bf8-495e-b9d9-2e613ceefd40",
"password": "121cb836-5c58-4b99-b0f4-cf7d300258bf",
"name": "c51db93c-11cb-461d-9c65-7dec81222485",
"db": "db",
"url": "mongodb://1c20340a-5bf8-495e-b9d9-2e613ceefd40:121cb836-5c58-4b99-b0f4-cf7d300258bf@75.126.37.98:10063/db"
}
}
]
}
VCAP_CREDENTIALS
# Crear el servicio
$ cf create-service mongodb 100 mongodb01
# Hacer el binding
$ cf bind-service AppName mongodb01
# Subir la aplicación
$ cf push
Comandos
•A parte de utilizar la consola de
Bluemix podemos utilizar los
comandos de Cloudfoundry para
crear el servicio, enlazar el
servicio a la aplicación y subir la
aplicación
from pymongo import MongoClient
vcap_config = os.environ.get('VCAP_SERVICES')
decoded_config = json.loads(vcap_config)
for key, value in decoded_config.iteritems():
if key.startswith('mongodb'):
mongo_creds = decoded_config[key][0][‘credentials’]
mongo_url = str(mongo_creds['url'])
client = MongoClient(mongo_url)
Codificando: Dependencias y Credenciales
Flask==0.10.1
pymongo>=3.2
Requirements.txt Welcome.py
client = MongoClient(mongo_url)
db = client.db
listado = db.listado
lista = listado.find({'pais':'Spain'})
.sort('nombre',1)
Codificando: Acceso a MongoDB
Insertar.py Consultar.py
client = MongoClient(mongo_url)
db = client.db
listado = db.listado
docs = [{'codigo':'1','valor':'A'},
{'codigo':'2','valor':'B'},
{'codigo':'3','valor':'C'},
{'codigo':'4','valor':'D'}]
listado.insert_many(docs)
Vamos a la demo
¿Qué puede salir mal?
• Importante utilizar una librería de logging.
• Se puedes comprobar los logs desde la Consola BlueMix
• O bien comprobarlos desde un terminal mediante el comando
$ cf logs AppName —recent
Depurando nuestro código
• Permisos del usuario de MongoDB
– Solo se tiene acceso a la base de datos “db”
• No puedes operar como admin
• No se puede acceder a la consola de MongoDB
• La versión de MongoDB es la 2.4 (actualmente ya existe 3.2)
Limitaciones MongoDB en Bluemix
Compose.io y Bluemix
MongoDB y Bluemix
5
• Compose.IO ofrece diferentes soluciones
de bases de datos en formato DBaaS
• MongoDB, ElasticSearch, Redis,
Postgresql,…
• Proporciona un interface de usuario
amigable para operar MongoDB, así
como múltiples formas de conectarnos.
• http://compose.io
¿Qué es Compose.io?
• Servicio MongoDB by Compose nos permite acceder a un
MongoDB instanciado como DBaaS
• Está catalogado como Data and Analytics
• La información de conexión debe de proporcionarla el usuario
• Plan gratuito de consumo
Servicio Compose MongoDB
(*) https://console.ng.bluemix.net/catalog/labs/
{
"user-provided": [
{
"name": "MongoDB by Compose-gk",
"label": "user-provided",
"credentials": {
"uri": "aws-us-east-1-portal.14.dblayer.com",
"port": "10020",
"user": "victorcuervo",
"password": “lamassecretadelmundo"
}
}
]
}
VCAP_CREDENTIALS
Enséñam
e
un
poquito
Recursos
MongoDB y Bluemix
6
• Tutorial sobre MongoDB
https://docs.mongodb.org/manual/tutorial/
• Novedades de MongoDB 3.2
https://docs.mongodb.org/manual/release-notes/
• Ejemplos de MongoDB
http://lineadecodigo.com/mongodb
• Documentación y ejemplos de MongoDB en Bluemix
https://console.ng.bluemix.net/docs/#services/MongoDB/index.html#MongoDB
• Compose.io
http://compose.io
Enlaces de Interés
Preguntas
¡Gracias!

Más contenido relacionado

La actualidad más candente

La actualidad más candente (10)

Symfony2 and ElasticSearch
Symfony2 and ElasticSearchSymfony2 and ElasticSearch
Symfony2 and ElasticSearch
 
Mysql3
Mysql3Mysql3
Mysql3
 
Primeros pasos con neo4j
Primeros pasos con neo4jPrimeros pasos con neo4j
Primeros pasos con neo4j
 
¿que es mongodb?
¿que es mongodb?¿que es mongodb?
¿que es mongodb?
 
Instalacion nosql "mongodb"
Instalacion nosql "mongodb"Instalacion nosql "mongodb"
Instalacion nosql "mongodb"
 
Connection en Java
Connection en JavaConnection en Java
Connection en Java
 
Maual de instalacion mongodb
Maual de instalacion mongodbMaual de instalacion mongodb
Maual de instalacion mongodb
 
Bd no sql
Bd no sqlBd no sql
Bd no sql
 
Los lenguajes de la web
Los lenguajes de la webLos lenguajes de la web
Los lenguajes de la web
 
Bases de datos desde visual basic 6.0
Bases de datos desde visual basic 6.0Bases de datos desde visual basic 6.0
Bases de datos desde visual basic 6.0
 

Similar a MongoDB y bluemix

Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDBAlejandro Mancilla
 
CouchDB y el desarrollo de aplicaciones Android
CouchDB y el desarrollo de aplicaciones AndroidCouchDB y el desarrollo de aplicaciones Android
CouchDB y el desarrollo de aplicaciones AndroidRicardo Monagas Medina
 
NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBNOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBVictor Cuervo
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apisCloudAppi
 
Mi primera aplicación con MongoDB
Mi primera aplicación con MongoDBMi primera aplicación con MongoDB
Mi primera aplicación con MongoDBSoftware Guru
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APICloudAppi
 
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónSymfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónRodrigo Miranda
 
Trabajando con Procedimientos Almacenados y VB.Net
Trabajando con Procedimientos Almacenados y VB.NetTrabajando con Procedimientos Almacenados y VB.Net
Trabajando con Procedimientos Almacenados y VB.NetAlberto Navarro Sorolla
 
Mallorca MUG: MapReduce y Aggregation Framework
Mallorca MUG: MapReduce y Aggregation FrameworkMallorca MUG: MapReduce y Aggregation Framework
Mallorca MUG: MapReduce y Aggregation FrameworkEmilio Torrens
 
Symfony parte 14 Consultas SQL - Páginador
Symfony parte 14 Consultas SQL - PáginadorSymfony parte 14 Consultas SQL - Páginador
Symfony parte 14 Consultas SQL - PáginadorRodrigo Miranda
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administraciónJuan Ladetto
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
Creación de aplicaciones web con Node.js y Express
Creación de aplicaciones web con Node.js y ExpressCreación de aplicaciones web con Node.js y Express
Creación de aplicaciones web con Node.js y Expressbetabeers
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Juan Manuel
 
Mongodb: Un pequeño sorbo
Mongodb: Un pequeño sorboMongodb: Un pequeño sorbo
Mongodb: Un pequeño sorboAbirtone S.L.
 

Similar a MongoDB y bluemix (20)

Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDB
 
CouchDB y el desarrollo de aplicaciones Android
CouchDB y el desarrollo de aplicaciones AndroidCouchDB y el desarrollo de aplicaciones Android
CouchDB y el desarrollo de aplicaciones Android
 
NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBNOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDB
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
Mi primera aplicación con MongoDB
Mi primera aplicación con MongoDBMi primera aplicación con MongoDB
Mi primera aplicación con MongoDB
 
Semana 3 MONGODB conceptos básicos NOSQL
Semana 3   MONGODB conceptos básicos NOSQLSemana 3   MONGODB conceptos básicos NOSQL
Semana 3 MONGODB conceptos básicos NOSQL
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
 
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónSymfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
 
Trabajando con Procedimientos Almacenados y VB.Net
Trabajando con Procedimientos Almacenados y VB.NetTrabajando con Procedimientos Almacenados y VB.Net
Trabajando con Procedimientos Almacenados y VB.Net
 
MongoDB Avanzado
MongoDB AvanzadoMongoDB Avanzado
MongoDB Avanzado
 
Mallorca MUG: MapReduce y Aggregation Framework
Mallorca MUG: MapReduce y Aggregation FrameworkMallorca MUG: MapReduce y Aggregation Framework
Mallorca MUG: MapReduce y Aggregation Framework
 
Symfony parte 14 Consultas SQL - Páginador
Symfony parte 14 Consultas SQL - PáginadorSymfony parte 14 Consultas SQL - Páginador
Symfony parte 14 Consultas SQL - Páginador
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Creación de aplicaciones web con Node.js y Express
Creación de aplicaciones web con Node.js y ExpressCreación de aplicaciones web con Node.js y Express
Creación de aplicaciones web con Node.js y Express
 
Grails
GrailsGrails
Grails
 
Guiapractica de bd completa
Guiapractica de bd completaGuiapractica de bd completa
Guiapractica de bd completa
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
 
Mongodb: Un pequeño sorbo
Mongodb: Un pequeño sorboMongodb: Un pequeño sorbo
Mongodb: Un pequeño sorbo
 

Último

R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 

Último (20)

R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 

MongoDB y bluemix

  • 1. MongoDB y Bluemix “Ejecutando MongoDB en un PaaS”
  • 2. { nombre:”Víctor Cuervo” } http://twitter.com/victor_cuervo https://github.com/victorcuervo/lineadecodigo_mongodb http://www.slideshare.net/victorcuervo/ http://lineadecodigo.com
  • 4. ¿Qué es MongoDB? MongoDB para Iniciados Cosas diferentes en MongoDB Servicio MongoDB en Bluemix Compose.io y Bluemix Recursos 2 3 4 5 6 Índice 1
  • 6. SELECT array_agg(players), player_teams FROM ( SELECT DISTINCT t1.t1player AS players, t1.player_teams FROM ( SELECT p.playerid AS t1id, concat(p.playerid,':', p.playername, ' ') AS t1player, array_agg(pl.teamid ORDER BY pl.teamid) AS player_teams FROM player p LEFT JOIN plays pl ON p.playerid = pl.playerid GROUP BY p.playerid, p.playername ) t1 INNER JOIN ( SELECT p.playerid AS t2id, array_agg(pl.teamid ORDER BY pl.teamid) AS player_teams FROM player p LEFT JOIN plays pl ON p.playerid = pl.playerid GROUP BY p.playerid, p.playername ) t2 ON t1.player_teams=t2.player_teams AND t1.t1id <> t2.t2id ) innerQuery GROUP BY player_teams ¿Qué hace esto?
  • 7.
  • 8. MongoDB es una base de datos opensource NOSQL basada en documentos. Es creada por la empresa 10gen, la cual se transforma a posteriori en MongoDB Inc. El nombre de MongoDB proviene de “humongous”, que significa enorme en inglés. La web de MongoDB está accesible en http://www.mongodb.org ¿Qué es MongoDB?
  • 9. • Base de datos NOSQL orientada a documentos (BSON-JSON). • Trabajo con modelos de datos flexibles. • Proporciona alto rendimiento y alta escalabilidad. • Ofrece múltiples APIs sobre diferentes lenguajes de programación: java, python, shell, node.js, go,… • Maneja bases de datos, colecciones, campos, indices,…y no permite hacer un xxxxxx join. $lookup ¿Qué es MongoDB?
  • 10. Documento BSON { "_id": ObjectId("565914732c23d80f730a1f49"), "gender": "M", "name": “Julio Sanchez", "username": "jsanchezs", "birthday": "06/11/1977", "email": "jsanchez@gmail.com", "social": { "facebook": “http://facebook.com/julio.sanchez“, "twitter": “http://twitter.com/jjsanch“, "linkedin": “http://es.linkedin.com/juliosanchez“ }, "description": "Soy una persona afable, estudioso y amigo de mis amigos.”, "hobbies": [ "python", "angularjs", "mongodb" ] }
  • 12. • Las operaciones del CRUD en MongoDB se realizan con los métodos: • Insert • Find • Update/Save • Delete • Siempre se antepone el nombre de la colección: db.collection.operacion({documento}) • El contenido de la operación siempre será un documento JSON. CRUD
  • 13. Consultas • Consulta Básica db.ciudades.find({ciudad:’Madrid'}); • Consulta con Filtro db.ciudades.find({ habitantes:{$lt:400000} }); • Ordenaciones db.ciudades.find().sort({ ciudad:1 }); • Consultas con conjuntos db.ciudades.find({ciudad: {$in:[‘Avila','Zamora','Madrid']}}); • Projection db.ciudades.find({ habitantes:{$gt:1000000}}, {ciudad:1});
  • 14. Actualizaciones • Actualización Básica db.ciudades.update( {ciudad:'Avila'}, {$set:{habitantes:58915} }); • Actualización Múltiple db.ciudades.update({ habitantes:{$gt:600000}}, {$set:{‘grande’:true}}, {multi:true} ); • Upsert - Se puede hacer con un Save db.ciudades.update({ ciudad:'Zamora'}, {$set:{habitantes:65362}}, {upsert:true} );
  • 16. Cosas diferentes en MongoDB MongoDB y Bluemix 3
  • 17. Modelos de Datos con Arrays • Una de las características de MongoDB es poder crear campos que sean arrays de datos. • Los Arrays pueden contener valores o una colección de subdocumentos. • Existen los operadores $push, $pull, $each que nos ayudan a manipular los arrays. { … “hobbies": [ "python", "angularjs", "mongodb" ] … }
  • 18. • $push - Insertar un elemento en el array db.users.update({username:"rigodon"},{$push:{hobbies:"Javascript"}}) • $each - Insertar N elementos en el array db.users.update({username:"rigodon"}, {$push:{hobbies:{$each:["Java","Python","AngularJS"]}}}) • $pull - Eliminar un elemento del array db.users.update({username:"rigodon"}, {$pull:{hobbies:"Java"}}) Manipulando Arrays
  • 19. Servicio MongoDB en Bluemix MongoDB y Bluemix 4
  • 20. MongoDB en Bluemix • Sobre nuestra aplicación de Bluemix añadiremos el servicio de MongoDB o enlazaremos el servicio si ya lo hemos instanciado.
  • 21. • El servicio MongoDB de Bluemix es un servicio experimental – Se encuentra en el Bluemix Labs Catalog (*) • Está catalogado como Data and Analytics • En estos momentos está disponible la versión MongoDB 2.4 • Plan gratuito de consumo • Dedicated server, shared VM, 250MB storage, 100 connections Servicio MongoDB (*) https://console.ng.bluemix.net/catalog/labs/
  • 22. { "mongodb-2.4": [ { "name": "mongodb-7b", "label": "mongodb-2.4", "plan": "100", "credentials": { "hostname": "75.126.37.98", "host": "75.126.37.98", "port": 10063, "username": "1c20340a-5bf8-495e-b9d9-2e613ceefd40", "password": "121cb836-5c58-4b99-b0f4-cf7d300258bf", "name": "c51db93c-11cb-461d-9c65-7dec81222485", "db": "db", "url": "mongodb://1c20340a-5bf8-495e-b9d9-2e613ceefd40:121cb836-5c58-4b99-b0f4-cf7d300258bf@75.126.37.98:10063/db" } } ] } VCAP_CREDENTIALS
  • 23. # Crear el servicio $ cf create-service mongodb 100 mongodb01 # Hacer el binding $ cf bind-service AppName mongodb01 # Subir la aplicación $ cf push Comandos •A parte de utilizar la consola de Bluemix podemos utilizar los comandos de Cloudfoundry para crear el servicio, enlazar el servicio a la aplicación y subir la aplicación
  • 24. from pymongo import MongoClient vcap_config = os.environ.get('VCAP_SERVICES') decoded_config = json.loads(vcap_config) for key, value in decoded_config.iteritems(): if key.startswith('mongodb'): mongo_creds = decoded_config[key][0][‘credentials’] mongo_url = str(mongo_creds['url']) client = MongoClient(mongo_url) Codificando: Dependencias y Credenciales Flask==0.10.1 pymongo>=3.2 Requirements.txt Welcome.py
  • 25. client = MongoClient(mongo_url) db = client.db listado = db.listado lista = listado.find({'pais':'Spain'}) .sort('nombre',1) Codificando: Acceso a MongoDB Insertar.py Consultar.py client = MongoClient(mongo_url) db = client.db listado = db.listado docs = [{'codigo':'1','valor':'A'}, {'codigo':'2','valor':'B'}, {'codigo':'3','valor':'C'}, {'codigo':'4','valor':'D'}] listado.insert_many(docs)
  • 26. Vamos a la demo ¿Qué puede salir mal?
  • 27.
  • 28. • Importante utilizar una librería de logging. • Se puedes comprobar los logs desde la Consola BlueMix • O bien comprobarlos desde un terminal mediante el comando $ cf logs AppName —recent Depurando nuestro código
  • 29. • Permisos del usuario de MongoDB – Solo se tiene acceso a la base de datos “db” • No puedes operar como admin • No se puede acceder a la consola de MongoDB • La versión de MongoDB es la 2.4 (actualmente ya existe 3.2) Limitaciones MongoDB en Bluemix
  • 31. • Compose.IO ofrece diferentes soluciones de bases de datos en formato DBaaS • MongoDB, ElasticSearch, Redis, Postgresql,… • Proporciona un interface de usuario amigable para operar MongoDB, así como múltiples formas de conectarnos. • http://compose.io ¿Qué es Compose.io?
  • 32. • Servicio MongoDB by Compose nos permite acceder a un MongoDB instanciado como DBaaS • Está catalogado como Data and Analytics • La información de conexión debe de proporcionarla el usuario • Plan gratuito de consumo Servicio Compose MongoDB (*) https://console.ng.bluemix.net/catalog/labs/
  • 33. { "user-provided": [ { "name": "MongoDB by Compose-gk", "label": "user-provided", "credentials": { "uri": "aws-us-east-1-portal.14.dblayer.com", "port": "10020", "user": "victorcuervo", "password": “lamassecretadelmundo" } } ] } VCAP_CREDENTIALS
  • 36. • Tutorial sobre MongoDB https://docs.mongodb.org/manual/tutorial/ • Novedades de MongoDB 3.2 https://docs.mongodb.org/manual/release-notes/ • Ejemplos de MongoDB http://lineadecodigo.com/mongodb • Documentación y ejemplos de MongoDB en Bluemix https://console.ng.bluemix.net/docs/#services/MongoDB/index.html#MongoDB • Compose.io http://compose.io Enlaces de Interés