57
UNIVERSIDAD DE LOS ANDES REDES SOCIALES Ing. Diego Hernando Torres Valencia Tópicos Especiales: Ciencias de los datos aplicadas a las redes sociales

1 tutorial de mongo db

Embed Size (px)

Citation preview

Page 1: 1 tutorial de mongo db

UNIVERSIDAD DE LOS ANDES

REDES SOCIALES

Ing. Diego Hernando Torres Valencia

Tópicos Especiales: Ciencias de los datos aplicadas a las redes sociales

Page 2: 1 tutorial de mongo db

1. MAP REDUCE

2. PROYECTO EN PHP

1.1. Mongo db

Ing. Diego Hernando Torres Valencia

CONTENIDO:

UNIVERSIDAD DE LOS ANDES

Page 3: 1 tutorial de mongo db

REDES SOCIALES MAP REDUCEMapReduce es un modelo de programación utilizado por Google para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos decomputadoras y al commodity computing. El nombre del framework está inspirado en los nombres de dos importantes métodos, macros o funciones en programación funcional: Map y Reduce.

MapReduce ha sido adoptado mundialmente, ya que existe una implementación OpenSource denominada Hadoop. Su desarrollo fue liderado inicialmente por Yahoo y actualmente lo realiza el proyecto Apache.

En esta década de los años 2010 existen diversas iniciativas similares a Hadoop tanto en la industria como en el ámbito académico. Se han escrito implementaciones de bibliotecas de MapReduce en diversos lenguajes de programación como C++, Java y Python.

MapReduce se emplea en la resolución práctica de algunos algoritmos susceptibles de ser paralelizados.No obstante MapReduce no es la solución para cualquier problema, de la misma forma que cualquier problema no puede ser resuelto eficientemente por MapReduce.Por regla general se abordan problemas con datasets de gran tamaño, alcanzando los petabytes de tamaño. Es por esta razón por la que este framework suele ejecutarse en sistema de archivos distribuidos (HDFS)

Page 4: 1 tutorial de mongo db

REDES SOCIALES MAP REDUCE

La función map(): se encarga del mapeo y es aplicada en paralelo para cada ítem en la entrada de datos. Esto produce una lista de pares (k2,v2) por cada llamada. Después de eso, el framework de MAPREDUCE junta todos los pares con la misma clave de todas las listas y los agrupa, creando un grupo por cada una de las diferentes claves generadas.

La función reduce(): cada llamada a Reduce típicamente produce un valor v3 o una llamada vacía, aunque una llamada puede retornar más de un valor. El retorno de todas esas llamadas se recoge como la lista de resultado deseado.

BIG DATA = Leer un monton de datos

MAP =Extraer algo que te importa de cada registro Baraja y Ordenar

REDUCE=Agregado, resumir, filtrar o transformar los resultados escritos.

Page 5: 1 tutorial de mongo db

MONGODB: Características BBDD orientadas a Documentos

• Modelo de datos: colecciones de documentos que contienen colecciones de claves-valor

• Ejemplos: CouchDB, MongoDB

• Buenas en:

– Modelado de datos natural

– Amigables al programador

– Desarrollo rápido

– Orientas a la web: CRUD

Page 6: 1 tutorial de mongo db

• Una base de datos orientada a documentos es un programa diseñado para almacenar, recuperar y gestionar información semi-estructurada orientada a documentos: – Un documento encapsula información en un formato estándar (XML,

YAML, JSON o BSON):

• Los documentos en una BBDD orientada a documentos son similares a registros pero no requieren un esquema estándar con la mismas secciones, huecos, partes, claves y similar

• Los documentos suelen ser direccionables por una clave que los representa unívocamente

• Además de la búsqueda por clave de documento, estas BBDD suelen ofrecer una API o lenguaje de consultas que permite recuperar documentos en base a sus contenidos

MONGODB: Características BBDD orientadas a Documentos

Page 7: 1 tutorial de mongo db

MongoDB

Page 8: 1 tutorial de mongo db

BASES DE DATOS QUE USAN LAS GRANDES EMPRESAS

Empresa Base de datos

Foursquare MongoDB

Foursquare es un servicio basado en localización web aplicada a las redes sociales. La geolocalización permite localizar un dispositivo fijo o móvil en una ubicación geográfica

La idea principal de la red es marcar (check-in) lugares específicos donde uno se encuentra e ir ganando puntos por «descubrir» nuevos lugares; la recompensa son las "Badges", una especie de medallas, y las "Alcaldías" (Mayorships), que son ganadas por las personas que más hacen "check-ins" en un cierto lugar en los últimos 60 días. A partir de la información que los usuarios han ido introduciendo, el servicio ha ido evolucionando hacia un motor de recomendaciones que sugiere lugares interesantes de manera inteligente.

Page 9: 1 tutorial de mongo db

• MongoDB (de la palabra en ingles “humongous” que significa enorme) es un sistema de base de datos NoSQL orientado a documentos

• MongoDB guarda estructuras de datos en documentos tipo BSON (Binary JSON (JSON Binario) con un esquema dinámico , haciendo que la integración de los datos en ciertas aplicaciones sea mas fácil y rápida.

• The MongoDB Manual:– http://docs.mongodb.org/manual/

MongoDB

Page 10: 1 tutorial de mongo db

Características Principales• Consultas Ad hoc

– MongoDB soporta la búsqueda por campos, consultas de rangos y expresiones regulares. Las consultas pueden devolver un campo específico del documento pero también puede ser una función JavaScript definida por el usuario.

• Indexación

– Cualquier campo en un documento de MongoDB puede ser indexado, al igual que es posible hacer índices secundarios. El concepto de índices en MongoDB es similar a los encontrados en base de datos relacionales.

• Replicación

– MongoDB soporta el tipo de replicación maestro-esclavo. El maestro puede ejecutar comandos de lectura y escritura. El esclavo puede copiar los datos del maestro y sólo se puede usar para lectura o para copia de seguridad, pero no se pueden realizar escrituras. El esclavo tiene la habilidad de poder elegir un nuevo maestro en caso del que se caiga el servicio con el maestro actual.

• Balanceo de carga

– MongoDB se puede escalar de forma horizontal usando el concepto de “shard”.

– El desarrollador elije una llave shard, la cual determina como serán distribuidos los datos en una colección. los datos son divididos en rangos (basado en la llave shard) y distribuidos a través de múltiples shard.

– Un shard es un maestro con uno o más esclavos.

– MongoDB tiene la capacidad de ejecutarse en múltiple servidores, balanceando la carga y/o duplicando los datos para poder mantener el sistema funcionando en caso que exista un fallo de hardware.

• Almacenamiento de archivos

– MongoDB puede ser utilizado con un sistema de archivos, tomando la ventaja de la capacidad que tiene MongoDB para el balanceo de carga y la replicación de datos utilizando múltiples servidores para el almacenamiento de archivos.

– Esta función (que es llamada GridFS ) está incluida en los drivers de MongoDB y disponible para los lenguajes de programación que soporta MongoDB.

• Agregación

– La función MapReduce puede ser utilizada para el procesamiento por lotes de datos y operaciones de agregación. Esta función permite que los usuarios puedan obtener el tipo de resultado que se obtiene cuando se utiliza el comando SQL “group-by”.

• Ejecución de JavaScript del lado del servidor

– MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas directamente a la base de datos para ser ejecutadas.

Page 11: 1 tutorial de mongo db

Casos de uso de MongoDB

• Almacenamiento y registro de eventos

• Para sistemas de manejo de documentos y contenido

• Comercio Electrónico

• Juegos

• Problemas de alto volumen

• Aplicaciones móviles

• Almacén de datos operacional de una página Web

• Manejo de contenido

• Almacenamiento de comentarios

– Votaciones

– Registro de usarios

– Perfiles de usuarios

– Sesiones de datos

• Proyectos que utilizan metodologías de desarrollo iterativo o ágiles

• Manejo de estadísticas en tiempo real

Page 12: 1 tutorial de mongo db

MongoDB

• Similar a CouchDB

• Pretende combinar lo mejor de los almacenes clave/valor, bases de datos de documentos y RDBMS

• Hace uso de JSON y tiene su propio lenguaje de consultas

• Implementada en C++

• Es quizás el motor NoSQL más popular

• Usada por SourceForge, Bit.ly, Foursquare o GitHub

• URL: http://www.mongodb.org/

Page 13: 1 tutorial de mongo db

Manipulación de Datos: colecciones y documentos

• MongoDB guarda la estructura de los datos en documentos tipo JSON (JavaScript Object Notation) con un esquema dinámico llamado BSON, lo que implica que no existe un esquema predefinido.

• Los elementos de los datos son llamados documentos y se guardan en colecciones

• Una colección puede tener un número indeterminado de documentos

– Las colecciones son como tablas y los documentos

– Cada documento en una colección puede tener diferentes campos.

• La estructura de un documento es simple y compuesta por “key-value pairs” parecido a las matrices asociativas en un lenguaje de programación

– Como valor se pueden usar números, cadenas o datos binarios como imágenes o cualquier otro “key-value pairs”.

Page 14: 1 tutorial de mongo db

Ejemplo de documento en MongoDB

{

"_id":

ObjectId("4efa8d2b7d284dad101e4bc7"),

"Last Name": "PELLERIN",

"First Name": "Franck",

"Age": 29,

"Address": {

"Street": "1 chemin des Loges",

"City": "VERSAILLES"

}

}

Page 15: 1 tutorial de mongo db

Utilidades de MongoDB• Los siguientes comandos pueden ser instalados para el manejo y la administración del

sistema de base de datos:• mongo: es un Shell interactivo que permite a los desarrolladores ver, insertar, eliminar y

actualizar datos en su base de datos. Este también permite entre otras funciones la replicación de información, configurar los Shards, apagar los servidores y ejecutar JavaScript.

• mongostat: es un instrumento de línea de comandos que muestra en resumen una lista de estadísticas de una instancia de MongoDB en ejecución. Esto te permite visualizar cuantas inserciones, actualizaciones, eliminaciones, consultas y comandos se han ejecutado, pero también cuanta memoria esta utilizando y cuanto tiempo ha estado cerrada la base de datos.

• mongotop: es un instrumento de línea de comandos que provee un método para dar seguimiento a la cantidad de tiempo que dura una la lectura o escritura de datos en una instancia. También provee estadísticas en el nivel de cada colección.

• mongosniff: es un instrumento de línea de comandos que provee un sniffing en la base de datos haciendo un sniffing en el tráfico de la red que va desde y hacia MongoDB.

• mongoimport/mongoexport: es un instrumento de línea de comandos que facilita la importación exportación de contenido desde JSON, CSV o TSV. También tiene el potencial de importar o exportar hacia otros formatos.

• mongodump/mongorestore: es un instrumento de línea de comandos para la creación de una exportación binaria del contenido de la base de datos. Estos comandos son utilizado para la estrategia de copias de seguridad cuando se utiliza MongoDB.

Page 16: 1 tutorial de mongo db

Documentación e instalación

• La documentación completa de MongoDB puede encontrarse en:

– http://docs.mongodb.org/manual/

• Instrucciones para instalar MongoDB en Windows:

– Descargar de: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/

– Crear directorio de datos: mkdir data/db

– Ejecutar el comando: mongod.exe --dbpath ..\data\db

– Ejecutar el cliente de mongo y los siguientes comandos en JavaScript:C:\Programming\utilities\mongodb-win32-x86_64-2.0.6\bin>mongo

MongoDB shell version: 2.0.6

connecting to: test

> db.test.save( {a:1} )

> db.test.find()

{ "_id" : ObjectId("4fe6e41b184d3a26629be9b6"), "a" : 1 }

>

Page 17: 1 tutorial de mongo db

Usando MongoDB• mongo es un shell JavaScript completo, cualquier función JavaScript, sintáxis o clase puede usarse en el shell

use mydb

j = { name : "mongo" };

t = { x : 3 };

db.things.save(j);

db.things.save(t);

db.things.find();

for (var i = 1; i <= 20; i++) db.things.save({x : 4, j : i});

db.things.find();

// Iterate through the remaining items

it

// Store the cursor of the DB in a variable

var cursor = db.things.find();

while (cursor.hasNext()) printjson(cursor.next());

// Use functional features of JavaScript

db.things.find().forEach(printjson);

// cursor like an array

var cursor = db.things.find();

printjson(cursor[4]);

// The query expression is an document itself.

db.things.find({name:"mongo"}).forEach(printjson);

db.things.find({x:4}).forEach(printjson);

db.things.find({x:4}, {j:true}).forEach(printjson);

Page 18: 1 tutorial de mongo db

Documentos de consulta• Documentos que indican el patrón de claves y valores que deben ser

localizados

• Ejemplos:– SELECT * FROM things WHERE name="mongo“

• db.things.find({name:"mongo"}).forEach(printjson);

– SELECT * FROM things WHERE x=4

• db.things.find({x:4}).forEach(printjson);

– SELECT j FROM things WHERE x=4

• db.things.find({x:4}, {j:true}).forEach(printjson);

– Recuperar el primer elemento que cumple alguna restricción:• printjson(db.things.findOne({name:"mongo"}));

– Limitar el número de resultados:• db.things.find().limit(3);

• More info at:– SQL to Mongo Mapping Chart

• http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart

Page 19: 1 tutorial de mongo db

GridFS

• GridFS is a specification for storing large files in MongoDB– The database supports native storage of binary data

within BSON objects

– BSON objects in MongoDB are limited in size (4MB older versions, 16MB in v1.7/1.8, higher limits in the future)

• GridFS spec provides a mechanism for transparently dividing a large file among multiple documents– Each file has a metadata object in a files collection, and one or more

chunk objects in a chunks collection.

• URL: http://www.mongodb.org/display/DOCS/GridFS– Specification:

http://www.mongodb.org/display/DOCS/GridFS+Specification

Page 20: 1 tutorial de mongo db

MongoDB and Java

• Java Tutorial: http://www.mongodb.org/display/DOCS/Java+Tutorial

• Una lista de buenos ejemplos en MongoDBprogramados con Java:

– http://www.mkyong.com/tutorials/java-mongodb-tutorials/

• Ejemplo using GridFS con MongoDB

– http://www.mkyong.com/mongodb/java-mongodb-save-image-example/

Page 21: 1 tutorial de mongo db

PRATICA con MongoDB

Page 22: 1 tutorial de mongo db

MongoDBAcceder al icono del softwareNecesitamos instalar el software Robomongo para administrar

la base de datos MongoDB, ya que por medio del software :Robomongo podemos visualizar por medio de una interfaz grafica y administrar la base MongoDB de forma mas sencilla.

PAGINA DE DESCARGA:

http://robomongo.org/

Page 23: 1 tutorial de mongo db

Administrador de interfaces de usuario : robomongo

PAGINA DE DESCARGA: http://robomongo.org/ Acceder al icono del software

Page 24: 1 tutorial de mongo db

Administrador de interfaces de usuario : robomongo

PAGINA DE DESCARGA: http://robomongo.org/

Realizo la instalación del programa que me permite administrar por medio de la interfaz graficaLa base de datos MongoDB.

Acceder al icono del software

Page 25: 1 tutorial de mongo db

Administrador de interfaces de usuario : robomongo

CREAMOS LA CONEXIÓN A LA BASE DE DATOS MONGODB.

Page 26: 1 tutorial de mongo db

Administrador de interfaces de usuario : robomongo

Guardamos la CONEXIÓN A LA BASE DE DATOS MONGODB.

Page 27: 1 tutorial de mongo db

Administrador de interfaces de usuario : robomongo

Realizar la CONEXIÓN A LA BASE DE DATOS MONGODB.

NOTA: PARA REALIZAR LA CONEXIÓN CON LA BASE DE DATOS MONGODB, HAY QUE INICIAR LOS SERVICIOS DE LA BASE DE DATOS POR MEDIO DE 2 TERMINALES SHELL O CMD,como muestro mas adelante

Page 28: 1 tutorial de mongo db

MongoDBComenzamos la pratica para Gestionar la base de datos MongoDB por medio del terminal o consola de Windows:

Page 29: 1 tutorial de mongo db

MongoDB

Gestionar la base de datos MongoDB por medio del terminal o consola de Windows:

Abrimos dos terminales para ejecutar la base de datos: MongoDB

Page 30: 1 tutorial de mongo db

MongoDB1. CREAR CONEXIÓN EN UNA PRIMERA VENTANA SHELLC:\Program Files\MongoDB 2.6 Standard\bin>mongod.exe

2. CORRER MONGO EN UNA SEGUNDA VENTANA SHELL

C:\Program Files\MongoDB 2.6 Standard\bin>mongo.exe

ABRIR DOS VENTANAS SHELL

Page 31: 1 tutorial de mongo db

MongoDB

Gestionar la base de datos MongoDB por medio del terminal o consola de Windows:

Seguiremos utilizando las dos terminales para ejecutar la base de datos: MongoDB

NOTA: IMPORTANTE: En la segunda ventana donde colocamos a correr mongo, por medio del Comando: mongo.exe , en esta segunda ventana o terminal cmd ; vamos a trabajar con Diferentes comandos para insertar documentos en la base de datos: MongoDB

Page 32: 1 tutorial de mongo db

MongoDBEn la segunda ventana Shell o cmd, colocamos el comando:

1.INSERTAR DATOS> db.test.save( {a:1} )

Page 33: 1 tutorial de mongo db

MongoDBEn la segunda ventana Shell o cmd, colocamos el comando:

2.CONSULTAR DATOS> db.test.find()

Page 34: 1 tutorial de mongo db

MongoDB: comando helpEn la segunda ventana Shell o cmd, colocamos el comando help

Page 35: 1 tutorial de mongo db

MongoDB: comando show dbsCOMANDO: show dbsMostrar todo lo que hay adentro de mongo o que bases de datos hay.show dbs

Page 36: 1 tutorial de mongo db

MongoDB: comando use

COMANDO: useCrear una base de datos.use miPrimeraBasededatos

Page 37: 1 tutorial de mongo db

MongoDB: comando de asignación =para crear variables

COMANDO DE ASIGNACIONIntroducir algo a la base de datos. Crear unas variables con datos..a = { nombre: “Diego Torres Valencia ”}b = { edad : 28 }

Page 38: 1 tutorial de mongo db

CREAR LA COLECCIONdb.personas.insert(a)db.personas.insert(b)

MongoDB: comando para crear la coleccion

Page 39: 1 tutorial de mongo db

Puebo revisar el estado de:la base de datos: miPrimeraBasedeDatos,Colección: personasy los respectivos campos nombre y edad,Ademas se crea el id único por medio de la MAC delComputador haciendo este índice único en todo el mundo.

MongoDB: Robomongo visualiza la base de datos mongoDB

Page 40: 1 tutorial de mongo db

MongoDB: comando show collections

COMANDO show collectionsshow collections

Page 41: 1 tutorial de mongo db

MongoDB: comando db.personas.find()

COMANDO db.personas.find()Muestra la colección personas con los 2 documentos que hemos creados, y cadadocumento tiene un índice o id único. Nos muestra la colección personas en formato JSON (JavaScript Object Notation).db.personas.find( )

Page 42: 1 tutorial de mongo db

MongoDB: crear una segunda coleccion

CREAR UNA SEGUNDA COLECCIÓN LLAMADA amigosuse.miPrimeraBasedeDatosdb.amigos.insert({ nombre: “Juan ”, teléfono: 31248608 , dirección:”barrio colpet #2-45” } )

Page 43: 1 tutorial de mongo db

MongoDB: mostrar la segunda coleccion

MOSTRAR LA SEGUNDA COLECCIÓN LLAMADA amigosdb.amigos.find()

Page 44: 1 tutorial de mongo db

Puebo revisar el estado de:la base de datos: miPrimeraBasedeDatos,Colección: amigos y personasy los respectivos campos nombre y edad,Ademas se crea el id único por medio de la MAC delComputador haciendo este índice único en todo el mundo.

MongoDB: Robomongo visualiza la base de datos mongoDB

Page 45: 1 tutorial de mongo db

MongoDB: Borrar un campo de un documento

BORRAR UN CAMPO DE UN DOCUMENTO DE UNA

COLECCION LLAMADA personas

db.personas.remove({edad:28})

Page 46: 1 tutorial de mongo db

MongoDB: Actualizar un campo de un documento

ACTUALIZAR UN CAMPO DE UN DOCUMENTO DE UNA COLECCION LLAMADA personasdb.personas.find()db.personas.update( {nombre:”Diego Torres Valencia”} , { nombre:” Don Diego”} )

Page 47: 1 tutorial de mongo db

Puebo revisar el estado de:la base de datos: miPrimeraBasedeDatos,Colección: personasy los respectivos campos nombre y edad,Ademas se revisa que se actualizo el campo nombre de“Diego Torres Valencia” y el campo quedo actualizado: “Don Diego”.

MongoDB: Robomongo visualiza la base de datos mongoDB

Page 48: 1 tutorial de mongo db

MongoDB: Añadir campos a un documento

AÑADIR O ACTUALIZAR UN CAMPO DE UN DOCUMENTO DE UNA COLECCION LLAMADA personasdb.personas.find()db.personas.update( {Nombre:” Don Diego”} , { $set :{ apellido:” Valencia” ,alias:”dieguin”} } )

Page 49: 1 tutorial de mongo db

Puebo revisar el estado de:la base de datos: miPrimeraBasedeDatos,Colección: personasy los respectivos campos nombre y edad,Ademas se visualiza los dos nuevos campos creadosApellido: “Valencia”Alias: “Dieguin”

MongoDB: Robomongo visualiza la base de datos mongoDB

Page 50: 1 tutorial de mongo db

MongoDB:Borrar base de datos creada

BORRAR BASE DE DATOS CREADAUse miPrimeraBasedeDatosdb.dropDatabase()

Page 51: 1 tutorial de mongo db

Borramos la base de datos: miPrimeraBasedeDatos,Ademas se visualiza en Robomongo que se borro la base de datos .

MongoDB: Robomongo visualiza la base de datos mongoDB

Page 52: 1 tutorial de mongo db

MongoDB: ERROR: dbpath<\data\db\> does not exist.

Page 53: 1 tutorial de mongo db

MongoDB: ERROR: dbpath<\data\db\> does not exist.

Page 54: 1 tutorial de mongo db

MongoDB: ERROR: dbpath<\data\db\> does not exist.

Page 55: 1 tutorial de mongo db
Page 56: 1 tutorial de mongo db

BibliografíaFuentes bibliográficas

• PMBOK. (2003) Guía Fundamental para la Gestión de Proyectos. Edición project management Institute, Inc.

• Rodríguez Bermúdez, José Ramón; García Mínguez, Jordi; Lamarca Orozco, Ignacio. (2007): “Gestión de proyectos informáticos: métodos, herramientas y casos”. Editorial UOC, S.L., Madrid. ISBN 8497885686. Libro guía

• Sánchez Garreta, José Salvador. (2003): “Ingeniería de proyectos informáticos: actividades y procedimientos”. Edición ilustrada. Editor Universidad Jaume, Córdoba. ISBN 8480214082, 9788480214087

• Fuentes digitales o electrónicas

• Medellín, (2011, agosto). Dirección de proyectos. Recuperado el 23 de agosto de 2011, del sitio web http://www.slideshare.net/albinogoncalves/direccin-de-proyectos-de-ti-i?src=related_normal&rel=130864

Page 57: 1 tutorial de mongo db

Fin de la presentación.

MUCHAS GRACIAS

Copyright 2014, Todos los Derechos Reservados.