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.
Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...MongoDB
Las arquitecturas de microservicios han sido adoptados muy rápidamente, debido a su capacidad para proveer modularidad, escalabilidad y alta disponibilidad
En este seminario web grabado, nuestros expertos, Rubén Terceño de MongoDB y Miguel Garrido de Paradigma Digital le explican cómo se puede usar microservicios para:
Alinear las estructuras de tu organización
Realizar aplicaciones más rápidamente
Hacer un uso eficiente de tus recursos
Seminario Web MongoDB-Paradigma: Cree aplicaciones más escalables utilizando ...MongoDB
Las arquitecturas de microservicios han sido adoptados muy rápidamente, debido a su capacidad para proveer modularidad, escalabilidad y alta disponibilidad
En este seminario web grabado, nuestros expertos, Rubén Terceño de MongoDB y Miguel Garrido de Paradigma Digital le explican cómo se puede usar microservicios para:
Alinear las estructuras de tu organización
Realizar aplicaciones más rápidamente
Hacer un uso eficiente de tus recursos
[WEBINAR] 10 cosas que debes saber sobre Active Directory.Grupo Smartekh
Este webinar tiene como objetivo principal dar a conocer los mejores 10 tips de nuestros expertos para aprovechar todos los beneficios que brinda Active Directory, con el tiempo, es posible que la base de datos de Active Directory se llene de información obsoleta, tenga problemas de seguridad o comience a funcionar de manera incorrecta.
Tarde o temprano, tendrás que reorganizar tu Active Directory para corregir comportamientos erráticos y mantener la seguridad y productividad de la plataforma al día.
El temario que se engloba es el siguiente:
Planificar, documentar y testear una estrategia para back ups y disaster recovery.
Establecer una política de hot fixes que minimice riesgos de seguridad.
Realizar check ups de salud periódicos que evidencien problemas para prevenir posibles riesgos.
Webinar impartido por Adrían Rivas, el 20 de Diciembre del 2012 a las 12 hrs.
Video available here: http://vivu.tv/portal/archive.jsp?flow=783-586-4282&id=1270584002677
We all know that MongoDB is one of the most flexible and feature-rich databases available. In this webinar we'll discuss how you can leverage this feature set and maintain high performance with your project's massive data sets and high loads. We'll cover how indexes can be designed to optimize the performance of MongoDB. We'll also discuss tips for diagnosing and fixing performance issues should they arise.
In this lecture we analyze document oriented databases. In particular we consider why there are the first approach to nosql and what are the main features. Then, we analyze as example MongoDB. We consider the data model, CRUD operations, write concerns, scaling (replication and sharding).
Finally we presents other document oriented database and when to use or not document oriented databases.
También conocido como no sólo sql (Not only sql) es una amplia clase de sistemas de gestión de datos, caracterizado por no usar SQL como el principal lenguaje de consultas. Capaz de almacenar grandes cantidades de datos facilitando un crecimiento horizontal, enfocándose en rendimiento más que en consistencia.
“NoSQL realmente es NoREL, es decir, Base de Datos No-Relacional”
Introducción a las bases de datos NoSQL
Concepto y campos relacionados
Principales características
Arquitectura de las bases de datos NoSQL
Taxonomía de soluciones NoSQL
Empresas que usan bases de datos NoSQL
MongoDB: una BBDD NoSQL orientada a Documentos
Introducción: características y arquitectura
Instalación sobre diferentes sistemas operativos
Utilidades de mongoDB: mongo, mongostat, mongotop, etc.
Características principales:
Consultas Ad hoc
Indexación
Replicación
Balanceo de carga
Almacenamiento de archivos
Agregación
Programación en MongoDB
Ejecución de JavaScript del lado del servidor
Programación de MongoDB desde Java y Python
Desarrollo de una aplicación avanzada con MongoDB
Conclusiones
Otras alternativas destacables: CouchDB
Aplicabilidad a mi empresa
As your data grows, the need to establish proper indexes becomes critical to performance. MongoDB supports a wide range of indexing options to enable fast querying of your data, but what are the right strategies for your application?
In this talk we’ll cover how indexing works, the various indexing options, and use cases where each can be useful. We'll dive into common pitfalls using real-world examples to ensure that you're ready for scale.
MongoDB is an open-source document database, and the leading NoSQL database. Written in C++.
MongoDB has official drivers for a variety of popular programming languages and development environments. There are also a large number of unofficial or community-supported drivers for other programming languages and frameworks.
Una Base de Datos Relacional contiene datos que pueden ser visibles al usuario y que están presentados de forma organizada a través de tablas, las cuales, a su vez, están relacionadas con otras tablas, es decir, que se caracteriza por no poseer información repetida. Además se puede adicionar nueva información sin llegar a afectar la almacenada.
[WEBINAR] 10 cosas que debes saber sobre Active Directory.Grupo Smartekh
Este webinar tiene como objetivo principal dar a conocer los mejores 10 tips de nuestros expertos para aprovechar todos los beneficios que brinda Active Directory, con el tiempo, es posible que la base de datos de Active Directory se llene de información obsoleta, tenga problemas de seguridad o comience a funcionar de manera incorrecta.
Tarde o temprano, tendrás que reorganizar tu Active Directory para corregir comportamientos erráticos y mantener la seguridad y productividad de la plataforma al día.
El temario que se engloba es el siguiente:
Planificar, documentar y testear una estrategia para back ups y disaster recovery.
Establecer una política de hot fixes que minimice riesgos de seguridad.
Realizar check ups de salud periódicos que evidencien problemas para prevenir posibles riesgos.
Webinar impartido por Adrían Rivas, el 20 de Diciembre del 2012 a las 12 hrs.
Video available here: http://vivu.tv/portal/archive.jsp?flow=783-586-4282&id=1270584002677
We all know that MongoDB is one of the most flexible and feature-rich databases available. In this webinar we'll discuss how you can leverage this feature set and maintain high performance with your project's massive data sets and high loads. We'll cover how indexes can be designed to optimize the performance of MongoDB. We'll also discuss tips for diagnosing and fixing performance issues should they arise.
In this lecture we analyze document oriented databases. In particular we consider why there are the first approach to nosql and what are the main features. Then, we analyze as example MongoDB. We consider the data model, CRUD operations, write concerns, scaling (replication and sharding).
Finally we presents other document oriented database and when to use or not document oriented databases.
También conocido como no sólo sql (Not only sql) es una amplia clase de sistemas de gestión de datos, caracterizado por no usar SQL como el principal lenguaje de consultas. Capaz de almacenar grandes cantidades de datos facilitando un crecimiento horizontal, enfocándose en rendimiento más que en consistencia.
“NoSQL realmente es NoREL, es decir, Base de Datos No-Relacional”
Introducción a las bases de datos NoSQL
Concepto y campos relacionados
Principales características
Arquitectura de las bases de datos NoSQL
Taxonomía de soluciones NoSQL
Empresas que usan bases de datos NoSQL
MongoDB: una BBDD NoSQL orientada a Documentos
Introducción: características y arquitectura
Instalación sobre diferentes sistemas operativos
Utilidades de mongoDB: mongo, mongostat, mongotop, etc.
Características principales:
Consultas Ad hoc
Indexación
Replicación
Balanceo de carga
Almacenamiento de archivos
Agregación
Programación en MongoDB
Ejecución de JavaScript del lado del servidor
Programación de MongoDB desde Java y Python
Desarrollo de una aplicación avanzada con MongoDB
Conclusiones
Otras alternativas destacables: CouchDB
Aplicabilidad a mi empresa
As your data grows, the need to establish proper indexes becomes critical to performance. MongoDB supports a wide range of indexing options to enable fast querying of your data, but what are the right strategies for your application?
In this talk we’ll cover how indexing works, the various indexing options, and use cases where each can be useful. We'll dive into common pitfalls using real-world examples to ensure that you're ready for scale.
MongoDB is an open-source document database, and the leading NoSQL database. Written in C++.
MongoDB has official drivers for a variety of popular programming languages and development environments. There are also a large number of unofficial or community-supported drivers for other programming languages and frameworks.
Una Base de Datos Relacional contiene datos que pueden ser visibles al usuario y que están presentados de forma organizada a través de tablas, las cuales, a su vez, están relacionadas con otras tablas, es decir, que se caracteriza por no poseer información repetida. Además se puede adicionar nueva información sin llegar a afectar la almacenada.
El segmento de la base de datos está evolucionando, al mismo tiempo que vemos como nuevos, almacenes escalables de datos emergen. Key value stores, grandes columnas de almacenamiento y bases de datos orientados en documentos, ofrecen una alternativa atractiva a la base de datos relacional tradicional. Evitando las suposiciones tradicionales sobre los cuales se construyeron las bases de datos anteriores, esta nueva clase de soluciones de no-relacionales o "NoSQL" adquieren la capacidad de escalar horizontalmente. Además, las soluciones NoSQL ofrecen alternativas interesantes al modelo tradicional de datos relacional.
Esta presentación mostrara a los asistentes, los conceptos claves y necesarios para comprender y evaluar los almacenes de datos NoSQL. Vamos a explorar las diferencias fundamentales que existen entre las diversas clases de soluciones NoSQL y que concluyen con un examen en profundidad, de la base de datos MongoDB orientada a documentos.
Esta presentación incluirá:
Orígenes del movimiento NoSQL
Una visión general del segmento de NoSQL
La filosofía y la creación de MongoDB
MongoDB, arquitectura del sistema
MongoDB, ejemplos de uso
Hadoop, Pig, and Twitter (NoSQL East 2009)Kevin Weil
A talk on the use of Hadoop and Pig inside Twitter, focusing on the flexibility and simplicity of Pig, and the benefits of that for solving real-world big data problems.
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.
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
Slides de la charla "Carrera de fondo: la continuada lucha de AngularJS" realizada en el CodeMotion 2015 (Madrid). En ella se hace una introducción al desarrollo frontend, librerías más utilizadas y panorama actual.
Después de una breve introducción al funcionamiento de Backbone se realiza el desarrollo y la exposición de los conceptos del framework a nivel básico y medio.
Los ejemplos desarrollados para esta charla están alojados en github: https://github.com/semagarcia/angularjs-codemotion-2015
SSIS a fondo: monitorización y ajustes del servicio en producción - SolidQ Su...SolidQ
En esta sesión dejaremos de lado el desarrollo de paquetes de integración para centrarnos en las tareas que puede llevar a cabo un DBA, que es el responsable -habitualmente- del correcto funcionamiento del servicio en entornos de Producción. Como bonus track hablaremos de las novedades vNext orientadas a escalado del servicio.
http://summit.solidq.com
En un track de motor relacional una sesión NoSQL puede resultar extraña. En esta sesión mostraremos cómo funcionan estas tecnologías con dos aproximaciones diferentes: almacenamiento clave-valor en la nube (Azure) y almacenamiento orientado a documento (MongoDB). Evaluaremos y debatiremos sobre las dos tecnologías y su uso adecuado.
Presentación realizada por Miguel López y Eladio Rincón.
Taller desarrollando sitios web multiplataformaLuis Beltran
This is a tutorial of my workshop "Developing cross-platform websites with Open-Source technology: Making possible the impossible with ASP .NET Core" for students from Universidad Tecnica del Norte in Ibarra, Ecuador. This was a 5-day workshop where students learned how to develop a website with ASP .NET Core that runs on Linux and interacts with a MySQL database.
http://summit.solidq.com
Cuando nos enfrentamos a un proyecto de BI necesitamos planificar distintas fases y tareas, algunas de ellas son interesantes y retadoras, otras por el contrario monótonas y repetitivas. Durante la charla veremos que piezas son necesarias en una solución ágil y como podemos acortar el ciclo de vida de desarrollo de forma drástica.
Como continuación veremos en una sesión eminentemente práctica, cómo construir con esa metodología ágil una solución de BI desde el principio hasta el final. Para ello en la parte de ETL nos apoyaremos en el lenguaje BIML, que nos permite hacer más rápidos nuestros desarrollos.
Te has preguntado alguna vez ¿Existe vida después de ActiveRecord::Base? si es así, en esta charla vamos descubrir que Rails es algo más que un simple MVC, es un framework repleto de herramientas cuyo conocimiento nos va a facilitar enormemente la vida.
Con estas herramientas vas a poder extender Rails de una forma que no habías imaginado hasta ahora: crearas tus propios validadores, responders y renderers; serás capaz de enviar datos por streaming, de interceptar mails o añadir un nuevo middleware a tu stack.
Queremos mostrar 10 de estas herramientas junto con ejemplos de uso de cada una de ellas, para que las puedas incorporar poco a poco en tu día a día y descubras el mundo de posibilidades que realmente tienes en tus manos.
El conjunto de herramientas que vamos a mostrar es:
ActiveModel::Model
ActiveModel::Validator
ActiveSupport::Concern
ActionSupport::Notifications
ActionController::Renderers
ActionController::Responder
ActionController::Live
ActionView::Resolvers
ActionMailer Interceptors
Rack Middleware
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...SolidQ
En esta sesión aprenderemos a detectar e implementar correctamente capas de acceso a datos . NET que escalen a las capacidades HW de nuestras máquinas. Saca provecho de todas las posibilidades de rendimiento que se ofrecen combinando SQL Sever y .NET.
This presentation belongs to 1 of 9 sections within the Big Data Workshop.
Other topics are Parallel Processing, SNA, Data Ingestion, Visualization, among others
Cuentas de Almacenamiento en Microsoft Azure con C#Víctor Moreno
En esta demostración, aprenderás como administrar cuentas de almacenamiento en Microsoft Azure desde código C# .NET usando Visual Studio con proyectos MAML (Microsoft Azure Management Libraries).
Capas de acceso a datos .net escalables de verdad contra SQL ServerEnrique Catala Bañuls
En esta sesión aprenderemos a detectar e implementar correctamente capas de acceso a datos .NET que escalen a las capacidades HW de la máquina
¿Qué aprende nuestro público? Sacar provecho de todas las posibilidades de rendimiento que se ofrecen combinando SQL Server y .NET
Tecnología vista en esta ponencia T-SQL, C#, multihilo,…
Que mejor ejemplo de Big Data que la corriente masiva de datos que generan las redes sociales, en la conferencia se mostraran herramientas y técnicas que se están aplicado para explorar los secretos de twitter en México.
Acompañame en un recorrido práctico en el uso de herramientas OpenSource para el análisis de datos masivos que están al alcance de todos.
Semblanza del conferencista:
Abel Coronado es Científico de datos, Analista de Big data y Arquitecto de plataformas BigData, así como Desarrollador de Software en múltiples lenguajes y paradigmas. Twitter: @abxda
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaAMADO SALVADOR
Descubre el catálogo general de la gama de productos de refrigeración del fabricante de electrodomésticos Miele, presentado por Amado Salvador distribuidor oficial Miele en Valencia. Como distribuidor oficial de electrodomésticos Miele, Amado Salvador ofrece una amplia selección de refrigeradores, congeladores y soluciones de refrigeración de alta calidad, resistencia y diseño superior de esta marca.
La gama de productos de Miele se caracteriza por su innovación tecnológica y eficiencia energética, garantizando que cada electrodoméstico no solo cumpla con las expectativas, sino que las supere. Los refrigeradores Miele están diseñados para ofrecer un rendimiento óptimo y una conservación perfecta de los alimentos, con características avanzadas como la tecnología de enfriamiento Dynamic Cooling, sistemas de almacenamiento flexible y acabados premium.
En este catálogo, encontrarás detalles sobre los distintos modelos de refrigeradores y congeladores Miele, incluyendo sus especificaciones técnicas, características destacadas y beneficios para el usuario. Amado Salvador, como distribuidor oficial de electrodomésticos Miele, garantiza que todos los productos cumplen con los más altos estándares de calidad y durabilidad.
Explora el catálogo completo y encuentra el refrigerador Miele perfecto para tu hogar con Amado Salvador, el distribuidor oficial de electrodomésticos Miele.
HPE presenta una competició destinada a estudiants, que busca fomentar habilitats tecnològiques i promoure la innovació en un entorn STEAM (Ciència, Tecnologia, Enginyeria, Arts i Matemàtiques). A través de diverses fases, els equips han de resoldre reptes mensuals basats en àrees com algorísmica, desenvolupament de programari, infraestructures tecnològiques, intel·ligència artificial i altres tecnologies. Els millors equips tenen l'oportunitat de desenvolupar un projecte més gran en una fase presencial final, on han de crear una solució concreta per a un conflicte real relacionat amb la sostenibilitat. Aquesta competició promou la inclusió, la sostenibilitat i l'accessibilitat tecnològica, alineant-se amb els Objectius de Desenvolupament Sostenible de l'ONU.
3. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Recursos de la presentación
http://twitter.com/victor_cuervo
https://github.com/victorcuervo/mongodb-codemotion
http://www.slideshare.net/victorcuervo/
5. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Índice
MongoDB
Nuevo en MongoDB 3.2
Consultas Avanzadas
Índices Avanzados
Modelado en MongoDB
DBaaS y PaaS
Tooling con MongoDB
7. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
¿Todavía no sabes 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, nodejs, go,…
Maneja bases de datos, colecciones, campos, indices,…y no
permite hacer un xxxxxx join.
9. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Cuadrante Mágico Gartner
Cuadrante sobre bases
de datos operacionales.
MongoDB dentro del
cuadrante de challengers.
(*) https://www.mongodb.com/blog/post/gartner-positions-
mongodb-challenger-magic-quadrant-operational-database-
management
10. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Si te has quedado con dudas…
Manual MongoDB
https://docs.mongodb.org/manual/
NOSQL: Primeros pasos en MongoDB
http://www.slideshare.net/victorcuervo/nosql-primeros-pasos-en-mongodb-codemotion
Ejemplos de código en MongoDB
http://lineadecodigo.com/categoria/mongodb/
11. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Antes de empezar… Colección Ejemplo
{
"_id" : ObjectId("565914732c23d80f730a1f49"),
"gender" : "M",
"name" : "Dennis Rogers",
"username" : "drogers1",
"birthday" : "06/11/1957",
"email" : "drogers1@issuu.com",
"social" : {
"facebook" : "drogers1",
"twitter" : "drogers1",
"linkedin" : "drogers1"
},
"description" : "Proin interdum mauris non ligula….”,
"hobbies" : [
"tv",
"cine",
"viajes"
]
}
13. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Nuevos Engines
Se añaden nuevos engines de almacenamiento.
Las capacidades de la plataforma se pueden extender
atendiendo al tipo de carga que tengamos para cada
escenario:
Almacenamiento en memoria para real-time
Almacenamiento de datos securizados
Uso de WiredTiger como engine por defecto.
14. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Nuevos Engines: Escenarios
15. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Validación de documentos
En MongoDB 3.2 se puede
personalizar si queremos forzar
la validación del documento:
estructura, tipos de datos,
rangos,..
Ayuda al gobierno de los
schemas y datos almacenados.
17. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
MongoDB y Real Time
El BI Connector permite integrar MongoDB con
herramientas de visualización como Tableau, QlikView,…
“El 90% de los datos nunca son analizados y el
60% de los datos pierde el valor milisegundos
después de ser generado”
18. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
MongoDB Compass
MongoDB Compass
es un GUI que permite
explorar los datos de
forma visual sin tirar
una consulta.
19. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
API de Métricas
MongoDB 3.2 ofrece un API que expone las métricas de
rendimiento de las queries para que puedan ser
consumidas por herramientas APM (Application
Performance Monitoring).
21. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Covered Queries
Las covered queries son aquellas que:
• todos los campos de la query son parte del índice y
• todos los campos devueltos por una query están en el mismo
índice
La búsqueda de MongoDB solo se realizará por el índice y no a través
de los documentos. Como los índices están en memoria, la
recuperación de información es muy rápida.
22. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Ejemplo de Covered Query
{
"_id": ObjectId("53402597d852426020000002"),
"birthday": “11/18/1977”,
"gender": "M",
"name": “Víctor Cuervo",
"username": “victorcuervo"
}
# Índice
db.users.createIndex({gender:1,username:1})
#Consulta
db.users.find({gender:"M"},{username:1,_id:0})
23. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Text Search
MongoDB soporta índices sobre elementos de texto. De esa manera podemos
realizar búsquedas de cadenas de texto.
Para poder utilizar Text Search en MongoDB deberemos de:
• Activar las búsquedas de texto mediante el parámetro
searchTextEnabled.
• Crear un índice de texto
• Realizar la consulta.
24. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Ejemplo de Text Search
db.adminCommand({setParameter:true,textSearchEnabled:true})
{
"_id": ObjectId("53402597d852426020000002"),
"username": “raulanton”,
“description”: “Apasionado de la lectura de novelas históricas…”,
“hobbies”: [“lectura”,”novelas”,”cine”,”naturaleza”]
}
db.posts.createIndex({description:"text"})
db.posts.createIndex({description:"text"}, {default_language:spanish})
db.posts.find({$text:{$search:"novelas"}})
25. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Ejemplo de Text Search
#Consulta de texto
db.posts.find({$text:{$search:”novelas”}})
# Más nos vale tener el índice
Error: error: {
"waitedMS" : NumberLong(0),
"ok" : 0,
"errmsg" : "text index required for $text query",
"code" : 27
}
26. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Expresiones Regulares
Podemos realizar búsquedas por patrones mediante expresiones regulares.
MongoDB nos proporciona el operador $regexp
Se pueden indicar parámetro de las búsquedas, por ejemplo si queremos que
sean “case sensitive”.
27. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Ejemplo de Expresiones Regulares
{
"_id": ObjectId("53402597d852426020000002"),
"username": “raulanton”,
“name”: “Raúl Antón”,
“description”: “Apasionado de la lectura de novelas históricas…”,
“hobbies”: [“lectura”,”novelas”,”cine”,”naturaleza”]
}
db.posts.find({name:{$regex:”Ra”}})
db.posts.find({name:/^R/})
db.posts.find({contenido:{$regex:”ra",$options:"$i"}})
28. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Bulking
MongoDB permite ejecutar operaciones en batch. De
esta manera nos devuelve un documento resultado de la
ejecución de todas las operaciones.
De forma ordenada o desordenada:
initializeOrderedBulkOp()
initializeUnOrderedBulkOp()
29. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Ejemplo de bulking
bulk = db.products.initializeOrderedBulkOp()
bulk.insert({name:"A",items:10})
bulk.insert({name:"B",items:15})
bulk.find({name:"A"}).update({ $inc: { items : 1 }})
bulk.find({name:"B"}).removeOne()
bulk.execute()
30. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Capped Collection
Son colecciones de tamaño fijo que soportan un alto
throughput de operaciones. Mantienen el orden de
inserción, por lo cual no necesitan un índice.
Funcionan como un buffer circular, de tal manera que
cuando se llena se eliminan los documentos más antiguos.
31. MADRID · NOV 27-28 · 2015
Ejemplo de Capped Collection
# Crear una Capped Collection
db.createCollection( "log", { capped: true, size: 100000 } )
# Validar si es una Capped Collection
db.log.isCapped()
#Recuperar los documento en orden inverso
db.log.find().sort( { $natural: -1 } )
32. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Two Phase Commit
Las operaciones en MongoDB son atómicas sobre un solo
documento. La capacidad de tener documentos anidados junto
con la atomicidad sería un enfoque para los antiguos modelos
“two phase commit”.
En el caso de que haya que tratar varios documentos de forma
transaccional hay que implementar dicha transaccionalidad en la
aplicación.
33. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Two Phase Commit Pattern
Consideramos el escenario en el que vamos a transferir
desde la cuenta A a la cuenta B una cantidad de
dinero.
Partimos de dos colecciones:
cuentas - accounts
transacciones - transacctions
34. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Two Phase Commit Pattern
1. Inicializamos las cuentas
db.accounts.insert(
[
{ _id: "A", balance: 1000, pendingTransactions: [] },
{ _id: "B", balance: 1000, pendingTransactions: [] }
]
)
35. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Two Phase Commit Pattern
2. Creamos una transacción
db.transactions.insert(
{ _id: 1,
source: “A",
destination: “B",
value: 100,
state: “initial",
lastModified: new Date()
})
36. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Two Phase Commit Pattern
3. Buscamos una transacción para ejecutar
var t = db.transactions.findOne( { state: "initial" } )
db.transactions.update(
{ _id: t._id, state: "initial" },
{
$set: { state: "pending" },
$currentDate: { lastModified: true }
}
)
43. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Índices Multiclave
Son los índices que se aplican cuando el campo es un array. Se
crea una clave de índice por cada uno de los elementos que
componen el array.
No se pueden crear índices multiclave compuestos y tampoco se
puede especificar un índice multiclave como sharing key.
db.coll.createIndex( { <field>: < 1 or -1 > } )
44. MADRID · NOV 27-28 · 2015
Índices sobre textos
MongoDB cuenta con soporte para índices de texto para
facilitar búsquedas de contenido. Soporta “stopwords” para
ciertos idiomas.
db.users.createIndex( { description: "text" } )
# Para buscar por todos los campos
db.users.createIndex( { "$**": "text" } )
45. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Índices TTL
MongoDB permite que haya índices que tengan un tiempo
de vida. Pasado ese tiempo de vida, expiran.
db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } )
47. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
One-To-One (1:1)
Las relaciones 1:1 pueden ser modeladas de dos formas
en MongoDB: insertar la relación en un único documento o
bien tener un link al otro documento.
{
name: “Víctor Cuervo",
age: 38
}
{
street: Alcala 45",
city: "Madrid"
}
49. MADRID · NOV 27-28 · 2015
One-To-Many (1:N)
Las relaciones 1:N pueden ser modeladas de tres formas
en MongoDB: insertar la relación en un único documento,
link al otro documento o bucketing.
50. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
One-To-Many (1:N)
{
title: “Línea de Código",
url: “http://lineadecodigo.com",
text: “Aprende a Programar"
}
{
blog_entry_id: 1,
name: “Daniel Hernandez",
created_on: ISODate("2014-01-01T10:01:22Z"),
comment: “Me gusta tu blog"
}
{
blog_entry_id: 1,
name: “Fran Honrrubia",
created_on: ISODate("2014-01-01T11:01:22Z"),
comment: “Gran trabajo"
}
Blog
Comentarios
51. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
One-To-Many (1:N). Embeding
{
title: “Línea de Código",
url: "http://lineadecodigo.com",
text: “Aprende a Programar",
comments: [{
name: “Daniel Hernandez",
created_on: ISODate("2014-01-01T10:01:22Z"),
comment: “Me gusta tu blog"
}, {
name: “Fran Honrubia",
created_on: ISODate("2014-01-01T11:01:22Z"),
comment: “Gran trabajo"
}]
}
El contenido insertado se crea
dentro de un array.
Hay que tener cuidado con el
tamaño del array y no sobrepasar
los 16Mb.
A MongoDB le cuesta calcular el
padding. Problemas de
performance.
52. MADRID · NOV 27-28 · 2015
One-To-Many (1:N). Linking
{
blog_entry_id: 1,
name: “Daniel Hernandez",
created_on: ISODate("2014-01-01T10:01:22Z"),
comment: “Me gusta tu blog"
}
{
blog_entry_id: 1,
name: “Fran Honrubia",
created_on: ISODate("2014-01-01T11:01:22Z"),
comment: “Gran trabajo"
}
Hay que hacer tantas lecturas a
la base de datos como
documentos tengamos
enlazados.
53. MADRID · NOV 27-28 · 2015
One-To-Many (1:N). Bucketing
{
blog_entry_id: 1,
page: 1,
count: 50,
comments: [{
name: “Daniel Hernandez",
created_on: ISODate("2014-01-01T10:01:22Z"),
comment: “Me gusta tu blog"
}, ...]
}
{
blog_entry_id: 1,
page: 2,
count: 1,
comments: [{
name: “Fran Honrubia",
created_on: ISODate("2014-01-01T11:01:22Z"),
comment: “Gran trabajo"
}]
}
Es una mezcla entre embedding y
linking. Se divide en contenedores
con un tamaño y se inserta el
comentario en el contenedor que
toca.
Tiene que tener algún concepto de
división como fechas,….
54. MADRID · NOV 27-28 · 2015
Many-To-Many (N:N)
Las relaciones N:N se modelan mediante técnicas de
embedding.
En el caso de que haya una de las partes predominantes
se modelaría hacía un solo sentido.
55. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Many-To-Many (N:N). Two Ways
{
_id: 1,
name: "Peter Standford",
books: [1, 2]
}
{
_id: 2,
name: "Georg Peterson",
books: [2]
}
{
_id: 1,
title: "A tale of two people",
categories: ["drama"],
authors: [1, 2]
}
{
_id: 2,
title: "A tale of two space ships",
categories: ["scifi"],
authors: [1]
}
56. MADRID · NOV 27-28 · 2015
Many-To-Many (N:N). One Way
{
_id: 1,
name: "drama"
}
{
_id: 1,
title: "A tale of two people",
categories: [1],
authors: [1, 2]
}
58. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
MongoLab
MongoLab es un BDaaS que nos permite
aprovisionarnos bases de datos de MongoDB de forma
dinámica en cloud de una forma sencilla.
Funciona en formato PaaS que funciona sobre Google,
AWS y Azure.
$ mongo ds047037.mongolab.com:47037/<db> -u <dbuser> -p <dbpassword>
$ mongodb://<dbuser>:<dbpassword>@ds047037.mongolab.com:47037/<db>
59. MADRID · NOV 27-28 · 2015
Características MongoLab
MongoLab nos permite de forma sencilla:
• Crear bases de datos dinámicamente.
• Monitorización y alertas 24x7.
• GUI para operaciones básicas.
• Análisis de índices y performance.
• Establecer seguridad en la conexión.
• Soporte para APIs de diferentes lenguajes.
60. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
MongoLab
61. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
MongoDB y Docker
MongoDB ya está “dockerizado”.
Disponible en el Docker Hub Registry (https://hub.docker.com/_/mongo/)
$ docker run --name some-mongo -d mongo
$ docker run -it --link some-mongo:mongo --rm mongo sh -c 'exec mongo
"$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/test"'
Crear una imagen Docker con MongoDB
https://docs.docker.com/engine/examples/mongodb/
62. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
MongoDB en PaaS
MongoDB está disponible en diferentes entornos
PaaS: BlueMix, Heroku, OpenShift,…
64. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Herramientas de tooling para MongoDB
Existen múltiples herramientas de tooling alrededor de
MongoDB: GUI, Conectores, Monitorización, Performance
Tuning, Mejoras del Shell, Manejo para JSON,…
Hay un listado extenso en http://mongodb-tools.com/
65. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Mockaroo
Herramienta online que nos permite crear colecciones JSON.
• Tipos de datos estándar: datos sobre personas, salud, monetarios,
colores,
• Permite crear subdocumentos y arrays
• Trabajar con expresiones regulares
• Dispone de un API para invocarlo de forma externa.
https://www.mockaroo.com
(*) Gratuito hasta 1.000 filas.
66. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Mockaroo
67. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Mongo Hacker
Permite mejorar el Shell de
MongoDB:
• Añadir colores
• Extensiones al API Shell
• Ayudas Framework
Agregación
https://tylerbrock.github.io/mongo
-hacker/
68. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Recursos
Nuevo en MongoDB 3.2
Capped collection
Nuevo API de Bulking
Two Phase Commit
Modeling MongoDB Schema
MongoLab
Mockaroo
69. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Recursos de la presentación
http://twitter.com/victor_cuervo
https://github.com/victorcuervo/mongodb-codemotion
http://www.slideshare.net/victorcuervo/
70. MADRID · NOV 27-28 · 2015{twitter:”@victor_cuervo”}
Preguntas