1. UNIVERSIDAD DE LOS ANDES
REDES SOCIALES
Ing. Diego Hernando Torres Valencia
Tópicos Especiales: Ciencias de los datos
aplicadas a las redes sociales
2. 1. MAP REDUCE
2. PROYECTO EN PHP
1.1. Mongo db
Ing. Diego Hernando Torres Valencia
CONTENIDO:
UNIVERSIDAD DE LOS ANDES
3. REDES
SOCIALES MAP REDUCE
MapReduce 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)
4. 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.
5. 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
6. • 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
8. 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.
9. • 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
10. 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.
11. 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
12. 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/
13. 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”.
14. Ejemplo de documento
en MongoDB
{
"_id":
ObjectId("4efa8d2b7d284dad101e4bc7"),
"Last Name": "PELLERIN",
"First Name": "Franck",
"Age": 29,
"Address": {
"Street": "1 chemin des Loges",
"City": "VERSAILLES"
}
}
15. 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.
16. 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 ..datadb
– Ejecutar el cliente de mongo y los siguientes comandos en JavaScript:
C:Programmingutilitiesmongodb-win32-x86_64-2.0.6bin>mongo
MongoDB shell version: 2.0.6
connecting to: test
> db.test.save( {a:1} )
> db.test.find()
{ "_id" : ObjectId("4fe6e41b184d3a26629be9b6"), "a" : 1 }
>
17. 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);
18. 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
19. 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
20. MongoDB and Java
• Java Tutorial:
http://www.mongodb.org/display/DOCS/Java+Tutori
al
• Una lista de buenos ejemplos en MongoDB
programados 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/
22. MongoDB
Acceder 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/
23. Administrador de interfaces de usuario : robomongo
PAGINA DE DESCARGA: http://robomongo.org/ Acceder al icono del software
24. 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 grafica
La base de datos MongoDB.
Acceder al icono del software
27. 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
29. 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
30. MongoDB
1. CREAR CONEXIÓN EN UNA PRIMERA VENTANA SHELL
C:Program FilesMongoDB 2.6 Standardbin>mongod.exe
2. CORRER MONGO EN UNA
SEGUNDA VENTANA SHELL
C:Program FilesMongoDB 2.6
Standardbin>mongo.exe
ABRIR DOS VENTANAS SHELL
31. 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
32. MongoDB
En la segunda ventana Shell o cmd, colocamos el comando:
1.INSERTAR DATOS
> db.test.save( {a:1} )
33. MongoDB
En la segunda ventana Shell o cmd, colocamos el comando:
2.CONSULTAR DATOS
> db.test.find()
37. MongoDB: comando de asignación =
para crear variables
COMANDO DE ASIGNACION
Introducir algo a la base de datos. Crear unas variables con datos..
a = { nombre: “Diego Torres Valencia ”}
b = { edad : 28 }
39. Puebo revisar el estado de:
la base de datos: miPrimeraBasedeDatos,
Colección: personas
y los respectivos campos nombre y edad,
Ademas se crea el id único por medio de la MAC del
Computador haciendo este índice único en todo el mundo.
MongoDB: Robomongo visualiza la base de
datos mongoDB
42. MongoDB: crear una segunda
coleccion
CREAR UNA SEGUNDA COLECCIÓN LLAMADA amigos
use.miPrimeraBasedeDatos
db.amigos.insert({ nombre: “Juan ”, teléfono: 31248608 , dirección:”barrio colpet #2-
45” } )
43. MongoDB: mostrar la segunda
coleccion
MOSTRAR LA SEGUNDA COLECCIÓN LLAMADA amigos
db.amigos.find()
44. Puebo revisar el estado de:
la base de datos: miPrimeraBasedeDatos,
Colección: amigos y personas
y los respectivos campos nombre y edad,
Ademas se crea el id único por medio de la MAC del
Computador haciendo este índice único en todo el mundo.
MongoDB: Robomongo visualiza la base de
datos mongoDB
45. MongoDB: Borrar un campo de
un documento
BORRAR UN CAMPO DE UN DOCUMENTO DE UNA
COLECCION LLAMADA personas
db.personas.remove({edad:28})
46. MongoDB: Actualizar un campo
de un documento
ACTUALIZAR UN CAMPO DE UN DOCUMENTO DE UNA COLECCION LLAMADA personas
db.personas.find()
db.personas.update( {nombre:”Diego Torres Valencia”} , { nombre:” Don Diego”} )
47. Puebo revisar el estado de:
la base de datos: miPrimeraBasedeDatos,
Colección: personas
y 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
48. MongoDB: Añadir campos a un
documento
AÑADIR O ACTUALIZAR UN CAMPO DE UN DOCUMENTO DE UNA COLECCION LLAMADA personas
db.personas.find()
db.personas.update( {Nombre:” Don Diego”} , { $set :{ apellido:” Valencia” ,alias:”dieguin”} } )
49. Puebo revisar el estado de:
la base de datos: miPrimeraBasedeDatos,
Colección: personas
y los respectivos campos nombre y edad,
Ademas se visualiza los dos nuevos campos creados
Apellido: “Valencia”
Alias: “Dieguin”
MongoDB: Robomongo visualiza la base de
datos mongoDB
50. MongoDB:Borrar base de datos
creada
BORRAR BASE DE DATOS CREADA
Use miPrimeraBasedeDatos
db.dropDatabase()
51. 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
56. Bibliografía
Fuentes 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
57. Fin de la presentación.
MUCHAS GRACIAS
Copyright 2014, Todos los Derechos
Reservados.