mongodb (conceptos básicos) - junio 2010
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
¿Qué es MongoDB?
mongoDB
Es una base de datosopen source
de alto rendimientode esquema libre
orientada a documento
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
•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
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
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 …
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