Mallorca MUG: Introducción a MongoDB

35
Mallorca #MongoDB User Group http ://www.meetup.com/Mallorca-MongoDB-User-Group/ Introducción a MongoDB @ emiliotorrens | www.emiliotor

description

Presentacion del Meetup "Introducion a MongoDB" en Mallorca MongoDB User Group

Transcript of Mallorca MUG: Introducción a MongoDB

Page 1: Mallorca MUG: Introducción a MongoDB

Mallorca #MongoDB User Group http://www.meetup.com/Mallorca-MongoDB-User-Group/

Introducción a MongoDB

@emiliotorrens | www.emiliotorrens.com

Page 2: Mallorca MUG: Introducción a MongoDB

AgendaPresentaciones.Que es MongoDB ? Funciona?Que ventajas nos ofrece ?

Instalación:UbuntuWindowsEn la nube

Ejemplos:C#Python

Page 3: Mallorca MUG: Introducción a MongoDB

Que es MongoDB?

MongoDB es un sistema de base de datos multiplataforma orientado a documentos, de alto rendimiento y de esquema libre, está licenciado como GNU AGPL 3.0, de modo que se puede descargar gratuitamente desde su sitio web:

http://www.mongodb.org/downloads

Las características mas destacadas de MongoDB son su velocidad y su sencillo, pero potente, sistema de consulta de datos, en resumen es un sistema de base de datos que tiene el equilibrio entre rendimiento y funcionalidad en el que podemos realizar casi todas las consultas que utilizaríamos en un sistema relacional pero sin sacrificar el rendimiento.

Page 4: Mallorca MUG: Introducción a MongoDB

Funciona?

http://www.mongodb.org/display/DOCS/Production+Deployments

Page 5: Mallorca MUG: Introducción a MongoDB

Que ventajas nos ofrece?

• Es gratuito y es multiplataforma• Es rápida y es funcional• Fácil de probar• Fácil de entender• Escalabilidad, Replicación y Alta Disponibilidad• Formación• Soporte Comercial

Page 6: Mallorca MUG: Introducción a MongoDB

Es gratuito y es multiplataforma

MongoDB esta disponible para descarga gratuita desde su sitio web: http://www.mongodb.org/download

Esta disponible para todas las plataformas:

Page 7: Mallorca MUG: Introducción a MongoDB

Que ventajas nos ofrece?

• Es gratis y es multiplataforma

• Es rápido y es funcional• Fácil de probar• Fácil de entender• Escalabilidad, Replicación y Alta Disponibilidad• Formación• Soporte Comercial

Page 8: Mallorca MUG: Introducción a MongoDB

Es rápido y es funcional

Normalmente tenemos que sacrificar rendimiento por funcionalidad o viceversa, incluso usar dos sistemas (RDBMS + Cache) redundando los datos, MongoDB alcanza el equilibrio entre rendimiento y funcionalidad.

Page 9: Mallorca MUG: Introducción a MongoDB

Que ventajas nos ofrece?

• Es gratis y es multiplataforma• Es rápida y es funcional

• Fácil de probar• Fácil de entender• Escalabilidad, Replicación y Alta Disponibilidad• Formación• Soporte Comercial

Page 10: Mallorca MUG: Introducción a MongoDB

Fácil de probar: Una instancia se levanta en minutosPodemos tener una instancia de mongo levantada en cuestión de minutos, solo hemos de bajar los ejecutables, descomprimirlos, crear un directorio de datos y arrancar la instancia con:mongod --dbpath c:\data\

Page 12: Mallorca MUG: Introducción a MongoDB

Que ventajas nos ofrece?

• Es gratis y es multiplataforma• Es rápida y es funcional• Fácil de probar

• Fácil de entender• Escalabilidad, Replicación y Alta Disponibilidad• Formación• Soporte Comercial

Page 13: Mallorca MUG: Introducción a MongoDB

Fácil de Entender: Conceptos Conocidos

Bases de Datos Bases de Datos

Tablas Colecciones

Registros Documentos

Page 14: Mallorca MUG: Introducción a MongoDB

Fácil de Entender: Documento = Registro/Registros

> db.persons.findOne(){ "_id" : ObjectId("5062b9a0fe2d230a58c5c104"), "Name" : "Antonio Gomez", "Age" : 30, "Chidls" : [ { "Name" : "Pedro Gomez", "Age" : 4 }, { "Name" : "Antonio Gomez", "Age" : 11 } ]}

Que es un documento?

Page 15: Mallorca MUG: Introducción a MongoDB

Fácil de Entender: Funcionalidades similaresConsultas dinámicas (1/3):

SELECT * FROM PERSONSdb.persons.find()

SELECT * FROM PERSONS WHERE NAME = “Antonio Gomez”db.persons.find({Name:"Antonio Gomez"})

SELECT AGE FROM PERSONS WHERE NAME = “Antonio Gomez” AND AGE = 30db.persons.find({Name:"Antonio Gomez“, Age:30}, {Age:true})

Page 16: Mallorca MUG: Introducción a MongoDB

Fácil de Entender: Funcionalidades similaresConsultas dinámicas (2/3):

SELECT * FROM PERSONS WHERE NAME LIKE ‘%G%’db.persons.find({Name:“/G/"})

SELECT * FROM PERSONS WHERE NAME LIKE ‘G%’db.persons.find({Name:“^G/"})

SELECT * FROM PERSONS ORDER BY AGEdb.persons.find().sort({Age:1})

Page 17: Mallorca MUG: Introducción a MongoDB

Fácil de Entender: Funcionalidades similaresConsultas dinámicas (3/3):

SELECT DISTINCT NAME FROM PERSONSdb.persons.distinct("Name")

SELECT * FROM PERSONS LIMIT 10 SKIP 10db.persons.find().limit(10).skip(10)

SELECT * FROM PERSONS WHERE AGE > 25 AND <= 45db.persons.find({'Age': {$gt:25, $lte:45}})

Page 18: Mallorca MUG: Introducción a MongoDB

Fácil de Entender: Funcionalidades similaresConsultas dinámicas, operadores:

$gt $gte $lt $lte $ne $in $nin $mod $all $size $exists $type $elemMatch $not $where$nor $or $and …

http://www.mongodb.org/display/DOCS/Queryinghttp://www.mongodb.org/display/DOCS/Advanced+Queries

Page 19: Mallorca MUG: Introducción a MongoDB

Fácil de Entender: Funcionalidades similaresÍndices:

Ascendentedb.persons.ensureIndex({Age: 1})

Descendentedb.persons.ensureIndex({Age: -1})

Unicodb.persons.ensureIndex({Name: 1}, {unique: true})

Page 20: Mallorca MUG: Introducción a MongoDB

Fácil de Entender: Tipos de Datos similaresArray, Binary, Boolean, DateTime, DB Reference, Embedded Object, Integer, Null, ObjectId, RegExp, String, Symbol, Timestamp, Long, Decimal …

Page 21: Mallorca MUG: Introducción a MongoDB

Fácil de Entender: Funcionalidades similaresRelaciones, las de toda la vida:

db.persons.insert({Name:‘Pepito Perez‘, Age:35});var person = db.persons.findOne({Name:‘Pepito Perez '});

db.childs.insert({ Name : ‘Pepito Perez Junior' , Age : 7, person_id : person._id});

Page 22: Mallorca MUG: Introducción a MongoDB

Fácil de Entender: Funcionalidades similaresRelaciones, documentos embebidos:

db.persons.insert({

Name:‘Pepito Perez‘,Age: 35,Childs: [{Name:’Pepito Perez Junior’,Age:7}]

});

Usa los documentos embebidos cuando los datos siempre se muestren juntos.No se puede filtrar parte de una colección de documentos embebidos.

Page 23: Mallorca MUG: Introducción a MongoDB

Fácil de Entender: Funcionalidades SimilaresAgregación, ejecución de código en el servidor:

• Aggregation Framework• Count• Distinct• Group• MapReduce

http://www.mongodb.org/display/DOCS/Aggregation

Page 24: Mallorca MUG: Introducción a MongoDB

Que ventajas nos ofrece?

• Es gratis y es multiplataforma• Es rápida y es funcional• Fácil de probar• Fácil de entender

• Escalabilidad, Replicación y Alta Disponibilidad• Formación• Soporte Comercial

Page 25: Mallorca MUG: Introducción a MongoDB

Escalabilidad, Replicación y Alta Disponibilidad• Replica Sets• http://www.mongodb.org/display/DOCS/Replica+Sets

• Maestro / Esclavo (en desuso)• http://www.mongodb.org/display/DOCS/Master+Slave

• Auto Sharding• http://www.mongodb.org/display/DOCS/Sharding

Page 26: Mallorca MUG: Introducción a MongoDB

Que ventajas nos ofrece?

• Es gratis y es multiplataforma• Es rápida y es funcional• Fácil de probar• Fácil de entender• Escalabilidad, Replicación y Alta Disponibilidad

• Formación• http://education.10gen.com/• http://groups.google.com/group/mongodb-user• irc://irc.freenode.net/#mongodb

• Soporte Comercial• http://www.10gen.com/

Page 27: Mallorca MUG: Introducción a MongoDB

Que ventajas nos ofrece?

• Es gratis y es multiplataforma• Es rápida y es funcional• Fácil de probar• Fácil de entender• Escalabilidad, Replicación y Alta Disponibilidad• Formación

• Soporte Comercial• http://www.10gen.com/

Page 28: Mallorca MUG: Introducción a MongoDB

Fácil de Instalar: Instalación Ubuntu

La instalación es realmente sencilla, simplemente hay que añadir el repositorio de 10gen e instalarlo con apt-get.

Para añadir el repositorio e instalar MongoDB:

1. Importamos la key GPC publica de 10gen con: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

2. Añadimos esta linea a nuestra lista de repositories, que esta en /etc/apt/sources.list: deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen

3. Instalamos con: 1. sudo apt-get update2. sudo apt-get install mongodb-10gen

4. Arrancamos el servidor con: sudo service mongodb start

Listo, ya tenemos el servidor de MongoDB instalado y funcionando.

Page 29: Mallorca MUG: Introducción a MongoDB

Fácil de Instalar: Instalación Windows

La instalación sobre Windows es tan simple como bajar un Zip y descomprimirlo en un directorio.

Una vez tenemos los binarios de MongoDB descomprimidos en un directorio podemos instalarlo como un servicio de Windows o correrlo en la consola:

1. Correrlo en la consola:1. Creamos una carpeta donde se alojaran los datos (ejem c:\data\)2. Ejecutamos el mongod pasandole la carpeta:

mongod --dbpath c:\data\2. Instalarlo como servicio:

1. Creamos una carpeta donde se alojaran los datos (ejem c:\data\)2. Creamos un fichero de log (ejem: c\data\log\log.txt)3. Ejecutamos el mongod pasandole la carpeta, el log y la opcion de servicio:

mongod --dbpath c:\data\ --logpath c\data\log\log.txt --service 4. Buscamos el servicio Mongo DB en los servicios de windows y lo iniciamos

Listo, ya tenemos el servidor de MongoDB instalado y funcionando.

Page 30: Mallorca MUG: Introducción a MongoDB

Sin Instalación: MongoDB en la nube

Hay varios proveedores que te ofrecen instancias gratuitas de MongoDB en la nube de manera que puedas hacer pruebas sin necesidad de tener instalada ninguna instancia de MongoDB.

• Mongolab te ofrece una instancia gratuita de hasta 500 megas: • https://mongolab.com/home

• Mongohq te ofrece una instancia gratuita de hasta 512 megas: • https://www.mongohq.com

Estas instancias gratuitas son mas que suficientes para las pruebas de desarrollo e incluso para pequeñas aplicaciones.

Page 31: Mallorca MUG: Introducción a MongoDB

Ejemplos: C#

https://github.com/emiliotorrens/mongodb-drivers-samples/tree/master/csharp

Page 34: Mallorca MUG: Introducción a MongoDB

Próximos Meetups

• Instalar y consumir un Replica Set• Objects Mappings para MongoDB• MongoDB y Ruby on Rails

Page 35: Mallorca MUG: Introducción a MongoDB

Mallorca #MongoDB User Group http://www.meetup.com/Mallorca-MongoDB-User-Group/

Gracias por venir ;)

@emiliotorrens | www.emiliotorrens.com