mongodb (conceptos básicos) - junio 2010

83
mongoDB Conceptos básicos http://www.mongodb.org 16 de Junio de 2010 Rafael Hernampérez MongoSpanish

Upload: rafael-hernamperez

Post on 07-Jul-2015

720 views

Category:

Technology


2 download

DESCRIPTION

Esta presentación expone algunas de las características más destacadas de la base de datos NoSQL MongoDB, incluyendo al final una sección dedicada al esquema orientado a documentos, y algunos comandos básicos de consulta y actualización.

TRANSCRIPT

mongoDBConceptos básicos

http://www.mongodb.org

16 de Junio de 2010 Rafael HernampérezMongoSpanish

¿Qué es MongoDB?

mongoDB

¿Qué es MongoDB?

mongoDB

Es una base de datos

¿Qué es MongoDB?

mongoDB

Es una base de datosopen source

¿Qué es MongoDB?

mongoDB

Es una base de datosopen source

de alto rendimiento

¿Qué es MongoDB?

mongoDB

Es una base de datosopen source

de alto rendimientode esquema libre

¿Qué es MongoDB?

mongoDB

Es una base de datosopen source

de alto rendimientode esquema libre

orientada a documento

Uso de MongoDB

mongoDB

Uso de MongoDB

mongoDB

Muy Recomendado

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles•Datos grandes: fotos y vídeos

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles•Datos grandes: fotos y vídeos•Cantidad enorme de usuarios

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles•Datos grandes: fotos y vídeos•Cantidad enorme de usuarios•Destreza crítica: desarrollo ágil

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles•Datos grandes: fotos y vídeos•Cantidad enorme de usuarios•Destreza crítica: desarrollo ágil•Nuevos modelos de programación

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles•Datos grandes: fotos y vídeos•Cantidad enorme de usuarios•Destreza crítica: desarrollo ágil•Nuevos modelos de programación•Web en tiempo real: analíticas y trazabilidad

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles•Datos grandes: fotos y vídeos•Cantidad enorme de usuarios•Destreza crítica: desarrollo ágil•Nuevos modelos de programación•Web en tiempo real: analíticas y trazabilidad•Cacheo

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles•Datos grandes: fotos y vídeos•Cantidad enorme de usuarios•Destreza crítica: desarrollo ágil•Nuevos modelos de programación•Web en tiempo real: analíticas y trazabilidad•Cacheo•Alto volumen de datos

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles•Datos grandes: fotos y vídeos•Cantidad enorme de usuarios•Destreza crítica: desarrollo ágil•Nuevos modelos de programación•Web en tiempo real: analíticas y trazabilidad•Cacheo•Alto volumen de datos•Escalabilidad

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles•Datos grandes: fotos y vídeos•Cantidad enorme de usuarios•Destreza crítica: desarrollo ágil•Nuevos modelos de programación•Web en tiempo real: analíticas y trazabilidad•Cacheo•Alto volumen de datos•Escalabilidad

Menos Recomendado

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles•Datos grandes: fotos y vídeos•Cantidad enorme de usuarios•Destreza crítica: desarrollo ágil•Nuevos modelos de programación•Web en tiempo real: analíticas y trazabilidad•Cacheo•Alto volumen de datos•Escalabilidad

Menos Recomendado

•Alta transaccionalidad

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles•Datos grandes: fotos y vídeos•Cantidad enorme de usuarios•Destreza crítica: desarrollo ágil•Nuevos modelos de programación•Web en tiempo real: analíticas y trazabilidad•Cacheo•Alto volumen de datos•Escalabilidad

Menos Recomendado

•Alta transaccionalidad•Business Intelligence Ad-hoc

Uso de MongoDB

mongoDB

Muy Recomendado

•La Web y la nube en general•Entornos distribuidos e impredecibles•Datos grandes: fotos y vídeos•Cantidad enorme de usuarios•Destreza crítica: desarrollo ágil•Nuevos modelos de programación•Web en tiempo real: analíticas y trazabilidad•Cacheo•Alto volumen de datos•Escalabilidad

Menos Recomendado

•Alta transaccionalidad•Business Intelligence Ad-hoc•Problemas específicos que requieran SQL

Características destacadasmongoDB

Características destacadasmongoDB

•Alta disponibilidad, replicación, auto-fragmentación

Características destacadasmongoDB

•Alta disponibilidad, replicación, auto-fragmentación•Escalabilidad

Características destacadasmongoDB

•Consultas dinámicas

•Alta disponibilidad, replicación, auto-fragmentación•Escalabilidad

Características destacadasmongoDB

•Actualizaciones atómicas•Consultas dinámicas

•Alta disponibilidad, replicación, auto-fragmentación•Escalabilidad

Características destacadasmongoDB

•Agregación y MapReduce•Actualizaciones atómicas•Consultas dinámicas

•Alta disponibilidad, replicación, auto-fragmentación•Escalabilidad

Características destacadasmongoDB

•Agregación y MapReduce•Optimizador de consultas

•Actualizaciones atómicas•Consultas dinámicas

•Alta disponibilidad, replicación, auto-fragmentación•Escalabilidad

Características destacadasmongoDB

•Agregación y MapReduce•Optimizador de consultas•Indices

•64 índices por colección•Indices secundarios•Indices únicos•Indices geoespaciales

•Actualizaciones atómicas•Consultas dinámicas

•Alta disponibilidad, replicación, auto-fragmentación•Escalabilidad

Características destacadasmongoDB

•Agregación y MapReduce

•Shell basada en JavaScript

•Optimizador de consultas•Indices

•64 índices por colección•Indices secundarios•Indices únicos•Indices geoespaciales

•Actualizaciones atómicas•Consultas dinámicas

•Alta disponibilidad, replicación, auto-fragmentación•Escalabilidad

Características destacadasmongoDB

•Agregación y MapReduce

•Shell basada en JavaScript

•Optimizador de consultas•Indices

•64 índices por colección•Indices secundarios•Indices únicos•Indices geoespaciales

•Actualizaciones atómicas

•Alto rendimiento y eficiencia de recursos

•Consultas dinámicas

•Alta disponibilidad, replicación, auto-fragmentación•Escalabilidad

Características destacadasmongoDB

•Agregación y MapReduce

•Shell basada en JavaScript

•Optimizador de consultas•Indices

•64 índices por colección•Indices secundarios•Indices únicos•Indices geoespaciales

•Actualizaciones atómicas

•Alto rendimiento y eficiencia de recursos

•Consultas dinámicas

•Sencillez de administración

•Alta disponibilidad, replicación, auto-fragmentación•Escalabilidad

Características destacadasmongoDB

•Agregación y MapReduce

•Shell basada en JavaScript

•Múltiples plataformas: Windows, Linux, Solaris, MacOS X

•Optimizador de consultas•Indices

•64 índices por colección•Indices secundarios•Indices únicos•Indices geoespaciales

•Actualizaciones atómicas

•Alto rendimiento y eficiencia de recursos

•Consultas dinámicas

•Sencillez de administración

•Alta disponibilidad, replicación, auto-fragmentación•Escalabilidad

Esquemas libres

mongoDB

Esquemas libres

mongoDB

Aflojamiento de restricciones

Esquemas libres

mongoDB

Aflojamiento de restriccionesFlexibilidad añadida

Esquemas libres

mongoDB

Aflojamiento de restriccionesFlexibilidad añadida

Dinámicamente interpretado por los lenguajes

Esquemas libres

mongoDB

Aflojamiento de restriccionesFlexibilidad añadida

Dinámicamente interpretado por los lenguajes

Modelo comprensible

Combinación de rendimiento y funcionalidad

mongoDB

Profundidad de Funcionalidad

Esca

labi

lidad

y R

endi

mie

nto memcached

Repositorios clave/valor

MongoDB

RDBMS

Teorema de CAP

mongoDB

Teorema de CAP

mongoDB

Consistencianombre : “jose”nombre : “jose”

Teorema de CAP

mongoDB

Consistencia

Disponibilidadnombre : “jose”nombre : “jose”

Teorema de CAP

mongoDB

Consistencia

Disponibilidad

Particionamiento

nombre : “jose”nombre : “jose”

Replicación

mongoDB

Replicación

mongoDB

Maestro - Esclavo

Maestro

Replicación

mongoDB

Maestro - Esclavo

Maestro

Esclavo Esclavo Esclavo

Replicación

mongoDB

Maestro - Esclavo

Maestro

Esclavo Esclavo Esclavo

Esclavo

Replicación

mongoDB

Maestro - Esclavo

Maestro

Esclavo Esclavo Esclavo

Esclavo

Maestro Esclavo

Réplica

Replicación

mongoDB

Maestro - Esclavo

Maestro

Esclavo Esclavo Esclavo

Esclavo

Maestro Esclavo

Maestro Esclavo

Réplica

Replicación

mongoDB

Maestro - Esclavo

Maestro

Esclavo Esclavo Esclavo

Esclavo

Maestro Esclavo

Maestro Esclavo

Maestro Maestro

Réplica

Replicación

mongoDB

Maestro - Esclavo

Maestro

Esclavo Esclavo Esclavo

Esclavo

Maestro Esclavo

Maestro Esclavo

Maestro Maestro

MaestroEsclavo

Réplica

Auto-fragmentación

mongoDB

mongod

mongod

mongod

mongos

Cliente

Fragmentos

mongod

mongod

mongod

mongod

mongod

mongod

ServidoresConfiguración

mongos …

Drivers

mongoDB

Drivers

mongoDB

Drivers

mongoDB

Drivers

mongoDB

Drivers

mongoDB

Drivers

mongoDB

Drivers

mongoDB

Drivers

mongoDB

Drivers

mongoDB

Drivers

mongoDB

Drivers

mongoDB

En producción

mongoDB

En producción

mongoDB

En producción

mongoDB

En producción

mongoDB

En producción

mongoDB

En producción

mongoDB

En producción

mongoDB

En producción

mongoDB

En producción

mongoDB

En producción

mongoDB

En producción

mongoDB

Esquema relacional

mongoDB

Esquema libre

mongoDB

post = {fecha = Date("04-18-2010"),autor = "Rafael Hernamperez",titular = "Introduccion a MongoDB",resumen = "Texto del resumen",articulo = "Bla Bla Bla...",etiquetas = ["Base de datos", "NoSQL", "MongoDB"],comentarios : [{ fecha : Date("04-18-2010"),autor : "rafinguer", texto : "El articulo es sencillo y claro de comprender",votantes : [ ObjectID("25C0EF00A012"),

ObjectID("38FF9CBC41BC"),ObjectID("BC9A220100C1")],

votos: 3},{ fecha : Date("04-18-2010"),autor : "clemenbosque",texto : "Parece muy interesante",votantes : [ ObjectID("25C0EF00A012"),

ObjectID("CC1B331211D2")],votos : 2}

]}

Consultas

mongoDB

// Consultar los posts escritos por Rafael Hernamperezdb.posts.find({autor : “Rafael Hernamperez”})

// Consultar los posts dentro de un rango de fechas en orden descendentedb.posts.find({fecha : {‘$gt’: Date(“04-01-2010”)} , fecha : {‘$lt’: Date(“04-30-2010”)}}).sort({‘fecha’ : -1})

// Consultas con expresiones regularesdb.posts.find({“autor.nombre” : {$not : /Rafael|Eduardo/gi}})

// Operadores condicionales$ne $lt $gt $lte $gte$mod $not $where$exists $type$in $nin $all $size $elemMatch // arrays

Indices

mongoDB

// Indice normaldb.posts.ensureIndex({“fecha” : -1})

// Indice múltipledb.posts.ensureIndex({“fecha” : -1, “autor” : 1})

// Indice secundariodb.posts.ensureIndex({“comentarios.autor” : 1})

// Indice en backgrounddb.posts.ensureIndex({“comentarios.autor” : 1}, {background: true})

// Indice únicodb.posts.ensureIndex({“titular” : 1}, {unique: true})

Actualizaciones

mongoDB

// Agrega nuevo documento a coleccióndb.posts.save({…})

// Actualizacióndb.posts.update({“autor” : “Nerea del Bosque”}, {$push: {etiquetas: “MongoDB”}})db.posts.update({“autor” : “Nerea del Bosque”}, {$pushAll: {etiquetas:

[“Bases de datos”, “NoSQL”]}})db.posts.update({“comentarios.autor” : “Nerea del Bosque”},

{$inc: {“comentarios.votos”: 1}})

// Eliminacióndb.posts.remove({“autor” : “Eduardo Fernandez”})

// Modificadores de actualización$inc $set $unset $push $pushAll $addToSet $pop $pull $pullAll

Tutorial MongoDB

mongoDB

http://try.mongodb.org

mongoDBhttp://www.mongodb.org

16 de Junio de 2010 Rafael HernampérezMongoSpanish

http://mongospanish.blogspot.com

@mongospanish

Página oficial

Comunidad en español

Twitter