SlideShare una empresa de Scribd logo
1 de 76
NOSQL: Primeros
Pasos con MongoDB
Índice de Contenidos

•
•
•
•
•
•
•
•
•
•
•

Sobre el Ponente
¿Qué es eso del NOSQL?
Hablemos de MongoDB
Pero haz ya una SELECT
¿Tercera forma normal?
Rendimiento… Indexame
Agregar datos en MongoDB
Java, Python, Javascript,…
Más, más, más…
Herramientas
Quiero aprender más
Sobre el ponente: Víctor Cuervo

Programador, Arquitecto IT, álter ego
de Línea de Código, amante de las
tecnologías, generador de
conocimiento y facilitador del
aprendizaje.
http://lineadecodigo.com
http://www.victorcuervo.com
Responsable del Área QA
Arquitecto Técnico
ISBAN. Grupo Santander
¿Qué es eso
del NOSQL?
¿Qué es NOSQL?

NOSQL es una evolución del sistema clásico de
bases de datos relacionales cuya principal
característica es que no se requiere una
definición inicial de las estructuras sobre las que
se almacenarán los datos.
¿Por qué se llega a NOSQL?

• Evolución del modelo entidad-relación para el
soporte de estructuras variables en el tiempo.
• Alternativas
•
•
•

Meta-modelos en ER
Bases de datos de objetos
Bases de datos XML / XQuery
Tipos de Bases de Datos NOSQL

• Columna
•

Hadoop/HBase, Cassandra

• Documento
•

MongoDB, CouchDB

• Clave/Valor
•

DynamoDB, Redis

• Grafos
•

Neo4j, Infinite Graph
http://nosql-database.org
Quiero usar NOSQL… dame ejemplos

• Ejemplo Básico…
•
•

Información de redes sociales
Logs

• … y en la industria
• Polimorfismo de datos
¿Polimorfismo y NOSQL?
Domicilio
Persona
Nombre
Apellido1
Apellido2

Calle
Comunidad
País
Domicilio

Persona
Nombre
Middle Name
Apellido

Calle
Condado
País

Producto 1

Producto 2

Producto3

Valor Inicial
Valor Final

Valor
Estado
Demandante

Regla

Domicilio
Calle
Región
País
Hablemos de
MongoDB
¿Qué es MongoDB?

• MongoDB es una base de datos NOSQL
orientada a documentos.
• Desarrollada por 10gen (ahora llamados
MongoDB).

• Características
• Flexibilidad de los Modelos
• Alto Rendimiento, Alta Disponibilidad
• Escalabilidad
BSON su modelo de documentos

• El modelo de documentos se basa en el
estándar JSON/BSON.
• BSON es una serialización binaria del JSON
• Características de BSON
• Permite tener documentos dentro de
documentos
• Podemos definir arrays dentro de
documentos
Documento BSON
{
_id: "joe",
name: "Joe Bookreader",
addresses: [
{
street: "123 Fake Street",
city: "Faketon",
state: "MA",
zip: 12345
},
{
street: "1 Some Other Street",
city: "Boston",
state: "MA",
zip: 12345
}
]}
Instalar MongoDB

• Distribuciones para MacOS, Linux (Ubuntu,
Debian,…) y Windows. Ejecuta en plataformas
32-bits y 64-bits
• Se puede descargar desde
http://www.mongodb.org/downloads
• Documentación de instalación en
http://docs.mongodb.org/manual/installation/
Ejecutar MongoDB

mongod
Nos permite arrancar el servidor de MongoDB
Escucha en el puerto 27017
mongo
Ejecuta la consola de MongoDB

En http://www.mongodb.org/downloads se puede
encontrar una consola de pruebas.
Conceptos Básicos

SQL Terms/Concepts

MongoDB Terms/Concepts

database

database

table

collection

row

document or BSON document

column

field

index

index

table joins

embedded documents and linking

primary key
Specify any unique column or column
combination as primary key.

primary key
In MongoDB, the primary key is
automatically set to the _id field.

aggregation (e.g. group by)

aggregation pipeline
See the SQL to Aggregation Mapping
Chart.
Pero haz ya
una SELECT
Modelo de pruebas
{
"_id" : ObjectId("525ab02733b01a66a9dcbc60"),
"ciudad" : "Malaga",
"habitantes" : 567433
}
{
"_id" : ObjectId("525ab02733b01a66a9dcbc61"),
"ciudad" : "Murcia",
"habitantes" : 441354
}
{
"_id" : ObjectId("525ab02733b01a66a9dcbc62"),
"ciudad" : "Palma de Mallorca",
"habitantes" : 407648
}
Consultas, función find

Las consultas se ejecutan mediante la función
find:
db.ciudades.find({ciudad:'Madrid'});
Consultas con operadores

Podemos utilizar operadores dentro de las
consultas:
db.ciudades.find({
habitantes:{$lt:400000}
});
db.ciudades.find({
habitantes:{$gt:1000000}
});
Combinar operadores

El documento de consulta puede combinar varios
operadores:
db.ciudades.find({
ciudad:/^M/,
habitantes:{$lt:1000000}
});
db.ciudades.find({
$or:[{ciudad:/^M/},{ciudad:/^Z/}]
});
Sort para ordenar resultados

Ascendente (1) o descendente (-1)

db.ciudades.find().sort({
ciudad:1
});
db.ciudades.find().sort({
ciudad:-1
});
Limit para limitar las consultas

Recibe el número de elementos a limitar en la
consulta como parámetro.
db.ciudades.find().limit(4);
IN para consulta de elementos

Los elementos de los valores están en un array:

db.ciudades.find({ciudad:
{$in:['Avila','Zamora','Madrid']}
});
Busquedas por Like

Uso de expresiones regulares para buscar por
like:
db.ciudades.find({ciudad:/^M/});
db.ciudades.find({ciudad:/r/});
db.ciudades.find({ciudad:/d$/});
Projection o selección de datos

Projection nos permite escoger que campos
devolver del documento
db.ciudades.find({
habitantes:{$gt:1000000}},
{ciudad:1});
db.ciudades.find({
habitantes:{$gt:1000000}},
{ciudad:1,_id:0});
Saltarnos datos con SKIP

Recibe como parámetro los elementos a saltar:

db.ciudades.find().skip(2);
Insertar datos

Utilizamos la función Insert

db.ciudades.insert(
{'ciudad':'Avila',
'habitantes':58915
});
Actualizar datos

Utilizamos la función Update:

db.ciudades.update(
{ciudad:'Avila'},
{$set:{habitantes:58915}
});
Actualizaciones Múltiples

Por defecto MongoDB solo actualiza un
documento:
db.ciudades.update({
habitantes:{$gt:600000}},
{$set:{'grande':true}},
{multi:true}
);
Upsert: Actualiza si no Inserta

La función upsert actualiza un documento, si no
está lo inserta.
db.ciudades.update({
ciudad:'Zamora'},
{$set:{habitantes:65362}},
{upsert:true}
);
Borrado de datos

Utiliza la función delete. Por defecto borra todos
los documentos, al menos que especifiquemos
otra cosa.
db.ciudades.delete({
ciudad:'Zamora'},
);
db.ciudades.delete({
habitantes:{$lt:400000}
},1);
Dot Notation

MongoDB utiliza la anotación del punto para
acceder a campos de subdocumentos y a
elementos de arrays:
array.indice

subdocumento.campo
$push, $pull, $addtoset,…

Operadores que nos sirven para el manejo de
arrays:
db.ciudades.update(
{ ciudad: “Avila" },
{ $push: { monumentos:
{ $each:
[ ‘Murallas’,’La Santa’,’San Vicente’]
}
}})
Más funciones

Hay muchas más funciones básicas:

•
•
•
•
•

Agrupación
Distintc
Contadores
FindAndModify
…
¿Tercera
forma normal?
Modelos de Datos

• Embebidos
• Aprovecha las capacidades de los
subdocumentos para contener la relación
dentro del propio documento.
• Normalizados
• Referencia los documentos mediante IDs.
Modelo Embebido
Modelo Normalizado
Cardinalidad en MongoDB

• Cardinalidades en MongoDB:
• Modelo 1:1
• Modelo 1:N
• Modelo 1:N Referenciado
• Modelos en Árbol
• Más información de modelos en
http://docs.mongodb.org/manual/datamodeling/
Cardinalidad 1:1

{
_id: "joe",
name: "Joe Bookreader",
address: {
street: "123 Fake Street",
city: "Faketon",
state: "MA",
zip: 12345
}
}
Cardinalidad 1:N

{

_id: "joe",
name: "Joe Bookreader",
addresses: [
{
street: "123 Fake Street",
city: "Faketon",
state: "MA",
zip: 12345
},
{
street: "1 Some Other Street",
city: "Boston",
state: "MA",
zip: 12345
}
]
}
Cardinalidad 1:N Referenciada

{
_id: "oreilly",
name: "O'Reilly Media",
founded: 1980,
location: "CA“
}
{
_id: 123456789,
title: "MongoDB: The Definitive Guide“,
author: [ "Kristina Chodorow", "Mike Dirolf" ],
published_date: ISODate("2010-09-24"),
pages: 216, language: "English",
publisher_id: "oreilly“
}
Quiero hacer un join

• MongoDB no soporta JOINS

• La manipulación de información referenciada
hay que hacerla manual.
• Algunos drivers han implementado un objeto
DBRefs para poder ayudar en la consulta de
información referenciada.
A tener en cuenta cuando modelas

• El crecimiento de los documentos
•

Si añadimos nuevos elementos/campos al
documento y nos pasamos del tamaño máximo
MongoDB tendrá que alojar el documento en disco.

• Atomicidad de las operaciones
•

En MongoDB la atomicidad es a nivel de
documento.

• Manejo de Índices
•

Para mejorar el rendimiento. Por defecto hay un
índice sobre el _id.

• Distribución de los documentos
•

El escalado en MongoDB es horizontal utilizando
una «sharded key»
Rendimiento…
Indexame.
¿Cómo establecer un índice?
•

MongoDB nos proporciona la función ensureIndex para
establecer un índice.

db.ciudades.ensureIndex( { “ciudad" : 1 } )

• Podemos crear índices en subdocumentos
db.people.ensureIndex({
“direccion.codigopostal": 1
} )
Realizando un Explain

• Se puede ver el plan de ejecución de una
consulta con explain
db.collection.find().explain()
Resultado de un Explain
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 14,
"nscannedObjects" : 14,
"nscanned" : 14,
"nscannedObjectsAllPlans" : 14,
"nscannedAllPlans" : 14,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {}
}
Agregar datos
en MongoDB.
¿Qué es el Aggregation Framework?

• Son un conjunto de operaciones que nos
permiten procesar conjuntos completos de
resultados.

• Evita que tengamos que desarrollar código de
aplicación para realizar ciertas tareas.
Pipeline del Aggregation Framework

• El Aggregation Framework se apoya en un
pipeline de operaciones que se van ejecutando
de manera consecutiva
• Las operaciones que podemos ejecutar en un
pipeline son:
• Filtros
• Transformaciones
• Agrupaciones
• Ordenaciones
Secuencia del Pipeline
SQL versus Aggregation Framework

SQL Terms, Functions, and Concepts

MongoDB Aggregation Operators

WHERE

$match

GROUP BY

$group

HAVING

$match

SELECT

$project

ORDER BY

$sort

LIMIT

$limit

SUM()

$sum

COUNT()

$sum

join

No direct corresponding
operator; however,
the $unwind operator allows for
somewhat similar functionality, but with
fields embedded within the document.
Java, Python,
Javascript,..
Lenguajes de Programación con MongoDB

• MongoDB ofrece drivers para la integración con
múltiples lenguajes:
• Java
• Python
• PHP
• C/C++
• Ruby
• Scala
• ….
Shell MongoDB

• El manejo básico que podemos hacer es
mediante el Shell MongoDB
• El Shell MongoDB es un shell Javascript que
nos permite ejecutar las operaciones básicas
• Para ejecutarlo
mongo nombreprograma.js
Programa con Shell
conn= new Mongo();
db = conn.getDB("demografia");
printjson(db.ciudades.findOne());

cursor = db.ciudades.find(
{$or:[{ciudad:/^M/},{ciudad:/^Z/}]
});
while (cursor.hasNext()){
printjson(cursor.next());
}
MongoDB y Java
import com.mongodb.*;
MongoClient mongoClient =
new MongoClient( "localhost" );

DBCollection coll =
db.getCollection("testCollection");
BasicDBObject doc = new BasicDBObject("name",
"MongoDB“)
. append("type", "database")
. append("count", 1)
. append("info", new BasicDBObject("x",
203).append("y", 102));
coll.insert(doc);
Cursores en Java

import com.mongodb.*;
MongoClient mongoClient =
new MongoClient( "localhost" );
DBCollection coll =
db.getCollection("testCollection");
BasicDBObject query = new BasicDBObject("i", 71);
cursor = coll.find(query);
try {

while(cursor.hasNext()) {
System.out.println(cursor.next()); }
} finally { cursor.close(); }
MongoDB, Python y Pymongo

import pymongo
client = MongoClient()
db = client.demografia
collection = db.ciudades
ciudad = {
‘ciudad’:’Avila’,
habitantes:58570
}
ciudades.insert(ciudad)
Más, más,
más,...
MongoDB y GridFS

• GridFS
• Manejo de documentos que excedan el
límite de 16GB establecido por BSON.
• GridFS permite partir el documento en
diferentes partes.
MongoDB y Map Reduce
MongoDB y Replicación

Proporciona la alta disponibilidad y redundancia de
datos.
MongoDB y Sharding

• Escalado Horizontal: Capacidad de distribuir
datos en diferentes máquinas
• Utiliza la sharding key para distribuir los datos.
Herramientas
Herramientas en MongoDB

• MongoBird
•
•

Administrador y Consola en tiempo real
http://mongobird.citsoft.net/

• MongoVision
•

Herramienta de Administración
http://code.google.com/p/mongo-vision/

• MongoHub
•
•

•

Herramienta nativa para MacOS
https://github.com/fotonauts/MongoHub-Mac

¿Cómo administras MongoDB?
http://codemotion.es/talk/18-october/122
MonjaDB

• Plugin para Elipse que permite administrar
MongoDB
• https://marketplace.eclipse.org/content/monjadb
Quiero
aprender más
MongoDB University

• https://education.mongodb.com
Enlaces MongoDB

• Documentación de MongoDB
•

http://docs.mongodb.org/manual/

• API MongoDB
•

http://api.mongodb.org

• MongoDB en Facebook
•

https://www.facebook.com/mongodb

• MongoDB en Twitter
•

http://twitter.com/#!/MongoDB

• Grupos en Google
•

https://groups.google.com/group/mongodb-user
Enlaces MongoDB en Español

• MongoDB Meetup
•

http://www.meetup.com/Madrid-MongoDB-UserGroup/

• MongoDB en Español Facebook
•

https://www.facebook.com/groups/mongodb.es/

• Mis artículos sobre MongoDB
•

http://lineadecodigo.com/categoria/mongodb
No os preocupéis
por los enlaces…

@victor_cuervo
NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDB

Más contenido relacionado

La actualidad más candente

Indexing with MongoDB
Indexing with MongoDBIndexing with MongoDB
Indexing with MongoDBMongoDB
 
An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDBCésar Trigo
 
Introduction to MongoDB.pptx
Introduction to MongoDB.pptxIntroduction to MongoDB.pptx
Introduction to MongoDB.pptxSurya937648
 
MongoDB Aggregation Framework
MongoDB Aggregation FrameworkMongoDB Aggregation Framework
MongoDB Aggregation FrameworkCaserta
 
Mongo DB schema design patterns
Mongo DB schema design patternsMongo DB schema design patterns
Mongo DB schema design patternsjoergreichert
 
Ejercicios resueltos de sql
Ejercicios resueltos de sqlEjercicios resueltos de sql
Ejercicios resueltos de sqlJulian Benavidez
 
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~Michio Koyama
 
Auditoria en oracle
Auditoria en oracleAuditoria en oracle
Auditoria en oraclevictdiazm
 
MongoDB Fundamentals
MongoDB FundamentalsMongoDB Fundamentals
MongoDB FundamentalsMongoDB
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion BusquedaAngie Suarez
 
PostgreSQL- An Introduction
PostgreSQL- An IntroductionPostgreSQL- An Introduction
PostgreSQL- An IntroductionSmita Prasad
 
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsMongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsSpringPeople
 

La actualidad más candente (20)

Indexing with MongoDB
Indexing with MongoDBIndexing with MongoDB
Indexing with MongoDB
 
An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDB
 
Introduction to MongoDB.pptx
Introduction to MongoDB.pptxIntroduction to MongoDB.pptx
Introduction to MongoDB.pptx
 
Presentacion BD NoSQL
Presentacion  BD NoSQLPresentacion  BD NoSQL
Presentacion BD NoSQL
 
MongoDB Aggregation Framework
MongoDB Aggregation FrameworkMongoDB Aggregation Framework
MongoDB Aggregation Framework
 
Mongo DB schema design patterns
Mongo DB schema design patternsMongo DB schema design patterns
Mongo DB schema design patterns
 
MongoDB 101
MongoDB 101MongoDB 101
MongoDB 101
 
Ejercicios resueltos de sql
Ejercicios resueltos de sqlEjercicios resueltos de sql
Ejercicios resueltos de sql
 
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~グループ情報の取得と表示~
 
Listas
ListasListas
Listas
 
Mongo DB
Mongo DB Mongo DB
Mongo DB
 
Auditoria en oracle
Auditoria en oracleAuditoria en oracle
Auditoria en oracle
 
The PostgreSQL Query Planner
The PostgreSQL Query PlannerThe PostgreSQL Query Planner
The PostgreSQL Query Planner
 
Mongo DB Presentation
Mongo DB PresentationMongo DB Presentation
Mongo DB Presentation
 
MongoDB Fundamentals
MongoDB FundamentalsMongoDB Fundamentals
MongoDB Fundamentals
 
MongoDB (Advanced)
MongoDB (Advanced)MongoDB (Advanced)
MongoDB (Advanced)
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion Busqueda
 
PostgreSQL- An Introduction
PostgreSQL- An IntroductionPostgreSQL- An Introduction
PostgreSQL- An Introduction
 
Normalizacion
NormalizacionNormalizacion
Normalizacion
 
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsMongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
 

Destacado

Introducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBIntroducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBScalia
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db.. ..
 
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015betabeers
 
Introducción a NoSQL y MongoDB Webinar
Introducción a NoSQL y MongoDB WebinarIntroducción a NoSQL y MongoDB Webinar
Introducción a NoSQL y MongoDB WebinarMongoDB
 
Mongo db
Mongo dbMongo db
Mongo dbUPCI
 
Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...
Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...
Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...MongoDB
 
Pentaho OSBI - Consorcio SIU
Pentaho OSBI - Consorcio SIUPentaho OSBI - Consorcio SIU
Pentaho OSBI - Consorcio SIUMarcos Pierri
 
Charla Pentaho - UTN
Charla Pentaho - UTNCharla Pentaho - UTN
Charla Pentaho - UTNDatalytics
 
Conceptos básicos. Seminario web 1: Introducción a NoSQL
Conceptos básicos. Seminario web 1: Introducción a NoSQLConceptos básicos. Seminario web 1: Introducción a NoSQL
Conceptos básicos. Seminario web 1: Introducción a NoSQLMongoDB
 
The Aggregation Framework
The Aggregation FrameworkThe Aggregation Framework
The Aggregation FrameworkMongoDB
 
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB
 

Destacado (20)

MongoDB Avanzado
MongoDB AvanzadoMongoDB Avanzado
MongoDB Avanzado
 
Introducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBIntroducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDB
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db
 
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScriptFull-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
 
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 
Introducción a NoSQL y MongoDB Webinar
Introducción a NoSQL y MongoDB WebinarIntroducción a NoSQL y MongoDB Webinar
Introducción a NoSQL y MongoDB Webinar
 
Mongo db
Mongo dbMongo db
Mongo db
 
Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...
Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...
Data Integration and Advanced Analytics for MongoDB: Blend, Enrich and Analyz...
 
NoSql y MongoDB
NoSql y MongoDBNoSql y MongoDB
NoSql y MongoDB
 
Pentaho OSBI - Consorcio SIU
Pentaho OSBI - Consorcio SIUPentaho OSBI - Consorcio SIU
Pentaho OSBI - Consorcio SIU
 
Charla Pentaho - UTN
Charla Pentaho - UTNCharla Pentaho - UTN
Charla Pentaho - UTN
 
Conceptos básicos. Seminario web 1: Introducción a NoSQL
Conceptos básicos. Seminario web 1: Introducción a NoSQLConceptos básicos. Seminario web 1: Introducción a NoSQL
Conceptos básicos. Seminario web 1: Introducción a NoSQL
 
NoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradasNoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradas
 
MongoDB: la BBDD NoSQL más popular del mercado
MongoDB: la BBDD NoSQL más popular del mercadoMongoDB: la BBDD NoSQL más popular del mercado
MongoDB: la BBDD NoSQL más popular del mercado
 
Practica active directory
Practica active directoryPractica active directory
Practica active directory
 
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4jBases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
 
Graficos de control
Graficos de controlGraficos de control
Graficos de control
 
The Aggregation Framework
The Aggregation FrameworkThe Aggregation Framework
The Aggregation Framework
 
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
 
Big data ppt
Big  data pptBig  data ppt
Big data ppt
 

Similar a NOSQL: Primeros Pasos en MongoDB

Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDBAlejandro Mancilla
 
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.Victor Cuervo
 
Mongodb: Un pequeño sorbo
Mongodb: Un pequeño sorboMongodb: Un pequeño sorbo
Mongodb: Un pequeño sorboAbirtone S.L.
 
Mallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBMallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBEmilio Torrens
 
mongodb.base de datis noo relacionles fr
mongodb.base de datis noo relacionles frmongodb.base de datis noo relacionles fr
mongodb.base de datis noo relacionles frssuser948499
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administraciónJuan Ladetto
 
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 AndroidRicardo Monagas Medina
 
Greach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DBGreach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DBgreach_es
 
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...Daniel Gomez Jaramillo
 
Seminario mongo db springdata 10-11-2011
Seminario mongo db springdata 10-11-2011Seminario mongo db springdata 10-11-2011
Seminario mongo db springdata 10-11-2011Paradigma Digital
 

Similar a NOSQL: Primeros Pasos en MongoDB (20)

Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos 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
 
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
Tarde Técnica Abirtone. MongoDB. Un pequeño sorbo.
 
Mongodb: Un pequeño sorbo
Mongodb: Un pequeño sorboMongodb: Un pequeño sorbo
Mongodb: Un pequeño sorbo
 
Mallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBMallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDB
 
Mongo db course introduction
Mongo db course   introductionMongo db course   introduction
Mongo db course introduction
 
Pgpymongo y pgpycouch
Pgpymongo y pgpycouchPgpymongo y pgpycouch
Pgpymongo y pgpycouch
 
NoSQL, Mongo DB & Google Maps
NoSQL, Mongo DB & Google MapsNoSQL, Mongo DB & Google Maps
NoSQL, Mongo DB & Google Maps
 
MONGODB - NOSQL
MONGODB - NOSQLMONGODB - NOSQL
MONGODB - NOSQL
 
FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017
 
mongodb.base de datis noo relacionles fr
mongodb.base de datis noo relacionles frmongodb.base de datis noo relacionles fr
mongodb.base de datis noo relacionles fr
 
Wilver mongo db
Wilver mongo dbWilver mongo db
Wilver mongo db
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
 
Introduccón a Mongodb
Introduccón a MongodbIntroduccón a Mongodb
Introduccón a 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
 
Greach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DBGreach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DB
 
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
 
Mongo db
Mongo dbMongo db
Mongo db
 
¿que es mongodb?
¿que es mongodb?¿que es mongodb?
¿que es mongodb?
 
Seminario mongo db springdata 10-11-2011
Seminario mongo db springdata 10-11-2011Seminario mongo db springdata 10-11-2011
Seminario mongo db springdata 10-11-2011
 

Último

El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 

Último (20)

El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 

NOSQL: Primeros Pasos en MongoDB

  • 2. Índice de Contenidos • • • • • • • • • • • Sobre el Ponente ¿Qué es eso del NOSQL? Hablemos de MongoDB Pero haz ya una SELECT ¿Tercera forma normal? Rendimiento… Indexame Agregar datos en MongoDB Java, Python, Javascript,… Más, más, más… Herramientas Quiero aprender más
  • 3. Sobre el ponente: Víctor Cuervo Programador, Arquitecto IT, álter ego de Línea de Código, amante de las tecnologías, generador de conocimiento y facilitador del aprendizaje. http://lineadecodigo.com http://www.victorcuervo.com Responsable del Área QA Arquitecto Técnico ISBAN. Grupo Santander
  • 5. ¿Qué es NOSQL? NOSQL es una evolución del sistema clásico de bases de datos relacionales cuya principal característica es que no se requiere una definición inicial de las estructuras sobre las que se almacenarán los datos.
  • 6. ¿Por qué se llega a NOSQL? • Evolución del modelo entidad-relación para el soporte de estructuras variables en el tiempo. • Alternativas • • • Meta-modelos en ER Bases de datos de objetos Bases de datos XML / XQuery
  • 7. Tipos de Bases de Datos NOSQL • Columna • Hadoop/HBase, Cassandra • Documento • MongoDB, CouchDB • Clave/Valor • DynamoDB, Redis • Grafos • Neo4j, Infinite Graph http://nosql-database.org
  • 8. Quiero usar NOSQL… dame ejemplos • Ejemplo Básico… • • Información de redes sociales Logs • … y en la industria • Polimorfismo de datos
  • 9. ¿Polimorfismo y NOSQL? Domicilio Persona Nombre Apellido1 Apellido2 Calle Comunidad País Domicilio Persona Nombre Middle Name Apellido Calle Condado País Producto 1 Producto 2 Producto3 Valor Inicial Valor Final Valor Estado Demandante Regla Domicilio Calle Región País
  • 11. ¿Qué es MongoDB? • MongoDB es una base de datos NOSQL orientada a documentos. • Desarrollada por 10gen (ahora llamados MongoDB). • Características • Flexibilidad de los Modelos • Alto Rendimiento, Alta Disponibilidad • Escalabilidad
  • 12. BSON su modelo de documentos • El modelo de documentos se basa en el estándar JSON/BSON. • BSON es una serialización binaria del JSON • Características de BSON • Permite tener documentos dentro de documentos • Podemos definir arrays dentro de documentos
  • 13. Documento BSON { _id: "joe", name: "Joe Bookreader", addresses: [ { street: "123 Fake Street", city: "Faketon", state: "MA", zip: 12345 }, { street: "1 Some Other Street", city: "Boston", state: "MA", zip: 12345 } ]}
  • 14. Instalar MongoDB • Distribuciones para MacOS, Linux (Ubuntu, Debian,…) y Windows. Ejecuta en plataformas 32-bits y 64-bits • Se puede descargar desde http://www.mongodb.org/downloads • Documentación de instalación en http://docs.mongodb.org/manual/installation/
  • 15. Ejecutar MongoDB mongod Nos permite arrancar el servidor de MongoDB Escucha en el puerto 27017 mongo Ejecuta la consola de MongoDB En http://www.mongodb.org/downloads se puede encontrar una consola de pruebas.
  • 16. Conceptos Básicos SQL Terms/Concepts MongoDB Terms/Concepts database database table collection row document or BSON document column field index index table joins embedded documents and linking primary key Specify any unique column or column combination as primary key. primary key In MongoDB, the primary key is automatically set to the _id field. aggregation (e.g. group by) aggregation pipeline See the SQL to Aggregation Mapping Chart.
  • 17. Pero haz ya una SELECT
  • 18. Modelo de pruebas { "_id" : ObjectId("525ab02733b01a66a9dcbc60"), "ciudad" : "Malaga", "habitantes" : 567433 } { "_id" : ObjectId("525ab02733b01a66a9dcbc61"), "ciudad" : "Murcia", "habitantes" : 441354 } { "_id" : ObjectId("525ab02733b01a66a9dcbc62"), "ciudad" : "Palma de Mallorca", "habitantes" : 407648 }
  • 19. Consultas, función find Las consultas se ejecutan mediante la función find: db.ciudades.find({ciudad:'Madrid'});
  • 20. Consultas con operadores Podemos utilizar operadores dentro de las consultas: db.ciudades.find({ habitantes:{$lt:400000} }); db.ciudades.find({ habitantes:{$gt:1000000} });
  • 21. Combinar operadores El documento de consulta puede combinar varios operadores: db.ciudades.find({ ciudad:/^M/, habitantes:{$lt:1000000} }); db.ciudades.find({ $or:[{ciudad:/^M/},{ciudad:/^Z/}] });
  • 22. Sort para ordenar resultados Ascendente (1) o descendente (-1) db.ciudades.find().sort({ ciudad:1 }); db.ciudades.find().sort({ ciudad:-1 });
  • 23. Limit para limitar las consultas Recibe el número de elementos a limitar en la consulta como parámetro. db.ciudades.find().limit(4);
  • 24. IN para consulta de elementos Los elementos de los valores están en un array: db.ciudades.find({ciudad: {$in:['Avila','Zamora','Madrid']} });
  • 25. Busquedas por Like Uso de expresiones regulares para buscar por like: db.ciudades.find({ciudad:/^M/}); db.ciudades.find({ciudad:/r/}); db.ciudades.find({ciudad:/d$/});
  • 26. Projection o selección de datos Projection nos permite escoger que campos devolver del documento db.ciudades.find({ habitantes:{$gt:1000000}}, {ciudad:1}); db.ciudades.find({ habitantes:{$gt:1000000}}, {ciudad:1,_id:0});
  • 27. Saltarnos datos con SKIP Recibe como parámetro los elementos a saltar: db.ciudades.find().skip(2);
  • 28. Insertar datos Utilizamos la función Insert db.ciudades.insert( {'ciudad':'Avila', 'habitantes':58915 });
  • 29. Actualizar datos Utilizamos la función Update: db.ciudades.update( {ciudad:'Avila'}, {$set:{habitantes:58915} });
  • 30. Actualizaciones Múltiples Por defecto MongoDB solo actualiza un documento: db.ciudades.update({ habitantes:{$gt:600000}}, {$set:{'grande':true}}, {multi:true} );
  • 31. Upsert: Actualiza si no Inserta La función upsert actualiza un documento, si no está lo inserta. db.ciudades.update({ ciudad:'Zamora'}, {$set:{habitantes:65362}}, {upsert:true} );
  • 32. Borrado de datos Utiliza la función delete. Por defecto borra todos los documentos, al menos que especifiquemos otra cosa. db.ciudades.delete({ ciudad:'Zamora'}, ); db.ciudades.delete({ habitantes:{$lt:400000} },1);
  • 33. Dot Notation MongoDB utiliza la anotación del punto para acceder a campos de subdocumentos y a elementos de arrays: array.indice subdocumento.campo
  • 34. $push, $pull, $addtoset,… Operadores que nos sirven para el manejo de arrays: db.ciudades.update( { ciudad: “Avila" }, { $push: { monumentos: { $each: [ ‘Murallas’,’La Santa’,’San Vicente’] } }})
  • 35. Más funciones Hay muchas más funciones básicas: • • • • • Agrupación Distintc Contadores FindAndModify …
  • 37. Modelos de Datos • Embebidos • Aprovecha las capacidades de los subdocumentos para contener la relación dentro del propio documento. • Normalizados • Referencia los documentos mediante IDs.
  • 40. Cardinalidad en MongoDB • Cardinalidades en MongoDB: • Modelo 1:1 • Modelo 1:N • Modelo 1:N Referenciado • Modelos en Árbol • Más información de modelos en http://docs.mongodb.org/manual/datamodeling/
  • 41. Cardinalidad 1:1 { _id: "joe", name: "Joe Bookreader", address: { street: "123 Fake Street", city: "Faketon", state: "MA", zip: 12345 } }
  • 42. Cardinalidad 1:N { _id: "joe", name: "Joe Bookreader", addresses: [ { street: "123 Fake Street", city: "Faketon", state: "MA", zip: 12345 }, { street: "1 Some Other Street", city: "Boston", state: "MA", zip: 12345 } ] }
  • 43. Cardinalidad 1:N Referenciada { _id: "oreilly", name: "O'Reilly Media", founded: 1980, location: "CA“ } { _id: 123456789, title: "MongoDB: The Definitive Guide“, author: [ "Kristina Chodorow", "Mike Dirolf" ], published_date: ISODate("2010-09-24"), pages: 216, language: "English", publisher_id: "oreilly“ }
  • 44. Quiero hacer un join • MongoDB no soporta JOINS • La manipulación de información referenciada hay que hacerla manual. • Algunos drivers han implementado un objeto DBRefs para poder ayudar en la consulta de información referenciada.
  • 45. A tener en cuenta cuando modelas • El crecimiento de los documentos • Si añadimos nuevos elementos/campos al documento y nos pasamos del tamaño máximo MongoDB tendrá que alojar el documento en disco. • Atomicidad de las operaciones • En MongoDB la atomicidad es a nivel de documento. • Manejo de Índices • Para mejorar el rendimiento. Por defecto hay un índice sobre el _id. • Distribución de los documentos • El escalado en MongoDB es horizontal utilizando una «sharded key»
  • 47. ¿Cómo establecer un índice? • MongoDB nos proporciona la función ensureIndex para establecer un índice. db.ciudades.ensureIndex( { “ciudad" : 1 } ) • Podemos crear índices en subdocumentos db.people.ensureIndex({ “direccion.codigopostal": 1 } )
  • 48. Realizando un Explain • Se puede ver el plan de ejecución de una consulta con explain db.collection.find().explain()
  • 49. Resultado de un Explain { "cursor" : "BasicCursor", "isMultiKey" : false, "n" : 14, "nscannedObjects" : 14, "nscanned" : 14, "nscannedObjectsAllPlans" : 14, "nscannedAllPlans" : 14, "scanAndOrder" : false, "indexOnly" : false, "nYields" : 0, "nChunkSkips" : 0, "millis" : 0, "indexBounds" : {} }
  • 51. ¿Qué es el Aggregation Framework? • Son un conjunto de operaciones que nos permiten procesar conjuntos completos de resultados. • Evita que tengamos que desarrollar código de aplicación para realizar ciertas tareas.
  • 52. Pipeline del Aggregation Framework • El Aggregation Framework se apoya en un pipeline de operaciones que se van ejecutando de manera consecutiva • Las operaciones que podemos ejecutar en un pipeline son: • Filtros • Transformaciones • Agrupaciones • Ordenaciones
  • 54. SQL versus Aggregation Framework SQL Terms, Functions, and Concepts MongoDB Aggregation Operators WHERE $match GROUP BY $group HAVING $match SELECT $project ORDER BY $sort LIMIT $limit SUM() $sum COUNT() $sum join No direct corresponding operator; however, the $unwind operator allows for somewhat similar functionality, but with fields embedded within the document.
  • 56. Lenguajes de Programación con MongoDB • MongoDB ofrece drivers para la integración con múltiples lenguajes: • Java • Python • PHP • C/C++ • Ruby • Scala • ….
  • 57. Shell MongoDB • El manejo básico que podemos hacer es mediante el Shell MongoDB • El Shell MongoDB es un shell Javascript que nos permite ejecutar las operaciones básicas • Para ejecutarlo mongo nombreprograma.js
  • 58. Programa con Shell conn= new Mongo(); db = conn.getDB("demografia"); printjson(db.ciudades.findOne()); cursor = db.ciudades.find( {$or:[{ciudad:/^M/},{ciudad:/^Z/}] }); while (cursor.hasNext()){ printjson(cursor.next()); }
  • 59. MongoDB y Java import com.mongodb.*; MongoClient mongoClient = new MongoClient( "localhost" ); DBCollection coll = db.getCollection("testCollection"); BasicDBObject doc = new BasicDBObject("name", "MongoDB“) . append("type", "database") . append("count", 1) . append("info", new BasicDBObject("x", 203).append("y", 102)); coll.insert(doc);
  • 60. Cursores en Java import com.mongodb.*; MongoClient mongoClient = new MongoClient( "localhost" ); DBCollection coll = db.getCollection("testCollection"); BasicDBObject query = new BasicDBObject("i", 71); cursor = coll.find(query); try { while(cursor.hasNext()) { System.out.println(cursor.next()); } } finally { cursor.close(); }
  • 61. MongoDB, Python y Pymongo import pymongo client = MongoClient() db = client.demografia collection = db.ciudades ciudad = { ‘ciudad’:’Avila’, habitantes:58570 } ciudades.insert(ciudad)
  • 63. MongoDB y GridFS • GridFS • Manejo de documentos que excedan el límite de 16GB establecido por BSON. • GridFS permite partir el documento en diferentes partes.
  • 64. MongoDB y Map Reduce
  • 65. MongoDB y Replicación Proporciona la alta disponibilidad y redundancia de datos.
  • 66. MongoDB y Sharding • Escalado Horizontal: Capacidad de distribuir datos en diferentes máquinas • Utiliza la sharding key para distribuir los datos.
  • 68. Herramientas en MongoDB • MongoBird • • Administrador y Consola en tiempo real http://mongobird.citsoft.net/ • MongoVision • Herramienta de Administración http://code.google.com/p/mongo-vision/ • MongoHub • • • Herramienta nativa para MacOS https://github.com/fotonauts/MongoHub-Mac ¿Cómo administras MongoDB? http://codemotion.es/talk/18-october/122
  • 69. MonjaDB • Plugin para Elipse que permite administrar MongoDB • https://marketplace.eclipse.org/content/monjadb
  • 72. Enlaces MongoDB • Documentación de MongoDB • http://docs.mongodb.org/manual/ • API MongoDB • http://api.mongodb.org • MongoDB en Facebook • https://www.facebook.com/mongodb • MongoDB en Twitter • http://twitter.com/#!/MongoDB • Grupos en Google • https://groups.google.com/group/mongodb-user
  • 73. Enlaces MongoDB en Español • MongoDB Meetup • http://www.meetup.com/Madrid-MongoDB-UserGroup/ • MongoDB en Español Facebook • https://www.facebook.com/groups/mongodb.es/ • Mis artículos sobre MongoDB • http://lineadecodigo.com/categoria/mongodb
  • 74. No os preocupéis por los enlaces… @victor_cuervo