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 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.
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 multiplataforma
MongoDB esta disponible para descarga gratuita desde su sitio web:
http://www.mongodb.org/download
Esta 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 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.
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 en minutos
Podemos 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
11. Fácil de probar: Drivers para multitud de lenguajes
MongoDB tiene drivers mantenidos para:
• C
• C++
• Erlang
• Haskell
• Java
• Javascript
• .NET (C# F#, PowerShell, etc)
• Node.js
• Perl
• PHP
• Python
• Ruby
• Scala
Ademas 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
15. Fácil de Entender: Funcionalidades similares
Consultas dinámicas (1/3):
SELECT * FROM PERSONS
db.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 = 30
db.persons.find({Name:"Antonio Gomez“, Age:30}, {Age:true})
16. Fácil de Entender: Funcionalidades similares
Consultas 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 AGE
db.persons.find().sort({Age:1})
17. Fácil de Entender: Funcionalidades similares
Consultas dinámicas (3/3):
SELECT DISTINCT NAME FROM PERSONS
db.persons.distinct("Name")
SELECT * FROM PERSONS LIMIT 10 SKIP 10
db.persons.find().limit(10).skip(10)
SELECT * FROM PERSONS WHERE AGE > 25 AND <= 45
db.persons.find({'Age': {$gt:25, $lte:45}})
20. Fácil de Entender: Tipos de Datos similares
Array, Binary, Boolean, DateTime,
DB Reference, Embedded Object,
Integer, Null, ObjectId, RegExp,
String, Symbol, Timestamp, Long,
Decimal …
21. Fácil de Entender: Funcionalidades similares
Relaciones, 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 similares
Relaciones, 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 un documento embebido.
23. Fácil de Entender: Funcionalidades Similares
Agregación, ejecución de código en el servidor:
• Aggregation Framework
• Count
• Distinct
• Group
• MapReduce
http://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 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 update
2. 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.
29. 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: 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 iniciamos
Listo, ya tenemos el servidor de MongoDB instalado y funcionando.
30. 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.