• Like

Mallorca MUG: Introducción a MongoDB

  • 2,243 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,243
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
53
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Mallorca #MongoDB User Group http://www.meetup.com/Mallorca-MongoDB-User-Group/ Introducción a MongoDB @emiliotorrens | www.emiliotorrens.com
  • 2. Agenda Presentaciones. Que es MongoDB ? Funciona? Que ventajas nos ofrece ? Instalación: Ubuntu Windows En la nube Ejemplos: C# Python
  • 3. Que es MongoDB? MongoDB es un sistema de base de datos multiplataforma orientado a documentos, de alto rendimiento y deesquema libre, está licenciado como GNU AGPL 3.0, de modo que se puede descargar gratuitamente desde su sitioweb:http://www.mongodb.org/downloads Las características mas destacadas de MongoDB son su velocidad y su sencillo, pero potente, sistema de consultade datos, en resumen es un sistema de base de datos que tiene el equilibrio entre rendimiento y funcionalidad en elque podemos realizar casi todas las consultas que utilizaríamos en un sistema relacional pero sin sacrificar elrendimiento.
  • 4. Funciona?http://www.mongodb.org/display/DOCS/Production+Deployments
  • 5. 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
  • 6. Es gratuito y es multiplataformaMongoDB esta disponible para descarga gratuita desde su sitio web:http://www.mongodb.org/downloadEsta disponible para todas las plataformas:
  • 7. 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
  • 8. Es rápido y es funcionalNormalmente 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.
  • 9. 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
  • 10. Fácil de probar: Una instancia se levanta enminutosPodemos tener una instancia de mongo levantada en cuestión de minutos, solo hemos de bajar losejecutables, descomprimirlos, crear un directorio de datos y arrancar la instancia con:mongod --dbpath c:data
  • 11. Fácil de probar: Drivers para multitud delenguajesMongoDB tiene drivers mantenidos para:• C• C++• Erlang• Haskell• Java• Javascript• .NET (C# F#, PowerShell, etc)• Node.js• Perl• PHP• Python• Ruby• ScalaAdemas hay una larga lista de Drivers y Herramientas mantenidos por la Comunidad:http://www.mongodb.org/display/DOCS/Drivers
  • 12. 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
  • 13. Fácil de Entender: Conceptos Conocidos Bases de Datos Bases de Datos Tablas Colecciones Registros Documentos
  • 14. Fácil de Entender: Documento =Registro/RegistrosQue es un documento?> db.persons.findOne(){ "_id" : ObjectId("5062b9a0fe2d230a58c5c104"), "Name" : "Antonio Gomez", "Age" : 30, "Chidls" : [ { "Name" : "Pedro Gomez", "Age" : 4 }, { "Name" : "Antonio Gomez", "Age" : 11 } ]}
  • 15. 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})
  • 16. 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})
  • 17. 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}})
  • 18. 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
  • 19. Fácil de Entender: Funcionalidades similaresÍndices:Ascendentedb.persons.ensureIndex({Age: 1})Descendentedb.persons.ensureIndex({Age: -1})Unicodb.persons.ensureIndex({Name: 1}, {unique: true})
  • 20. Fácil de Entender: Tipos de Datos similaresArray, Binary, Boolean, DateTime,DB Reference, Embedded Object,Integer, Null, ObjectId, RegExp,String, Symbol, Timestamp, Long,Decimal …
  • 21. 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});
  • 22. 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.
  • 23. Fácil de Entender: Funcionalidades SimilaresAgregación, ejecución de código en el servidor:• Aggregation Framework• Count• Distinct• Group• MapReducehttp://www.mongodb.org/display/DOCS/Aggregation
  • 24. 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
  • 25. 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
  • 26. 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/
  • 27. 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/
  • 28. Fácil de Instalar: Instalación UbuntuLa 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 7F0CEB102. 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 10gen3. Instalamos con: 1. sudo apt-get update 2. sudo apt-get install mongodb-10gen4. Arrancamos el servidor con: sudo service mongodb startListo, ya tenemos el servidor de MongoDB instalado y funcionando.
  • 29. Fácil de Instalar: Instalación WindowsLa 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 serviciode 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:data2. Instalarlo como servicio: 1. Creamos una carpeta donde se alojaran los datos (ejem c:data) 2. Creamos un fichero de log (ejem: cdataloglog.txt) 3. Ejecutamos el mongod pasandole la carpeta, el log y la opcion de servicio: mongod --dbpath c:data --logpath cdataloglog.txt --service 4. Buscamos el servicio Mongo DB en los servicios de windows y lo iniciamosListo, ya tenemos el servidor de MongoDB instalado y funcionando.
  • 30. Sin Instalación: MongoDB en la nubeHay varios proveedores que te ofrecen instancias gratuitas de MongoDB en la nube de manera que puedas hacerpruebas 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.comEstas instancias gratuitas son mas que suficientes para las pruebas de desarrollo e incluso para pequeñasaplicaciones.
  • 31. Ejemplos: C#https://github.com/emiliotorrens/mongodb-drivers-samples/tree/master/csharp
  • 32. Ejemplos: Pythonhttps://github.com/emiliotorrens/mongodb-drivers-samples/tree/master/python
  • 33. Referencias • MongoDB: The Definitive Guide • 10gen presentations • Why MongoDB is Awesome
  • 34. Próximos Meetups • Instalar y consumir un Replica Set • Objects Mappings para MongoDB • MongoDB y Ruby on Rails
  • 35. Mallorca #MongoDB User Group http://www.meetup.com/Mallorca-MongoDB-User-Group/ Gracias por venir ;) @emiliotorrens | www.emiliotorrens.com