Presentación sobre cómo utilizar MongoDB en Bluemix, ya sea con el servicio de MongoDB o mediante Compose.io
Inicialmente se muestran un poco las capacidades de MongoDB para luego mostrar dos ejemplos montados mediante Python y Flask
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.Victor Cuervo
Presentación sobre conceptos básicos de MongoDB. Manejo de Arrays en documentos. Programación MongoDB desde la Shell. Y uso de Python+MongoDB = Pymongo.
Introduccion a Neo4j 2, hablando un poco de sus caracteristicas, su participacion dentro del paradigma NOSql y que es el Mundo de Grafos con algunos casos de usos.
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.Victor Cuervo
Presentación sobre conceptos básicos de MongoDB. Manejo de Arrays en documentos. Programación MongoDB desde la Shell. Y uso de Python+MongoDB = Pymongo.
Introduccion a Neo4j 2, hablando un poco de sus caracteristicas, su participacion dentro del paradigma NOSql y que es el Mundo de Grafos con algunos casos de usos.
Veremos cómo hacer una implementación rápida de ElasticSearch para nuestra aplicación Symfony2.
Introducción rápida a ElasticSearch. Cómo interactúa FOSElasticaBundle con nuestros modelo. Cómo personalizar qué información enviamos a ES. Buenas prácticas a la hora de buscar, indexar, analizar y retornar resultados.
Primeros pasos con Neo4J. Basada en la presentación de Andreas Kolleger, Getting started with neo4j. Describe los fundamentos básicos de las bases de datos de Grafos y como comenzar a usar Neo4j.
Uso de CouchDB como base de datos para soluciones que ameriten el manejo de gran cantidad de información a través de aplicaciones Android.
La presentación muestra una pequeña introducción sobre ¿Cómo conectarse y manejar bases de datos CouchDB en Android?
Las diapositivas fueron desarrolladas por mi persona para ExpoTech 2013 (31-01 al 01-02-2013) , en Puerto Ordaz - Venezuela.
Se aprenderá a desarrollar una API siguiendo la metodología MADA que tiene como misión reducir la complejidad a la hora de desarrollar una API y que utiliza RAML como lenguaje de definición de APIs. A patir del RAML, se generará toda la documentación necesaria para exponer a los developers, se podrá construir un fake para probarlo en la consola de pruebas y se generará un esqueleto en node.js. El taller desarrollará un ejemplo utilizando objetos en memoria y otro ejemplo utilizando MongoDB como base de datos.
Presentación sobre MongoDB Avanzado para el Codemotion 2015. Novedades en MongoDB 3.2. Queries e Indices Avanzados. Modelado con MongoDB. MongoDB en el Cloud: DBaaS. Tooling para MongoDB y URLs con recursos.
Veremos cómo hacer una implementación rápida de ElasticSearch para nuestra aplicación Symfony2.
Introducción rápida a ElasticSearch. Cómo interactúa FOSElasticaBundle con nuestros modelo. Cómo personalizar qué información enviamos a ES. Buenas prácticas a la hora de buscar, indexar, analizar y retornar resultados.
Primeros pasos con Neo4J. Basada en la presentación de Andreas Kolleger, Getting started with neo4j. Describe los fundamentos básicos de las bases de datos de Grafos y como comenzar a usar Neo4j.
Uso de CouchDB como base de datos para soluciones que ameriten el manejo de gran cantidad de información a través de aplicaciones Android.
La presentación muestra una pequeña introducción sobre ¿Cómo conectarse y manejar bases de datos CouchDB en Android?
Las diapositivas fueron desarrolladas por mi persona para ExpoTech 2013 (31-01 al 01-02-2013) , en Puerto Ordaz - Venezuela.
Se aprenderá a desarrollar una API siguiendo la metodología MADA que tiene como misión reducir la complejidad a la hora de desarrollar una API y que utiliza RAML como lenguaje de definición de APIs. A patir del RAML, se generará toda la documentación necesaria para exponer a los developers, se podrá construir un fake para probarlo en la consola de pruebas y se generará un esqueleto en node.js. El taller desarrollará un ejemplo utilizando objetos en memoria y otro ejemplo utilizando MongoDB como base de datos.
Presentación sobre MongoDB Avanzado para el Codemotion 2015. Novedades en MongoDB 3.2. Queries e Indices Avanzados. Modelado con MongoDB. MongoDB en el Cloud: DBaaS. Tooling para MongoDB y URLs con recursos.
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...AMADO SALVADOR
El catálogo general de electrodomésticos Teka presenta una amplia gama de productos de alta calidad y diseño innovador. Como distribuidor oficial Teka, Amado Salvador ofrece soluciones en electrodomésticos Teka que destacan por su tecnología avanzada y durabilidad. Este catálogo incluye una selección exhaustiva de productos Teka que cumplen con los más altos estándares del mercado, consolidando a Amado Salvador como el distribuidor oficial Teka.
Explora las diversas categorías de electrodomésticos Teka en este catálogo, cada una diseñada para satisfacer las necesidades de cualquier hogar. Amado Salvador, como distribuidor oficial Teka, garantiza que cada producto de Teka se distingue por su excelente calidad y diseño moderno.
Amado Salvador, distribuidor oficial Teka en Valencia. La calidad y el diseño de los electrodomésticos Teka se reflejan en cada página del catálogo, ofreciendo opciones que van desde hornos, placas de cocina, campanas extractoras hasta frigoríficos y lavavajillas. Este catálogo es una herramienta esencial para inspirarse y encontrar electrodomésticos de alta calidad que se adaptan a cualquier proyecto de diseño.
En Amado Salvador somos distribuidor oficial Teka en Valencia y ponemos atu disposición acceso directo a los mejores productos de Teka. Explora este catálogo y encuentra la inspiración y los electrodomésticos necesarios para equipar tu hogar con la garantía y calidad que solo un distribuidor oficial Teka puede ofrecer.
KAWARU CONSULTING presenta el projecte amb l'objectiu de permetre als ciutadans realitzar tràmits administratius de manera telemàtica, des de qualsevol lloc i dispositiu, amb seguretat jurídica. Aquesta plataforma redueix els desplaçaments físics i el temps invertit en tràmits, ja que es pot fer tot en línia. A més, proporciona evidències de la correcta realització dels tràmits, garantint-ne la validesa davant d'un jutge si cal. Inicialment concebuda per al Ministeri de Justícia, la plataforma s'ha expandit per adaptar-se a diverses organitzacions i països, oferint una solució flexible i fàcil de desplegar.
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialAMADO SALVADOR
Explora el catálogo completo de cajas fuertes BTV, disponible a través de Amado Salvador, distribuidor oficial de BTV. Este catálogo presenta una amplia variedad de cajas fuertes, cada una diseñada con la más alta calidad para ofrecer la máxima seguridad y satisfacer las diversas necesidades de protección de nuestros clientes.
En Amado Salvador, como distribuidor oficial de BTV, ofrecemos productos que destacan por su innovación, durabilidad y robustez. Las cajas fuertes BTV son reconocidas por su eficiencia en la protección contra robos, incendios y otros riesgos, lo que las convierte en una opción ideal tanto para uso doméstico como comercial.
Amado Salvador, distribuidor oficial BTV, asegura que cada producto cumpla con los más estrictos estándares de calidad y seguridad. Al adquirir una caja fuerte a través de Amado Salvador, distribuidor oficial BTV, los clientes pueden tener la tranquilidad de que están obteniendo una solución confiable y duradera para la protección de sus pertenencias.
Este catálogo incluye detalles técnicos, características y opciones de personalización de cada modelo de caja fuerte BTV. Desde cajas fuertes empotrables hasta modelos de alta seguridad, Amado Salvador, como distribuidor oficial de BTV, tiene la solución perfecta para cualquier necesidad de seguridad. No pierdas la oportunidad de conocer todos los beneficios y características de las cajas fuertes BTV y protege lo que más valoras con la calidad y seguridad que solo BTV y Amado Salvador, distribuidor oficial BTV, pueden ofrecerte.
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
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
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/
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)
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/
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