SlideShare a Scribd company logo
1 of 18
Por: Daniel Salas Denegri
CoFundador & CTO en KunanTI
GDG Arequipa
@danielsd10 gplus.to/danielsd10
Bases de Datos NoSQL
¿Qué es NoSQL?
Tipos de Bases de Datos NoSQL
MongoDB
Acerca de MongoDB
Arquitectura
Instalación
Drivers para Lenguajes de Programación
Aplicación de Demostración: PHP
Google Maps API
Librerías
Conexión a Base de Datos
Colecciones
Consulta de Datos
Edición de Datos
Otras Funcionalidades y Recursos
Funcionalidades de MongoDB
Herramientas y Recursos
• Not Only SQL
• Engloba un conjunto de Bases de Datos distintas de las
bases de datos relacionales (RDBMS).
• Las aplicaciones actuales deben responder a nuevas
exigencias:
• Grandes cantidades de información
• Mayor concurrencia
• Flexibilidad de los datos
• Arquitecturas en la Nube
• Para ciertos problemas de almacenamiento, otras
tecnologías se aplican mejor.
¿Qué es NoSQL?
Tipos de Bases de Datos NoSQL
Key /Value Column
Document Graph
• "humongous"
• Creada en 2009 por 10gen
• Características resaltantes
• Basada en Documentos JSON (BSON)
• Multiplataforma
• Velocidad
• Escalabilidad
• Open Source
• Soportada por muchos lenguajes
• Utilizada por
• Foursquare (Red Social)
• Craiglist (Archivo de anuncios)
• Intuit (Análisis en tiempo real)
• MTV (CMS)
www.mongodb.org www.10gen.com
• Jerarquía
• Base de Datos
• Colecciones
• Documentos
• Notación JSON / BSON
• Tipos soportados: String, Double,
Object, Date, Null,Array, Document,
ObjectID, Regex, Null.
• Datos Binarios (GridFS)
• Lenguaje de consultas: Javascript
• Esquema
• Conjunto de claves / valor
• Colecciones no tienen estructura
Arquitectura
www.mongodb.org bsonspec.org
webDB
blogs users
{
_id: ObjectID(«12ba1154cd19»),
title: «GDG Arequipa»,
regdate: new Date(),
tags: [«db», «php»],
location: {«lat»: -70, «lng»: 80}
}
• Última versión: 2.4.3 (Abril 2013)
• Versiones de 32 y 64 bits
• Windows
• Descargar y desempaquetar ZIP y ejecutar mongod.exe
• Se puede configurar como Servicio
• Intérprete de comandos: mongo.exe
• Linux
• Código fuente (tgz)
• Instalación rápida: apt-get (deb), yum (rpm)
• Intérprete de comandos: mongo
• MacOS / Solaris
• Código fuente (tgz)
Instalación
www.mongodb.org/downloads
• C#, .Net
• github.com/mongodb/mongo-csharp-driver (msi)
• PHP
• Windows: Extensión mongo.dll (Apache, IIS)
• Linux: pecl install mongo
• Java
• maven.org
• Soporte para frameworks: Morphia, Spring, etc.
• Python
• PyMongo: pip install pymongo
• Ruby
• gem install mongo
• Node.js
• npm install mongodb
• Otros lenguajes: C, C++, Erlang, Javascript, Perl, Scala
Drivers
www.mongodb.org/ecosystem/drivers
«MapTags»
Aplicación que permite colocar etiquetas de temas específicos en un mapa.
Código fuente:
github.com/danielsd10/demo.maptags
Funcionalidades
 Visualización de etiquetas por tipo
 Herramientas de registro
 Formulario de registro
 Almacenamiento en Base de Datos
 Detalles de una etiqueta
 Carga de imágenes a GridFS
 Edición de etiqueta
 Filtrar etiquetas
…¿Qué más le incluirían?
Integra las siguientes
tecnologías
• Versión 3 (3.12)
Google MapsAPI
developers.google.com/maps
Map
Overlays
MapTypes
Layers
Markers
Geocoder
Services
StreetView
• Librerías de apoyo:
• jQuery
• jquery-ui-map
• Bootstrap
Referencia de Librerías
jquery.com twitter.github.io/bootstrap code.google.com/p/jquery-ui-map
<html>
<head>
...
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
<script type="text/javascript"
src="https://maps.google.com/maps/api/js?v=3.exp&sensor=false"></script>
<script type="text/javascript"
src="js/jquery.ui.map.full.min.js"></script>
...
• Objetos básicos del Driver:
• Mongo / MongoClient
• MongoDB
• MongoCollection
• MongoCursor
• MongoException
Conexión a Base de Datos
php.net/manual/es/book.mongo.php
<?php
$mongo = new MongoClient("mongodb://localhost:27017");
$db = $mongo->selectDB("maptags");
?>
• Tipos de «Tags»:
• Lugar que quiero destacar (nombre, descripción)
• Imagen o Fotografía que tomé (archivo)
• Regalo o producto que debo comprar (precio)
• Reunión con varias personas (fecha, asistentes)
• Lugar peligroso que debo evitar (radio)
• Número de colecciones: 1 !!
Colecciones
docs.mongodb.org/manual/tutorial/getting-started
{
_id: new ObjectId(«51972979d08d828815000002»),
type: «gift»,
regdate: new Date(«May 18, 2013»),
pos: {lat: -16.38919, lng: -71.54720}
title: «Tablet»,
descr: «Nexus 7, 32GB, 2GB RAM, Android Jelly Bean»,
price: «1290.00»
}
• MongoCollection
• find(array $filter, array $fields)
• findOne(array $filter)
• MongoCursor
• sort(array $fields)
• limit(int $num), skip(int $num)
• count()
Consulta de Datos
php.net/manual/es/book.mongo.php
<?php
$coll = $db->markers;
$rs = $coll->find(array(), array('type'=>1, 'pos'=>1));
$r = array();
foreach($rs as $obj) {
$r[] = $obj;
}
?>
• MongoCollection
• save(array|object $data)
• insert(array|object $data)
• remove(array $criteria)
• Objetos por tipo
• MongoId
• MongoDate
• MongoRegex
• MongoBinData
Edición de Datos
php.net/manual/es/book.mongo.php
<?php
$coll = $db->markers;
$obj = $_POST; // Solo por demostración. Nunca en producción
try {
$coll->save($obj); // ok
} catch (Exception $e) {
// error :(
}
?>
• Copias de Seguridad
• mongodump –d database –o /path/to/directory
• mongorestore –d database /path/to/directory
• mongoimport –d database –c collection < file.json
• GridFS
• Consultas Complejas
• db.col.find({field.subfield: value})
• db.col.find({field: { $gt: value1, $lt: value2 }})
• db.col.find({field: {$elemMatch:{subfield: value1 } }})
• db.col.find({$or: [{field : /^G/}, {field: /z$/}]}
• db.col.find({loc : { $near : [ 40 , 5 ] ,$maxDistance : 10} })
• Índices
• Seguridad
• Map/Reduce
• Aggregation Framework
• Permite filtrar, agrupar, transformar y ordenar documentos.
• Replica Sets
• Sharding
Otras Funcionalidades
www.mongodb.org/manual
• RockMongo
• Aplicación de PHP para consultar Bases de Datos MongoDB
• Similar a PhpMyAdmin
• rockmongo.com
• MonjaDB
• Extensión de Eclipse para consultar Bases de Datos MongoDB
• www.jumperz.net/index.php
• Consola interactiva para aprender MongoDB
• try.mongodb.org
• Capacitación para MongoDB
• education.10gen.com
@danielsd10 gplus.to/danielsd10
Happy Coding!!

More Related Content

Similar to Bases de Datos NoSQL MongoDB

1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db.. ..
 
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
 
NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBNOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBVictor Cuervo
 
Análisis de Datos con MongoDB
Análisis de Datos con MongoDBAnálisis de Datos con MongoDB
Análisis de Datos con MongoDBAlejandro Mancilla
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrolloJuan Ladetto
 
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
 
Introducción a NoSQL con MongoDB y FireDAC
Introducción a NoSQL con MongoDB y FireDAC Introducción a NoSQL con MongoDB y FireDAC
Introducción a NoSQL con MongoDB y FireDAC Fernando Rizzato
 
Mongo bd michael landeo vargas
Mongo bd michael landeo vargasMongo bd michael landeo vargas
Mongo bd michael landeo vargasMichaelAngel1000
 
Taller Android seedrocket
Taller Android seedrocketTaller Android seedrocket
Taller Android seedrocketIsrael Camacho
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y GoJM Robles
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go LangArkhotech
 

Similar to Bases de Datos NoSQL MongoDB (20)

1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db
 
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
 
NOSQL: Primeros Pasos en MongoDB
NOSQL: Primeros Pasos en MongoDBNOSQL: Primeros Pasos en MongoDB
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 MongoDB
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrollo
 
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
 
Introducción a NoSQL con MongoDB y FireDAC
Introducción a NoSQL con MongoDB y FireDAC Introducción a NoSQL con MongoDB y FireDAC
Introducción a NoSQL con MongoDB y FireDAC
 
Que es MongoDB
Que es MongoDBQue es MongoDB
Que es MongoDB
 
FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017
 
Paralela9
Paralela9Paralela9
Paralela9
 
Mongo bd michael landeo vargas
Mongo bd michael landeo vargasMongo bd michael landeo vargas
Mongo bd michael landeo vargas
 
Web Mapping con Django
Web Mapping con DjangoWeb Mapping con Django
Web Mapping con Django
 
Taller Android seedrocket
Taller Android seedrocketTaller Android seedrocket
Taller Android seedrocket
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
 
Wilver mongo db
Wilver mongo dbWilver mongo db
Wilver mongo db
 
Presentacion cw2012
Presentacion cw2012Presentacion cw2012
Presentacion cw2012
 
Nosqlcp
NosqlcpNosqlcp
Nosqlcp
 
Nosqlcp
NosqlcpNosqlcp
Nosqlcp
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go Lang
 

Bases de Datos NoSQL MongoDB

  • 1. Por: Daniel Salas Denegri CoFundador & CTO en KunanTI GDG Arequipa @danielsd10 gplus.to/danielsd10
  • 2. Bases de Datos NoSQL ¿Qué es NoSQL? Tipos de Bases de Datos NoSQL MongoDB Acerca de MongoDB Arquitectura Instalación Drivers para Lenguajes de Programación Aplicación de Demostración: PHP Google Maps API Librerías Conexión a Base de Datos Colecciones Consulta de Datos Edición de Datos Otras Funcionalidades y Recursos Funcionalidades de MongoDB Herramientas y Recursos
  • 3. • Not Only SQL • Engloba un conjunto de Bases de Datos distintas de las bases de datos relacionales (RDBMS). • Las aplicaciones actuales deben responder a nuevas exigencias: • Grandes cantidades de información • Mayor concurrencia • Flexibilidad de los datos • Arquitecturas en la Nube • Para ciertos problemas de almacenamiento, otras tecnologías se aplican mejor. ¿Qué es NoSQL?
  • 4. Tipos de Bases de Datos NoSQL Key /Value Column Document Graph
  • 5. • "humongous" • Creada en 2009 por 10gen • Características resaltantes • Basada en Documentos JSON (BSON) • Multiplataforma • Velocidad • Escalabilidad • Open Source • Soportada por muchos lenguajes • Utilizada por • Foursquare (Red Social) • Craiglist (Archivo de anuncios) • Intuit (Análisis en tiempo real) • MTV (CMS) www.mongodb.org www.10gen.com
  • 6. • Jerarquía • Base de Datos • Colecciones • Documentos • Notación JSON / BSON • Tipos soportados: String, Double, Object, Date, Null,Array, Document, ObjectID, Regex, Null. • Datos Binarios (GridFS) • Lenguaje de consultas: Javascript • Esquema • Conjunto de claves / valor • Colecciones no tienen estructura Arquitectura www.mongodb.org bsonspec.org webDB blogs users { _id: ObjectID(«12ba1154cd19»), title: «GDG Arequipa», regdate: new Date(), tags: [«db», «php»], location: {«lat»: -70, «lng»: 80} }
  • 7. • Última versión: 2.4.3 (Abril 2013) • Versiones de 32 y 64 bits • Windows • Descargar y desempaquetar ZIP y ejecutar mongod.exe • Se puede configurar como Servicio • Intérprete de comandos: mongo.exe • Linux • Código fuente (tgz) • Instalación rápida: apt-get (deb), yum (rpm) • Intérprete de comandos: mongo • MacOS / Solaris • Código fuente (tgz) Instalación www.mongodb.org/downloads
  • 8. • C#, .Net • github.com/mongodb/mongo-csharp-driver (msi) • PHP • Windows: Extensión mongo.dll (Apache, IIS) • Linux: pecl install mongo • Java • maven.org • Soporte para frameworks: Morphia, Spring, etc. • Python • PyMongo: pip install pymongo • Ruby • gem install mongo • Node.js • npm install mongodb • Otros lenguajes: C, C++, Erlang, Javascript, Perl, Scala Drivers www.mongodb.org/ecosystem/drivers
  • 9. «MapTags» Aplicación que permite colocar etiquetas de temas específicos en un mapa. Código fuente: github.com/danielsd10/demo.maptags Funcionalidades  Visualización de etiquetas por tipo  Herramientas de registro  Formulario de registro  Almacenamiento en Base de Datos  Detalles de una etiqueta  Carga de imágenes a GridFS  Edición de etiqueta  Filtrar etiquetas …¿Qué más le incluirían? Integra las siguientes tecnologías
  • 10. • Versión 3 (3.12) Google MapsAPI developers.google.com/maps Map Overlays MapTypes Layers Markers Geocoder Services StreetView
  • 11. • Librerías de apoyo: • jQuery • jquery-ui-map • Bootstrap Referencia de Librerías jquery.com twitter.github.io/bootstrap code.google.com/p/jquery-ui-map <html> <head> ... <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/bootstrap.js"></script> <script type="text/javascript" src="https://maps.google.com/maps/api/js?v=3.exp&sensor=false"></script> <script type="text/javascript" src="js/jquery.ui.map.full.min.js"></script> ...
  • 12. • Objetos básicos del Driver: • Mongo / MongoClient • MongoDB • MongoCollection • MongoCursor • MongoException Conexión a Base de Datos php.net/manual/es/book.mongo.php <?php $mongo = new MongoClient("mongodb://localhost:27017"); $db = $mongo->selectDB("maptags"); ?>
  • 13. • Tipos de «Tags»: • Lugar que quiero destacar (nombre, descripción) • Imagen o Fotografía que tomé (archivo) • Regalo o producto que debo comprar (precio) • Reunión con varias personas (fecha, asistentes) • Lugar peligroso que debo evitar (radio) • Número de colecciones: 1 !! Colecciones docs.mongodb.org/manual/tutorial/getting-started { _id: new ObjectId(«51972979d08d828815000002»), type: «gift», regdate: new Date(«May 18, 2013»), pos: {lat: -16.38919, lng: -71.54720} title: «Tablet», descr: «Nexus 7, 32GB, 2GB RAM, Android Jelly Bean», price: «1290.00» }
  • 14. • MongoCollection • find(array $filter, array $fields) • findOne(array $filter) • MongoCursor • sort(array $fields) • limit(int $num), skip(int $num) • count() Consulta de Datos php.net/manual/es/book.mongo.php <?php $coll = $db->markers; $rs = $coll->find(array(), array('type'=>1, 'pos'=>1)); $r = array(); foreach($rs as $obj) { $r[] = $obj; } ?>
  • 15. • MongoCollection • save(array|object $data) • insert(array|object $data) • remove(array $criteria) • Objetos por tipo • MongoId • MongoDate • MongoRegex • MongoBinData Edición de Datos php.net/manual/es/book.mongo.php <?php $coll = $db->markers; $obj = $_POST; // Solo por demostración. Nunca en producción try { $coll->save($obj); // ok } catch (Exception $e) { // error :( } ?>
  • 16. • Copias de Seguridad • mongodump –d database –o /path/to/directory • mongorestore –d database /path/to/directory • mongoimport –d database –c collection < file.json • GridFS • Consultas Complejas • db.col.find({field.subfield: value}) • db.col.find({field: { $gt: value1, $lt: value2 }}) • db.col.find({field: {$elemMatch:{subfield: value1 } }}) • db.col.find({$or: [{field : /^G/}, {field: /z$/}]} • db.col.find({loc : { $near : [ 40 , 5 ] ,$maxDistance : 10} }) • Índices • Seguridad • Map/Reduce • Aggregation Framework • Permite filtrar, agrupar, transformar y ordenar documentos. • Replica Sets • Sharding Otras Funcionalidades www.mongodb.org/manual
  • 17. • RockMongo • Aplicación de PHP para consultar Bases de Datos MongoDB • Similar a PhpMyAdmin • rockmongo.com • MonjaDB • Extensión de Eclipse para consultar Bases de Datos MongoDB • www.jumperz.net/index.php • Consola interactiva para aprender MongoDB • try.mongodb.org • Capacitación para MongoDB • education.10gen.com