SlideShare una empresa de Scribd logo
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

Symfony2 and ElasticSearch
Symfony2 and ElasticSearchSymfony2 and ElasticSearch
Symfony2 and ElasticSearch
symfony_bcn
 
Mysql3
Mysql3Mysql3
Mysql3
polar
 
Primeros pasos con neo4j
Primeros pasos con neo4jPrimeros pasos con neo4j
Primeros pasos con neo4j
Ubaldo Taladriz
 
¿que es mongodb?
¿que es mongodb?¿que es mongodb?
¿que es mongodb?
mongo4dbablog
 
Instalacion nosql "mongodb"
Instalacion nosql "mongodb"Instalacion nosql "mongodb"
Instalacion nosql "mongodb"
Kemis Marvin Salinas Guillermo
 
Connection en Java
Connection en JavaConnection en Java
Connection en Java
ROMARIO MONTALVAN CASTILLO
 
Maual de instalacion mongodb
Maual de instalacion mongodbMaual de instalacion mongodb
Maual de instalacion mongodb
Gerzair García
 
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
LisbayUrdaneta
 

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 MongoDB
Alejandro 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 Android
Ricardo Monagas Medina
 
NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBNOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDB
Victor Cuervo
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
CloudAppi
 
Mi primera aplicación con MongoDB
Mi primera aplicación con MongoDBMi primera aplicación con MongoDB
Mi primera aplicación con MongoDB
Software Guru
 
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
Richard Eliseo Mendoza Gafaro
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
CloudAppi
 
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
Rodrigo 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.Net
Alberto Navarro Sorolla
 
MongoDB Avanzado
MongoDB AvanzadoMongoDB Avanzado
MongoDB Avanzado
Victor Cuervo
 
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áginador
Rodrigo Miranda
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
Juan 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 jQuery
Javier 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
 
Guiapractica de bd completa
Guiapractica de bd completaGuiapractica de bd completa
Guiapractica de bd completa
lissette_torrealba
 
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 sorbo
Abirtone 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

Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
sofiahuarancabellido
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
samuelvideos
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
AMADO SALVADOR
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
maralache30
 
Presentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The CleanPresentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The Clean
juanchogame18
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
bendezuperezjimena
 
Todo sobre Minirobotica. Revista Saber Electronica
Todo sobre  Minirobotica. Revista Saber ElectronicaTodo sobre  Minirobotica. Revista Saber Electronica
Todo sobre Minirobotica. Revista Saber Electronica
Carlos Carlosnoemi
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
NajwaNimri1
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
JuanAlvarez413513
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
SofiaCollazos
 
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialCatalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
AMADO SALVADOR
 
actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
aljitagallego
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
ValeriaAyala48
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
JimmyTejadaSalizar
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
Festibity
 

Último (20)

Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
 
Presentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The CleanPresentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The Clean
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
 
Todo sobre Minirobotica. Revista Saber Electronica
Todo sobre  Minirobotica. Revista Saber ElectronicaTodo sobre  Minirobotica. Revista Saber Electronica
Todo sobre Minirobotica. Revista Saber Electronica
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
 
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialCatalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
 
actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
 

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