Wilver Tumialan Amancay
Estudiante de Ingeniería en Sistemas y Computación
Universidad de Ciencias e Informáticas
¿CUÁL ES EL CONTENIDO?
• Descripción general de MongoDB

• Configuración e instalación de MongoDB +
PHP en Linux

• Manipulación de MongoDB desde PHP
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.
Funciona?

http://www.mongodb.org/display/DOCS/Production+Deployments
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
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:
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
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.
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
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
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
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
Fácil de Entender: Conceptos
Conocidos
Bases de Datos

Bases de Datos

Tablas

Colecciones

Registros

Documentos
Fácil de Entender:
Documento = Registro/Registros
Que 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
}
]
}
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})
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})
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}})
Mas informacion en :
http://www.mongodb.org/display/DOCS/Querying
http://www.mongodb.org/display/DOCS/Advanced+Queries
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
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
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
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/mong
odb-user
• irc://irc.freenode.net/#mongodb

• Soporte Comercial
• http://www.10gen.com/
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.
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.
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.
Ejemplos: C#
https://github.com/emiliotorrens/mongodb-driverssamples/tree/master/csharp
Ejemplos: Python
https://github.com/emiliotorrens/mongodb-driverssamples/tree/master/python
Referencias
• MongoDB: The Definitive Guide
• Why MongoDB is Awesome
• 10gen presentations
GRACIAS …

Wilver mongo db

  • 1.
    Wilver Tumialan Amancay Estudiantede Ingeniería en Sistemas y Computación Universidad de Ciencias e Informáticas
  • 2.
    ¿CUÁL ES ELCONTENIDO? • Descripción general de MongoDB • Configuración e instalación de MongoDB + PHP en Linux • Manipulación de MongoDB desde PHP
  • 3.
    Que es MongoDB? MongoDBes 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.
  • 4.
  • 5.
    Que ventajas nosofrece? • 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 yes 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 nosofrece? • 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 yes 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 nosofrece? • 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 nosofrece? • 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/Registros Que 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 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: Funcionalidadessimilares 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: Funcionalidadessimilares 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}}) Mas informacion en : http://www.mongodb.org/display/DOCS/Querying http://www.mongodb.org/display/DOCS/Advanced+Queries
  • 18.
    Fácil de Entender: FuncionalidadesSimilares Agregación, ejecución de código en el servidor: • • • • • Aggregation Framework Count Distinct Group MapReduce http://www.mongodb.org/display/DOCS/Aggregation
  • 19.
    Fácil de Entender: FuncionalidadesSimilares Agregación, ejecución de código en el servidor: • • • • • Aggregation Framework Count Distinct Group MapReduce http://www.mongodb.org/display/DOCS/Aggregation
  • 20.
    Escalabilidad, Replicación yAlta 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
  • 21.
    Que ventajas nosofrece? • • • • • 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/mong odb-user • irc://irc.freenode.net/#mongodb • Soporte Comercial • http://www.10gen.com/
  • 22.
    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.
  • 23.
    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.
  • 24.
    Sin Instalación: MongoDB enla 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.
  • 25.
  • 26.
  • 27.
    Referencias • MongoDB: TheDefinitive Guide • Why MongoDB is Awesome • 10gen presentations
  • 28.