Big Data en Redes Sociales
Big Data en Redes Sociales
Big Data en Redes Sociales
Facultad de Ciencias
INGENIERO EN INFORMÁTICA
En segundo lugar, gracias a mis padres, porque sin ellos no habría llegado hasta
aquí. Gracias por preocuparos, por aconsejarme, por animarme en los peores momentos y
por hacerme las cosas mucho más fáciles.
En cuarto lugar, a las personas tan maravillosas que he conocido a lo largo de estos
años de carrera. Ojalá podamos seguir riéndonos de tantas anécdotas durante muchos
años más.
Por último, quiero acordarme de mis abuelos, porque sé lo orgullosos que estarían.
ii
Resumen
En los últimos años se ha producido un gran crecimiento de los servicios basados en redes
sociales como, por ejemplo, Twitter o Facebook. Si se visualiza la disposición de los datos
que conforman estas redes, se asemeja en gran medida a un grafo en el que los nodos
representan usuarios y las aristas que los unen las relaciones que se establecen entre ellos.
Es por ello que, generalmente, estas aplicaciones utilizan gestores orientados a grafos para
el almacenamiento de la información, como es el caso de Twitter, que hace uso del gestor
FlockDB; o para soportar parte de su funcionalidad, como ocurre en el caso de Facebook
que integra aplicaciones basadas en grafos a través del protocolo Open Graph.
Por estos motivos, este Proyecto Fin de Carrera ha tenido como objetivo el
desarrollo de una herramienta Business Intelligence que incluyera la definición y el cálculo
de indicadores de interés para analizar redes sociales. Con este propósito se utilizaron
conjuntos de datos reales de diferentes características y tamaños y se almacenaron en un
gestor de bases de datos orientadas a grafos, siendo Neo4J el elegido. Se diseñó, además,
un almacén de datos, o data warehouse, como soporte a la herramienta Business
Intelligence ante la imposibilidad de realizar ciertas consultas directamente sobre las
bases de datos en grafo y con objeto de que el sistema pudiera ser extendido fácilmente.
Posteriormente, se construyó el correspondiente módulo de extracción, transformación y
carga así como los informes a través de los cuales los usuarios finales podrán explotarán la
información.
Palabras clave: Redes sociales, Inteligencia de negocio, Bases de datos orientadas a grafos
iii
Abstract
In the last few years, services based on social networks such as Facebook or Twitter have
experienced great growth. If data from these networks is visualized, it looks like a graph in
which nodes represent users and edges the relationships between them. As a
consequence, these applications generally use graph-oriented database management
systems to store the information. This is the case of Twitter, which uses a graph-oriented
management system called FlockDB; or like Facebook, which integrates applications based
on graphs using the Open Graph protocol to provide part of its functionality.
Therefore, the purpose of this Degree Project has been the development of a
Business Intelligence tool which included the definition and calculation of different
interesting indicators to analyze social networks. With that in mind, some real datasets
with different features and sizes were used and stored using Neo4J, a graph-oriented
database management system. A data warehouse was designed too as a support to the
Business Intelligence tool facing the impossibility of answering some queries using only
the graph database and in order to extend easily the tool. Afterwards, an extraction,
transformation and load module was built just like the reports through which the end user
will analyze the information.
iv
Índice
Índice de ilustraciones ..................................................................................................................................... viii
1 Introducción ................................................................................................................................................... 1
1.1 Motivación ............................................................................................................................................ 1
1.2 Objetivo ................................................................................................................................................. 2
1.3 Fases del proyecto............................................................................................................................. 2
2 Bases de datos orientadas a grafos ....................................................................................................... 4
2.1 Introducción ........................................................................................................................................ 4
2.2 Modelos de datos basados en grafos ......................................................................................... 7
2.2.1 Modelos más representativos.................................................................................................. 7
2.2.2 Características del modelo basado en grafos .................................................................... 9
2.2.3 Lenguajes de manipulación y consulta .............................................................................. 10
2.3 Sistemas gestores de bases de datos orientadas a grafos............................................... 13
2.3.1 DEX ................................................................................................................................................... 13
2.3.2 HypergraphDB ............................................................................................................................. 14
2.3.3 OrientDB ......................................................................................................................................... 14
2.3.4 InfiniteGraph ................................................................................................................................ 15
2.3.5 Neo4J ................................................................................................................................................ 16
2.3.6 Selección del gestor ................................................................................................................... 17
3 Business Intelligence ................................................................................................................................ 18
3.1 Introducción ...................................................................................................................................... 18
3.2 Fases de desarrollo de una solución BI .................................................................................. 19
3.2.1 Definición de requisitos ........................................................................................................... 19
3.2.2 Fuentes de información ........................................................................................................... 20
3.2.3 Proceso ETL .................................................................................................................................. 20
3.2.4 Almacén de datos o data warehouse ................................................................................... 21
3.2.5 Explotación de los datos .......................................................................................................... 23
3.3 Herramientas comerciales BI ..................................................................................................... 24
4 Especificación funcional .......................................................................................................................... 27
4.1 Requisitos funcionales: métricas .............................................................................................. 27
4.1.1 Métricas de alcanzabilidad ..................................................................................................... 28
4.1.2 Métricas de compromiso ......................................................................................................... 29
4.1.3 Métricas de influencia ............................................................................................................... 30
4.2 Conjuntos de datos.......................................................................................................................... 30
4.2.1 MovieLens ...................................................................................................................................... 30
4.2.2 Flickr ................................................................................................................................................ 31
4.2.3 DBLP................................................................................................................................................. 33
5 Diseño de la solución ................................................................................................................................ 36
5.1 Bases de datos en grafo................................................................................................................. 36
v
5.1.1 Base de datos del conjunto de datos MovieLens ........................................................... 36
5.1.2 Base de datos del conjunto de datos Flickr ...................................................................... 37
5.1.3 Base de datos del conjunto de datos DBLP ...................................................................... 38
5.2 Almacén de datos............................................................................................................................. 40
5.2.1 Tabla USER_DIMENSION .......................................................................................................... 40
5.2.2 Tabla GROUP_USER .................................................................................................................... 40
5.2.3 Tabla USERSNAPSHOT .............................................................................................................. 40
5.2.4 Tabla USER_SESSION ................................................................................................................. 41
5.2.5 Tabla AGE ....................................................................................................................................... 41
5.2.6 Tabla AREA .................................................................................................................................... 41
5.2.7 Tabla OCUPPATION .................................................................................................................... 41
5.2.8 Tabla PRODUCT_DIMENSION ................................................................................................. 41
5.2.9 Tabla PRODUCTSNAPSHOT ..................................................................................................... 41
5.2.10 Tabla CLASSIFICATION ........................................................................................................ 41
5.2.11 Tabla GENRE ............................................................................................................................ 41
5.2.12 Tabla DATE_DIMENSION ..................................................................................................... 41
5.2.13 Tabla HOUR_DIMENSION .................................................................................................... 42
5.2.14 Tabla FRIENDSHIP ................................................................................................................. 42
5.2.15 Tabla SCORE ............................................................................................................................. 42
5.2.16 Tabla RANGE ............................................................................................................................ 42
5.3 Proceso ETL ....................................................................................................................................... 42
6 Generación de informes .......................................................................................................................... 48
6.1 Herramienta Reporting Services............................................................................................... 48
6.2 Descripción de informes ............................................................................................................... 48
6.2.1 Informe de crecimiento de usuarios ................................................................................... 50
6.2.2 Informe de crecimiento de usuarios activos ................................................................... 51
6.2.3 Informe de velocidad de propagación................................................................................ 51
6.2.4 Informe de actividad en la red .............................................................................................. 52
6.2.5 Informe de frecuencia de publicación ................................................................................ 52
6.2.6 Informe de frecuencia de voto .............................................................................................. 53
6.2.7 Informe de frecuencia de nuevas amistades ................................................................... 54
6.2.8 Informe de proximidad ............................................................................................................ 54
6.2.9 Informe de crecimiento de seguidores .............................................................................. 55
6.2.10 Informe del número de número de visitas, comentarios y votos recibidos por
los productos de un usuario .................................................................................................................. 56
6.2.11 Informe del número de visitas, comentarios y votos recibidos por un
producto……. ................................................................................................................................................ 57
6.2.12 Informe de reciprocidad ..................................................................................................... 58
6.2.13 Informe de fortaleza de los enlaces ................................................................................ 58
vi
6.2.14 Informe de fidelidad de amigos ....................................................................................... 59
6.2.15 Informe del número de votos por proximidad .......................................................... 60
6.2.16 Listas TOP10 ............................................................................................................................ 61
6.3 Seguridad ............................................................................................................................................ 63
6.4 Mejoras de rendimiento................................................................................................................ 64
7 Conclusiones y líneas futuras ................................................................................................................ 65
7.1 Conclusiones ...................................................................................................................................... 65
7.2 Líneas futuras.................................................................................................................................... 66
Bibliografía ............................................................................................................................................................ 67
Anexo I. Captura del almacén de datos diseñado .................................................................................. 70
vii
Índice de ilustraciones
Ilustración 2.1 Representación de un grafo dirigido a la izquierda y de un grafo no
dirigido a la derecha ............................................................................................................................................ 5
Ilustración 2.2 Evolución de los modelos basados en grafos ........................................................... 7
Ilustración 2.3 Grafo diseñado siguiendo el modelo Property Graph ........................................... 9
Ilustración 2.4 Script para importar un grafo utilizando Gremlin ............................................... 11
Ilustración 2.5 Script para consultar sobre el grafo importado utilizando Gremlin ............ 12
Ilustración 2.6 Script para reccorer un grafo utilizando Gremlin ................................................ 12
Ilustración 2.7 Script de una consulta realizada con el lenguaje SPARQL ................................ 12
Ilustración 2.8 Consulta de OrientDB que obtiene los actores que han trabajado en
películas cuyo productor es J.J. Abrams..................................................................................................... 15
Ilustración 2.9 Consulta Cypher que retorna los amigos y los amigos de amigos de cada
nodo .......................................................................................................................................................................... 16
Ilustración 3.1 Componentes de una solución BI ................................................................................ 19
Ilustración 3.2 Esquema multidimensional en estrella .................................................................... 22
Ilustración 3.3 Cubo OLAP ............................................................................................................................ 24
Ilustración 4.1 Grafo genérico ..................................................................................................................... 27
Ilustración 5.1 Grafo del conjunto de datos MovieLens ................................................................... 36
Ilustración 5.2 Grafo del conjunto de datos Flickr.............................................................................. 38
Ilustración 5.3 Grafo del conjunto de datos DBLP .............................................................................. 39
Ilustración 5.4 Data staging para el conjunto de datos MovieLens ............................................. 43
Ilustración 5.5 Data staging para el conjunto de datos Flickr ....................................................... 44
Ilustración 5.6 Data staging para el conjunto de datos DBLP........................................................ 44
Ilustración 5.7 Proceso de carga en el data staging de Flickr ........................................................ 45
Ilustración 5.8 Proceso de carga de la tabla FRIENDSHIP ............................................................... 46
Ilustración 5.9 Proceso de carga de los datos del data staging de Flickr en el almacén de
datos ......................................................................................................................................................................... 47
Ilustración 5.10 Eliminación de las votaciones de Flickr con datos erróneos de fecha y
hora........................................................................................................................................................................... 47
Ilustración 6.1 Identificación de usuario en la interfaz web .......................................................... 49
Ilustración 6.2 Formulario de inicio de la interfaz ............................................................................. 49
Ilustración 6.3 Carpeta de informes sobre Flickr................................................................................ 50
Ilustración 6.4 Carpeta de informes con métricas de alcance ....................................................... 50
Ilustración 6.5 Informe de crecimiento de usuarios .......................................................................... 51
Ilustración 6.6 Gráfica del crecimiento de usuarios........................................................................... 51
Ilustración 6.7 Informe de velocidad de propagación ...................................................................... 52
Ilustración 6.8 Informe de actividad ........................................................................................................ 52
Ilustración 6.9 Informe de frecuencia de publicación ....................................................................... 53
Ilustración 6.10 Informe de frecuencia de voto................................................................................... 53
Ilustración 6.11 Gráfica de porcentaje de voto por rango de edad ............................................. 54
Ilustración 6.12 Informe de frecuencia de amistades ....................................................................... 54
Ilustración 6.13 Informe de proximidad en amistades .................................................................... 55
Ilustración 6.14 Gráfica de proximidad en amistades ...................................................................... 55
Ilustración 6.15 Informe de proximidad en votos .............................................................................. 55
Ilustración 6.16 Informe de crecimiento de seguidores .................................................................. 56
Ilustración 6.17 Informe del total de comentarios, visitas y votos recibidos por usuario 56
Ilustración 6.18 Informe del máximo de comentarios, visitas y votos recibidos por
usuario..................................................................................................................................................................... 57
Ilustración 6.19 Informe del número de votos por producto ........................................................ 57
Ilustración 6.20 Gráfica de la valoración media agrupada por sexo ........................................... 58
Ilustración 6.21 Gráfica del número de votos agrupado por sexo ............................................... 58
Ilustración 6.22 Informe de reciprocidad de amistades .................................................................. 59
Ilustración 6.23 Informe de fortaleza de los enlaces ......................................................................... 59
viii
Ilustración 6.24 Informe de fidelidad de amigos ................................................................................ 60
Ilustración 6.25 Informe de proximidad de voto ................................................................................ 60
Ilustración 6.26 Informe de los 10 productos más y mejor valorados ...................................... 61
Ilustración 6.27 Informe de los 10 usuarios con más seguidores............................................... 61
Ilustración 6.28 Informe de los 10 usuarios con más productos ................................................ 62
Ilustración 6.29 Informe de los 10 días con mayor actividad....................................................... 62
Ilustración 6.30 Informe de las 10 horas con mayor actividad.................................................... 63
Ilustración 6.31 Interfaz web vista por un usuario ............................................................................ 63
Ilustración 6.32 Interfaz web vista por un administrador.............................................................. 64
Ilustración 6.33 Cubo diseñado para calcular el número de votos recibido por usuario .. 64
Ilustración A.1 Diseño del almacén de datos ........................................................................................ 70
ix
1 Introducción
Este primer capítulo describe el contexto en el que se enmarca este Proyecto Fin de
Carrera exponiendo las necesidades de las organizaciones derivadas de su presencia en
redes sociales. Asimismo, se enumeran sus objetivos y se describen las fases llevadas a
cabo para su realización.
1.1 Motivación
A lo largo de los últimos años, y gracias a la aparición y al éxito de las redes sociales, se ha
producido un gran auge del llamado marketing viral. Este marketing utiliza información
procedente de medios como blogs, correos electrónicos y, más recientemente, redes
sociales con objeto de mejorar la posición de las empresas en el mercado. Analizando la
información transmitida en este “boca a boca” electrónico, las empresas y organizaciones
pueden conocer información muy relevante y en tiempo real que les ayude en la toma de
decisiones como, por ejemplo, la valoración de sus productos, las críticas recibidas,
conocer quiénes son sus clientes fieles, el perfil de sus detractores y qué clientes son más
influyentes así como compararse con sus competidores. Otra de las ventajas que supone
este tipo marketing es su coste, muy bajo en comparación con el tradicional.
Uno de los motivos que ha impulsado el marketing viral es el éxito que han
experimentado las redes sociales en los últimos años. Cada vez son más las empresas
presentes en ellas a través de, por ejemplo, páginas en Facebook o perfiles en Twitter. Los
datos extraídos de estas redes sociales (por ejemplo, comentarios de opinión o perfiles de
los usuarios que siguen la página) unidos a datos transaccionales permiten a las empresas
extraer información referente a las características de los clientes fieles y potenciales
(datos demográficos como la edad, el sexo o el nivel de estudios), determinar qué alcance
tienen determinados productos (qué valoración reciben o a qué velocidad se propaga
información referente a ellos), conocer qué usuarios son más influyentes en una red social
(por ejemplo, por cada seguidor de una página ver cuántos de sus amigos se han unido a la
página posteriormente o cuántos comentarios reciben las publicaciones que realiza) o cuál
es el grado de compromiso de los usuarios (si el número de seguidores crece o no, cuántas
visitas realizan, con qué frecuencia publican contenido, etc.). Esta información resulta muy
útil a las empresas para, por ejemplo, diseñar campañas de marketing, determinar el
volumen de fabricación de un producto o comprobar si un producto ha cumplido las
expectativas de los usuarios. Para este fin, lo más adecuado es la definición de una serie de
métricas o indicadores que permitan visualizar la información mencionada previamente
con objeto de utilizarla durante los procesos de toma de decisiones. Dado que la
información procede de muy diversas fuentes (redes sociales, servicios transaccionales de
la organización y de otras fuentes disponibles en la empresa), una solución basada en un
almacén de datos o data warehouse será la más apropiada.
1
CAPÍTULO 1. INTRODUCCIÓN 2
1.2 Objetivo
El objetivo de este Proyecto Fin de Carrera es la construcción de una aplicación de
inteligencia de negocio que permita a las empresas y organizaciones analizar la
información procedente de las redes sociales en las que participan. Esta herramienta debe
cumplir con las siguientes premisas:
1. Estudio y análisis del problema. Esta fase estuvo orientada a investigar los
trabajos desarrollados hasta la fecha en el campo del marketing viral así como
conocer qué tipo de bases de datos dan soporte a las redes sociales y el tipo de
información que habitualmente se almacena en ellas. En concreto, las tareas
abordadas fueron las siguientes:
a. Búsqueda bibliográfica: obtención de información sobre bases de
datos orientadas a grafos y sobre indicadores para extraer información
de redes sociales.
b. Análisis comparativo de gestores de bases de datos orientadas a
grafos.
c. Búsqueda de conjuntos de datos procedentes de redes sociales:
para conseguir una mayor generalidad en la solución, los datos
buscados debían ser de diversa índole y con ciertas características de
forma que, además, pudieran ser aprovechados lo máximo posible a la
hora de extraer información de ellos.
2. Especificación de requisitos. Esta fase tuvo como objetivo la definición de las
métricas a las que la solución final debía dar respuesta. Para ello, se estudiaron
diferentes artículos en los que se recogían los indicadores más utilizados en el
ámbito de las redes sociales y el marketing viral y se propuso un conjunto de
indicadores generales.
CAPÍTULO 1. INTRODUCCIÓN 3
2.1 Introducción
Las bases de datos relacionales llevan más de 30 años dominando el mercado de la gestión
de datos transaccional. Sin embargo, el incremento de la cantidad de información a
almacenar y la heterogeneidad de los datos a procesar, evidenciaron sus limitaciones. En
concreto, fueron las redes sociales las que impulsaron un nuevo concepto de base de datos
conocido como NoSQL o BigData y que se diferencia del modelo relacional en varios
aspectos:
Con estas características se persigue dar una mayor libertad a la hora de diseñar bases de
datos, puesto que no exige que se organice la información en tablas y, además, se evitan los
cuellos de botella que pueden producirse si, por ejemplo, se aplican las propiedades ACID
a un gran número de transacciones.
Dentro de estas bases de datos NoSQL destacan las orientadas a clave-valor3, las
orientadas a columnas4, las orientadas a documentos5 y las orientadas a grafos, siendo
estas últimas las empleadas para la realización de este proyecto y de las que se hablará a lo
largo de este capítulo.
A grandes rasgos, una base de datos orientada a grafos consiste en almacenar los
datos en un grafo y realizar su manipulación y consulta mediante operaciones propias de
ellos. En matemáticas, un grafo se define como un conjunto de objetos (llamados nodos o
vértices) que pueden unirse mediante enlaces (conocidos como aristas o arcos), los cuales
representan relaciones binarias entre nodos. Matemáticamente, se definiría así:
1
Sentencia del lenguaje SQL que permite combinar registros de dos o más tablas pertenecientes a una
base de datos relacional.
2
Mediante las propiedades de atomicidad, consistencia, aislamiento y durabilidad se garantiza que una
serie de operaciones sean consideradas como una transacción.
3
Permite el almacenamiento sin seguir un esquema definido: cada dato se introduce por su clave
haciendo que su valor pueda ser cualquier cadena de bits.
4
Se asemeja al modelo relacional pero, a diferencia de este, almacena los datos por columnas en vez de
por filas.
5
No se almacenan datos, sino documentos identificados con una clave única.
4
CAPÍTULO 2. BASES DE DATOS ORIENTADAS A GRAFOS 5
a b a b
Asimismo, los grafos disponen de propiedades como la adyacencia (si dos nodos están
conectados mediante una arista se dice que son adyacentes) y los caminos, los cuales
indican un recorrido entre nodos adyacentes. Estos últimos son de vital importancia en
muchas aplicaciones, como por ejemplo en medios de transporte para estimar qué ruta es
la más corta o en una red social para calcular cuántas relaciones de amistad separan a un
usuario de otro. Estos caminos, a su vez, pueden tener diferentes costes o pesos que se
calculan en base a la suma del coste asignado a cada arista. Debido a su trascendencia,
existe una gran cantidad de algoritmos6 para calcular el camino más corto y/o menos
costoso existente entre dos nodos.
Por su naturaleza y las operaciones que se pueden realizar sobre ellos, el uso de
grafos como estructura de datos supone una serie de ventajas, algunas de las cuales se
detallan a continuación:
Modelo más natural. En algunos ámbitos, un grafo muestra los datos de una
forma más cercana a la realidad, a la vez que permite almacenar todos los datos de
una entidad en el nodo que la representa. Además, la información referente a las
relaciones de cada una de estas entidades puede visualizarse de forma sencilla
puesto que aparecen representadas como aristas unidas al nodo correspondiente a
la entidad.
Consultas referidas a la estructura. Como se mencionó previamente, una de las
principales características de los grafos son los caminos y, más concretamente, el
cálculo del camino más corto y/o menos costoso. La posibilidad de realizar este
tipo de consultas referentes a la estructura proporciona a los usuarios un alto nivel
de abstracción puesto que no es necesario que conozcan la estructura de la base de
datos hasta el más mínimo detalle para llevar a cabo operaciones de este tipo.
6
Algunos de los algoritmos más importantes en el recorrido de grafos son la búsqueda en anchura (BFS),
la búsqueda en profundidad (DFS), la búsqueda A*, el algoritmo de Dijkstra o el algoritmo de Floyd-
Warshall.
CAPÍTULO 2. BASES DE DATOS ORIENTADAS A GRAFOS 6
A la hora de implementar estas bases de datos, varios autores han definido diversas
formas de llevarlo a cabo. Una de ellas, la descrita por Hidders y Paradaens (1993), limita
el uso de los grafos a la representación de instancias estando los datos almacenados en
bases de datos construidas sobre otros modelos. De forma similar las definen Graves,
Bergeman y Lawrence (1995), pero definiendo la base de datos sobre la que trabaja el
grafo como una base perteneciente al modelo relacional. Contrarias a estas definiciones
son las dadas por Levene y Loizou (1995), para los cuales el grafo funcionaría como la
estructura de datos subyacente y sus instancias se trabajarían mediante otros modelos; y
por Amam y Scholl (1992), según los cuales el grafo sólo tendría la función de organizar
los datos. Otra implementación es la descrita por Gyssens, Paredaens, Den Busshce y Gucht
(1990), que ofrece la posibilidad de utilizar una base de datos orientada a objetos como si
fuera orientada a grafos definiendo para ello objetos que representen aristas, nodos y
grafos completos así como sus operaciones.
7
Véase https://developers.facebook.com/docs/getting-started/graphapi/
CAPÍTULO 2. BASES DE DATOS ORIENTADAS A GRAFOS 7
En los siguientes apartados se describen brevemente algunos de los modelos que aparecen
en la Ilustración 2.2 así como las características que debe cumplir cualquier modelo
basado en grafos y los lenguajes de consulta más utilizados en la actualidad.
Un par de años más tarde, se presenta el modelo O2 (Lécluse, Richard, & Vélez,
1988), orientado a objetos pero basado en una estructura de grafos. Similar a este modelo
es el conocido como GOOD (Gyssens, Paredaens, Den Busshce, & Gucht, 1990), también
CAPÍTULO 2. BASES DE DATOS ORIENTADAS A GRAFOS 8
orientado a objetos y basado en grafos cuyo objetivo era utilizar grafos tanto para la
manipulación como para la representación.
Este último modelo, GOOD, tuvo una gran influencia en los modelos que surgieron
más tarde: GMOD (Andries, Gemis, Paredaens, Thyssens, & Den Bussche, 1992) propone
nuevos conceptos de utilidad a la hora de representar las bases de datos orientadas a
objetos en las interfaces de usuario; Gram (Amann & Scholl, 1992) está centrado en la
representación de datos hiper-texto8; PaMal (Gemis & Paredaens, 1993) extiende GOOD
permitiendo la representación de tuplas y conjuntos; GOAL (Hidders & Paradaens, 1993)
complementa el modelo GOOD con nodos de asociación; GLog (Paredaens, Peelman, &
Tanca, 1995) propone un lenguaje declarativo para trabajar con grafos; y finalmente se
propone GDM (Hidders, 2002), que completa el modelo añadiendo la posibilidad de
relaciones n-arias.
Además del modelo GOOD, destaca otra corriente cuyo objetivo era la
generalización mediante el uso de grafos. La primera aproximación a este objetivo fue el
modelo Hypernode (Levene & Poulovassilis, 1990), que introdujo los grafos anidados o
hiper-grafos, es decir, grafos en los que cada nodo (también llamados en este modelo
hiper-nodos) puede contener, a su vez, grafos. Esta misma idea se utilizó para representar
redes multi-escalares (Mainguenaud, 1992) y datos genéticos (Graves, Bergeman, &
Lawrence, 1995). Otro modelo importante que también se basa en Hypernode es GROOVY
(Levene & Poulovassilis, 1991), que utiliza un modelo orientado a objetos pero se
formaliza mediante el uso de nodos anidados. Este concepto de grafos anidados también
se utiliza en otros muchos modelos, tanto en la consulta y visualización de los datos como
en el acceso a ellos.
permitiendo que entre esos dos nodos existan relaciones de más de un tipo. Un ejemplo de
grafo diseñado siguiendo este modelo es el que se muestra en la Ilustración 2.3.
Todos los grafos de este modelo tienen un conjunto de vértices y un conjunto de aristas.
Cada uno de los vértices se caracteriza por disponer de un identificador único (en la
imagen, el número que aparece dentro de cada nodo); un conjunto de aristas (tanto las
entrantes como las salientes); y una colección de propiedades definidas por mapas clave-
valor (en el grafo de la imagen, las propiedades serían name, age y lang). En el caso del
conjunto de las aristas, cada una debe disponer también de un identificador único
(indicado en el ejemplo como el número que aparece sobre cada arista); un vértice origen
y un vértice destino; una etiqueta indicando de qué tipo es cada arista (en el caso del grafo
de ejemplo los tipos serían created y knows); y una colección de propiedades que, al igual
que en los nodos, son mapas clave-valor (en el ejemplo, todas las aristas tienen la misma
propiedad, weight, independientemente del tipo al que pertenecen).
características, existen ciertos aspectos que deberá cumplir todo modelo: cómo
representar las entidades, cómo representar las relaciones y cómo definir constantes de
integridad.
9
Clave formada por una o varias columnas de una tabla que hace referencia a una o varias columnas de
otra tabla.
CAPÍTULO 2. BASES DE DATOS ORIENTADAS A GRAFOS 11
gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> v = g.v(1)
==>v[1]
10
JDBC (Java Database Connectivity) es una API para la ejecución de operaciones sobre bases de datos
desde el lenguaje de programación Java.
CAPÍTULO 2. BASES DE DATOS ORIENTADAS A GRAFOS 12
gremlin> v.outE
==>e[7][1-knows->2]
==>e[9][1-created->3]
==>e[8][1-knows->4]
Ilustración 2.5 Script para consultar sobre el grafo importado utilizando Gremlin
gremlin> v.out.out
==>v[5]
==>v[3]
Si bien el uso de Gremlin está muy extendido debido a la gran cantidad de gestores
que siguen el modelo propuesto por Blueprints, existen otros lenguajes de consulta sobre
grafos. Uno de ellos es SPARQL, ideado para realizar consultas sobre RDF (Resource
Definition Framework), un estándar diseñado para la representación de formato de datos
de la Web mediante grafos etiquetados y dirigidos. Por este motivo, SPARQL puede
utilizarse para realizar consultas sobre bases de datos almacenadas en grafos siempre que
el formato de dicho grafo sea el mismo que utiliza RDF. Además de la realización de
consultas, también permite operaciones de creación, actualización y eliminación de datos.
El objetivo de esta consulta es obtener todos los nodos relacionados con el nodo de
identificador 1 mediante una relación del tipo knows. El resultado serán los
identificadores de todos los nodos relacionados con el nodo 1 mediante este tipo de
relación y que en la consulta aparecen representados mediante la variable ?x.
Existen diferentes SGBDs en función del tipo de base de datos con el que trabajen,
las características de la máquina sobre la que funcionan o las necesidades de los usuarios.
A la hora de elegir con qué gestor orientado a grafos se iba a realizar este proyecto se
tuvieron en cuenta tres aspectos haciendo hincapié en los detalles siguientes:
- Además de trabajar sobre bases de datos orientadas a grafos, estos grafos debían
cumplir ciertas características. Entre estas características destacaba el hecho de
que permitieran atributos en los nodos y en las aristas. La mayoría de los gestores
que se estudiaron permitían atributos en los nodos pero, sin embargo, en muchos
de ellos no ocurría lo mismo con las aristas. Gestores muy conocidos como
AllegroGraph11, VertexDB12 o BigData13 no cumplían esta característica, por lo que
fueron descartados.
- Con los gestores que cumplían estas características mencionadas en el punto
anterior, se examinaron aquellos que permitían el uso de lenguajes de
programación conocidos y multiplataforma, como Java y C++.
- La naturaleza open-source de los gestores fue otro factor a la hora de decidir: se
eligieron aquellos que fueran gratuitos o, al menos, dispusieran de versiones
gratuitas que cubrieran las acciones a realizar.
2.3.1 DEX
Desarrollado a partir del año 2006 por el grupo DAMA-UPC (Data Management de la
Universidad Politécnica de Cataluña), DEX14 es un sistema gestor de bases de datos
orientadas a grafos programado sobre el lenguaje C++. Las bases de datos con las que
trabaja quedan almacenadas en disco y hace uso de grafos dirigidos, etiquetados y con
atributos tanto en nodos como en aristas, es decir, sigue el modelo Property Graph visto en
el apartado 2.2.1 y trabaja sobre la interfaz Blueprints. Si bien al basarse en grafos se
engloba dentro del paradigma NoSQL, soporta parcialmente las transacciones ACID
aunque este paradigma no garantice que se cumplan.
11
Véase http://www.franz.com/agraph/allegrograph
12
Véase http://data.story.lu/tag/vertexdb
13
Véase http://www.systap.com/bigdata.htm
14
Véase http://www.sparsity-technologies.com/dex
CAPÍTULO 2. BASES DE DATOS ORIENTADAS A GRAFOS 14
Uno de los motivos por los que las bases de datos NoSQL se alejan de este tipo de
transacciones es por los problemas que suponen en el rendimiento al trabajar con grandes
cantidades de datos. Sin embargo, una de las principales características de este gestor es
el rendimiento que, si bien no se obtiene sustituyendo las propiedades ACID, se consigue
por medio de otras técnicas, como la división del grafo en varias partes independientes
entre sí reduciendo de esta forma la operaciones de entrada/salida en disco; y el
almacenamiento de los nodos y las aristas de forma similar a bitmaps15, lo que permite
técnicas de compresión más eficientes.
Con estas medidas para la mejora del rendimiento, DEX permite el trabajo con
bases de datos que, además de ser de gran tamaño, soporten una gran concurrencia de
usuarios puesto que consigue tiempos de respuesta muy rápidos.
Aunque está programado sobre el lenguaje C++, ofrece su API, además de en C++,
en Java y .NET, haciendo de él un gestor multiplataforma. Por ello, a la hora de comenzar a
trabajar con DEX, se deberá descargar la librería correspondiente al lenguaje que se
utilizará y se indicará, además, cuál será el tamaño de la base de datos puesto que se
ofrecen varias posibilidades de descarga: desde el tamaño máximo soportado por la
versión gratuita (un millón de objetos) hasta los tamaños correspondientes a las versiones
de pago, que llegan a alcanzar los diez millones.
2.3.2 HypergraphDB
Aunque HypergraphDB16 tiene como principal objetivo las bases de datos orientadas a
grafos, también permite trabajar con bases de datos semánticas, relacionales y orientadas
a objetos, lo que lo define como un gestor muy flexible.
Respecto al tipo de grafos con los que trabaja, utiliza el modelo Hypernode del que
se habló en el apartado 2.2.1, pero con ciertas modificaciones de forma que una arista,
además de poder apuntar a varios nodos, también pueda apuntar a varias aristas.
2.3.3 OrientDB
Lanzado en el año 2010 y escrito en Java (considerado, por tanto, multiplataforma),
OrientDB17 es un gestor de base de datos que, aunque orientado a la gestión de
documentos, soporta trabajar con bases de datos orientadas a grafos ya que las relaciones
entre documentos se manejan como si fueran grafos. Además, permite otorgar diferentes
grados de flexibilidad al esquema y crear roles de usuario para garantizar la seguridad.
15
Formato de imágenes. Véase http://es.wikipedia.org/wiki/Imagen_de_mapa_de_bits
16
Véase http://www.hypergraphdb.org/index
17
Véase http://www.orientdb.org/
CAPÍTULO 2. BASES DE DATOS ORIENTADAS A GRAFOS 15
que lo diferencia (en la Ilustración 2.8 se muestra un pequeño ejemplo de este lenguaje).
Para conseguir solventar la pérdida de rendimiento que supone el uso de ACID, utiliza
algoritmos de indexado propios de bases de datos documentales, como MVRB-Tree,
combinación del árbol B+18 y Red-Black19, con los que se consiguen inserciones y
búsquedas rápidas.
La estructura de grafos que emplea sigue el modelo Property Graph y, además, está
construido sobre la interfaz Blueprints, lo que permite el uso de todas las características
de ésta además de su lenguaje, Gremlin.
select from (
traverse Movie.actors, Actor.movies from (
select from Movie where producer = "J.J. Abrams"
) while $depth <= 3
) where @class = 'Movie'
Ilustración 2.8 Consulta de OrientDB que obtiene los actores que han trabajado en películas cuyo productor
es J.J. Abrams
2.3.4 InfiniteGraph
InfiniteGraph es un gestor de bases de datos orientadas a grafos con núcleo programado
en C++ pero implementado en Java, lo que hace de él un gestor multiplataforma. Además,
sigue el modelo de grafos Property Graph y utiliza la interfaz Blueprints.
18
Tipo de estructura de datos en forma de árbol utilizada en la representación de colecciones ordenadas
de objetos y que permite inserciones y borrados eficientes. Muy utilizados para la indexación.
19
Tipo de árbol binario de búsqueda utilizado para organizar información compuesta por datos
comparables.
CAPÍTULO 2. BASES DE DATOS ORIENTADAS A GRAFOS 16
2.3.5 Neo4J
Implementado en Java y basado en grafos, Neo4J20 nació en el 2007 y hoy en día es uno de
los gestores de bases de datos orientadas a grafos más extendidos, siendo utilizado por
empresas tan conocidas como Adobe, Cisco, Deutsch Telekom o Infojobs.
Ilustración 2.9 Consulta Cypher que retorna los amigos y los amigos de amigos de cada nodo
A la hora de trabajar con Neo4J, existe la posibilidad de integrarlo en Java, para lo que se
deberán descargar sus librerías; o instalando su servidor, de forma que se pueda trabajar
con él mediante consola. En el primer caso, también se da la posibilidad de trabajar con
Neo4J de forma gráfica en lugar de hacerlo sólo mediante código. Para ello, proporciona
una clase Java que implementa un servidor al que se accede desde un explorador web y
que permite diversas operaciones como la visualización del grafo, un listado con las
relaciones de cada nodo, realizar consultas utilizando Cypher o Gremlin o la creación y
eliminación de índices.
20
Véase http://www.neo4j.org/
21
Licencia de software más utilizada que permite a los usuarios la libertad de usar, compartir y modificar
el software.
22
Similar a las licencias GPL pero añadiendo la obligación de distribuir el software si éste se ejecuta para
ofrecer servicios a través de una red de ordenadores.
CAPÍTULO 2. BASES DE DATOS ORIENTADAS A GRAFOS 17
tarea, Neo4J proporciona una herramienta en la que, a través del número de nodos, aristas
y propiedades de cada uno de ellos calcula los requisitos mínimos de hardware para que la
solución implementada sea lo más eficiente posible.
Con los gestores restantes se tuvo en cuenta, en primer lugar, la cantidad de datos
con la que se iba a trabajar y las licencias bajo las que trabajaba cada uno de ellos.
Teniendo en cuenta esto, se eliminó el gestor DEX de la lista de posibilidades debido a que
su versión gratuita sólo permitía el trabajo con un millón de objetos, cantidad que iba a ser
sobrepasada por los conjuntos de datos con los que se iba a trabajar.
El siguiente factor a estudiar fueron los lenguajes de consulta con los que
trabajaban los tres gestores restantes. Aunque todos ofrecían la posibilidad de utilizar
Gremlin, se optó por asegurar la posibilidad de poder trabajar con otros lenguajes en caso
de que la implementación de algunas consultas fuera demasiado compleja para su
implementación en Gremlin. Puesto que tanto Neo4J como OrientDB ofrecían, además de
Gremlin, lenguajes de consulta propios con una sintaxis más natural, se desechó el gestor
InfiniteGraph, que tan sólo ofrecía el lenguaje de lógica de predicados.
Entre las dos últimas opciones se eligió, por su lenguaje SQL adaptado y el
rendimiento que prometían sus características, el gestor OrientDB. Las desventajas de esta
elección aparecieron cuando, al comenzar a trabajar con él, surgieron diferentes dudas y
no se encontró suficiente información al respecto. Posiblemente debido a su juventud y a
su pertenencia a una empresa pequeña, OrientDB aún no es lo suficientemente conocido
como para encontrar soluciones a los problemas que pueden darse. Con este pensamiento
práctico, y viendo las características y la gran cantidad de información y adeptos de Neo4J,
se optó finalmente por este gestor.
3 Business Intelligence
En este capítulo se realiza una breve introducción al concepto Business Intelligence, se
enumeran los beneficios que aporta, se describen las fases necesarias para el desarrollo de
una solución de este tipo y se especifican las herramientas utilizadas en la realización de
este proyecto.
3.1 Introducción
En la actualidad, las empresas cada vez disponen de más información procedente de
fuentes internas (sistemas corporativos, aplicaciones departamentales, etc.) y externas
(INE, INEM, encuestas, redes sociales, etc.), lo que sumado a la competitividad y a la
globalización complica sus posibilidades de adaptarse y sobrevivir a los cambios del
entorno. Es por ello que las empresas deben encontrar la forma de anticiparse a la
competencia y fidelizar clientes así como reducir y optimizar procesos. Estos objetivos
hacen evidente la necesidad de acceder a la información de forma ágil y rápida.
Otra definición de Business Intelligence (Gartner Group, 2006), lo define como “un
proceso interactivo para explorar y analizar información estructurada sobre un área,
normalmente almacenada en un data warehouse, con el objetivo de descubrir tendencias o
patrones, a partir de los cuales derivar ideas y extraer conclusiones. El proceso de BI incluye
comunicar los descubrimientos y efectuar los cambios”.
Por su parte, The Data Warehouse Institute define el BI como “un término
paraguas que abarca los procesos, las herramientas y las tecnologías para convertir datos en
información, información en conocimiento y planes para conducir de forma eficaz las
actividades de los negocios”.
Las soluciones Business Intelligence aportan una serie de beneficios que pueden
clasificarse, según Bill Whittemore (2003) y Gabriel Fuchs (2003), en tangibles, intangibles
y estratégicos:
18
CAPÍTULO 3. BUSINESS INTELLIGENCE 19
23
ERP (Enterprise Resource Planning) es un sistema de planificación de recursos empresariales que
integra y maneja asuntos relacionados con operaciones de producción y distribución.
24
CRM (Customer Relationship Management) es un sistema informático de apoyo a la gestión de las
relaciones con los clientes en aspectos como las ventas y el marketing.
CAPÍTULO 3. BUSINESS INTELLIGENCE 21
datos suele deberse, entre otros, a valores por defecto, errores humanos y modelos
de datos no normalizados. Si se desea una solución en la que los resultados
mostrados sean coherentes y fiables, es necesario que los datos estén “limpios”,
esto es, que sean datos de calidad. Para ello, deberán ser precisos, íntegros,
coherentes, completos, válidos, disponibles y accesibles. Este punto de la
transformación es de vital importancia ya que, como afirma Bill Inmon (2006), “las
organizaciones actúan bajo la suposición de que la información de la que disponen es
precisa y válida. Si la información no es válida, entonces no pueden responder a las
decisiones basadas en ella”.
3. Transformación. Una vez que los datos están “limpios”, el siguiente paso es
transformarlos mediante cambios de formato, sustitución de códigos y cálculo de
valores derivados y agregados (estos últimos habitualmente se calculan y se
almacenan para mejorar el rendimiento de las consultas realizadas sobre el
almacén de datos). En esta etapa también se incluye la definición del nivel de grano
o detalle, concepto que se definirá en el apartado siguiente.
4. Integración. En este momento los datos se cargan en el almacén de datos. Es
fundamental que este paso se lleve a cabo correctamente.
5. Actualización. Será necesario definir con qué periodicidad se realizarán nuevas
cargas de datos al almacén.
Para llevar a cabo todas estas tareas que se acaban de definir, existen herramientas ETL
que ayudan en su ejecución y de las cuales se hablará en el apartado 3.3.
Otro autor, Ralph Kimball (2002) lo definió como “el lugar donde se publica la
información” e indicó los objetivos que debe cumplir. Entre estos objetivos están su
alcanzabilidad (pudiendo ser corporativa o departamental), la consistencia de la
información que almacena, la posibilidad de analizarla por separado o combinándola y la
disponibilidad de herramientas de consulta, análisis y presentación.
Puesto que un almacén de datos es una base de datos, será necesario diseñar las
distintas tablas y relaciones que la forman. Con este fin, se estudiarán las cuestiones
planteadas inicialmente y a las que la solución BI debe dar respuesta. Cada almacén sigue
CAPÍTULO 3. BUSINESS INTELLIGENCE 22
Tabla de Tabla de
dimensión 1 dimensión 3
Tabla de hechos
Tabla de Tabla de
dimensión 2 dimensión 4
A grandes rasgos, los pasos que se deben seguir en el diseño de un almacén de datos son
los que se describen a continuación:
Hasta ahora se han descrito los pasos a seguir para diseñar un almacén de datos sencillo
pero habitualmente estas bases de datos requieren la integración de varias estrellas que
trabajan con dimensiones a distinto nivel de detalle, por lo que es necesaria su
normalización (o jerarquización) obteniendo el llamado esquema en copo de nieve
(snowflake). Esta situación se da cuando, por ejemplo, se almacena para cada usuario datos
referentes su nivel de estudios o la ciudad en la que vive. El nivel de estudios y la ciudad se
encontrarían almacenados en dimensiones jerarquizadas a las que se haría referencia en
la dimensión del usuario. Otra característica que es habitual encontrar es la presencia de
dos tipos de tablas de hechos: transaccionales y snapshots. Las primeras están formadas
por filas que representan eventos mientras que las segundas corresponden a capturas de
la base de datos en un instante de tiempo determinado. Mientras que las transaccionales
tienen un mayor nivel de detalle, los snapshots presentan una visión acumulativa sin
entrar en detalle pero son útiles para conocer la evolución de la información.
Entre estas herramientas mencionadas cabe destacar las herramientas OLAP debido a su
gran importancia en el mundo del Business Intelligence. Con el objetivo de que los
usuarios vean la información agregada a diferentes niveles y sobre diferentes dimensiones
(por ejemplo, el número de compras realizadas por clientes con edades comprendidas en
un cierto rango y de un país determinado) nació OLAP. La forma de representar las
herramientas OLAP son cubos cuyas aristas se corresponden con las diferentes
dimensiones que participan en la consulta tal como se muestra en la Ilustración 3.3, donde
puede verse el número de libros que compró un cliente determinado en un año dado. Esta
información se recoge en los cubos individuales que forman el cubo y que son lo que se
había mencionado anteriormente como “hechos” en la tabla de hechos.
Con el fin de agilizar las consultas, las herramientas OLAP permiten la realización de
ciertas operaciones exclusivas de los cubos y pueden almacenarse siguiendo diferentes
opciones de almacenamiento, como MOLAP si lo que se busca es rendimiento, ROLAP en
caso de que la capacidad de almacenamiento que se necesite sea grande, HOLAP si se
desea combinar ambas y DOLAP si se necesita trabajar con MOLAP en un equipo cliente.
25
Véase http://www.pentaho.com
26
Véase http://www.palo.net
27
Véase http://www.oracle.com/es/solutions/midsize/oracle-products/business-intelligence/index.html
CAPÍTULO 3. BUSINESS INTELLIGENCE 25
28
Expresión que se refiere a la acción de mover objetos gráficos utilizando el ratón.
CAPÍTULO 3. BUSINESS INTELLIGENCE 26
Aunque las características que se ofrecen de modo gráfico y que se han definido
anteriormente son suficientes para realizar una carga compleja, también se ofrece la
posibilidad de definir nuevos objetos mediante código de programación.
amistad
fecha
Usuario A Usuario B
Edad Edad
Sexo Sexo
Ocupación Ocupación
amistad
fecha
publica
vota
fecha fecha
Producto
Nº de visitas valoración
Nº de comentarios
Clasificación
Como se observa en la imagen, aparecen como nodos los usuarios y los productos
(pudiendo ser estos una fotografía, un artículo, etc. y de los que se conocen ciertos datos)
y, como relaciones, la amistad entre usuarios (de la que se conoce la fecha en que se
produjo), que pueden ser recíprocas o no, y las relaciones entre usuarios y productos,
pudiendo ser éstas de dos tipos: la publicación de un producto por parte de un usuario
(incluyendo la fecha en la que se publicó) y el voto de un usuario a un producto (del que se
dispone de la fecha y la valoración dada).
27
CAPÍTULO 4. ESPECIFICACIÓN FUNCIONAL 28
Número de votos recibidos de sus amigos y de los amigos de sus amigos. Para
cada producto publicado por un usuario, se calculará el número de votos recibido
de sus amigos directos (usuarios con proximidad 1), los amigos de sus amigos
(usuarios con proximidad 2) y así sucesivamente, de forma que se conozca no sólo
la distancia sino también el peso de esa distancia, siendo este peso el ratio entre el
número de votos recibidos con las diferentes proximidades entre el número total
de votos recibidos.
Número de usuarios que votan o comentan un producto después de que uno
de sus amigos les envíe un mensaje. Se contabilizará cuántos de los mensajes
enviados por un usuario a sus amigos con el objetivo de que voten o comenten un
producto consiguen que se realicen dichas acciones sobre el producto. Se deberá
decidir cuánto tiempo puede transcurrir desde que se envía el mensaje hasta que
el receptor vota o comenta un producto de forma que si, por ejemplo, transcurre
un mes, no se tenga en cuenta.
Número de usuarios que se dan de alta en la red social tras recibir la
invitación de un amigo. Para cada usuario se calculará cuántas de las invitaciones
enviadas tienen como resultado el alta del usuario al que envió la invitación,
pudiendo elegir diferentes periodos de tiempo para el análisis.
Usuarios líderes. Señala quiénes son usuarios líderes, esto es, aquellos que por su
actividad agrupan a un conjunto amplio de usuarios. Es decir, son los usuarios que
representan diferentes grupos en la red (Palazuelos & Zorrilla, 2011).
4.2.1 MovieLens
Creado por el grupo de investigación GroupLens29, este conjunto de datos recoge
información procedente de la página MovieLens30, en la que los usuarios votan a
diferentes películas con una valoración comprendida entre 1 y 5, recogiéndose la fecha y
hora en la que se realizó la votación. De los usuarios se conoce su sexo, edad, ocupación y
código postal, y de las películas su título, su fecha de estreno y los géneros
cinematográficos a los que pertenecen.
29
Véase http://www.grouplens.org
30
Véase http://movielens.umn.edu
CAPÍTULO 4. ESPECIFICACIÓN FUNCIONAL 31
Métricas de alcanzabilidad
Frecuencia de voto: puesto que se conoce la fecha y la hora en la que se
produce cada votación, es posible calcular la frecuencia de voto de cada
usuario por día, semana, o mes, esto es, calcular el número de votos que
realiza el usuario por día, semana y mes. Además, y haciendo uso de los
datos demográficos de los usuarios, existe la posibilidad de conocer esta
frecuencia a través de diferentes perspectivas como la edad, el sexo, la
ocupación o el área geográfica del usuario. Para su cálculo se empleará la
Ecuación 4.2.
Métricas de compromiso
Crecimiento de votos: siguiendo la Ecuación 4.1 y sustituyendo el número
de usuarios por el de votos, a partir de una fecha de inicio y una fecha de
fin se podrá medir tanto el crecimiento de votos por usuarios (es decir, el
crecimiento de votos emitido por cada usuario) como por películas
(crecimiento de votos recibidos). Además, se podrá mostrar dicho
crecimiento por días, semanas, meses, trimestres o años así como
agrupándolo según los datos demográficos de los usuarios o por el género
de las películas.
Número de votos y valoración media: para cada película es posible
obtener el número de votos recibidos y la valoración media de estos.
Asimismo, y puesto que se conoce la fecha en la que se produjeron dichos
votos, es posible comparar el número de votos y la valoración media en dos
periodos diferentes de fechas así como agrupar estos por semana, mes o
trimestre. De igual forma se podrán conocer los géneros favoritos de los
usuarios agrupando el número de votos por el género de las películas así
como las preferencias de los usuarios según sus datos demográficos (edad,
sexo o nivel de estudios).
4.2.2 Flickr
Este conjunto de datos contiene parte de la actividad registrada en la red social de
fotografía Flickr en un periodo de tiempo comprendido entre el 2 de noviembre de 2006 y
el 18 de mayo de 2007, proporcionándose además capturas o snapshots que recogen un
resumen de la actividad realizada en tres periodos de tiempo diferentes. El primero de
ellos recoge la actividad desarrollada del 2 de noviembre de 2006 al 3 de diciembre de
2006, el segundo del 4 de diciembre de 2006 al 2 de febrero de 2007 y el tercero del 3 de
febrero de 2007 al 18 de mayo de 2007. Con el fin de agilizar la carga de datos y la
ejecución de consultas, y aunque se ha hecho uso de los tres snapshots mencionados, tan
sólo se han utilizado los datos correspondientes a la actividad detallada del primer
periodo de tiempo (del 2 de noviembre al 3 de diciembre). El detalle de estos datos recoge
información referente a las relaciones de amistad entre usuarios, las cuales no son
recíprocas y de las que se conoce, además de los usuarios implicados, la fecha en la que se
produjeron, datos relativos a la carga de fotografías (usuario propietario y la fecha y hora
CAPÍTULO 4. ESPECIFICACIÓN FUNCIONAL 32
de la carga), información sobre las votaciones de fotografías (qué usuario marca una
fotografía como favorita y en qué día y hora lo hace), y datos sobre las fotografías (número
de visitas y comentarios recibidos).
Con la información de la que se dispone, las métricas que es posible calcular son:
Métricas de alcanzabilidad
Crecimiento de usuarios: aunque no se dispone de información referente
a la fecha en la que cada usuario se registra en la red social, esta
información puede extraerse de los snapshots proporcionados puesto que
el número de usuarios varía de uno a otro y corresponden a periodos de
tiempo distintos. Para su cálculo se hace uso de la Ecuación 4.1.
Crecimiento de usuarios activos: igual a la métrica anterior pero tan sólo
se contabilizan aquellos usuarios que hayan, como mínimo, publicado una
fotografía, votado una fotografía y establecido una relación con otro
usuario.
Velocidad de propagación: se calcula como la diferencia temporal
(minutos, horas, días, etc.) desde que un usuario publica una fotografía
hasta que ésta es votada por primera vez.
Actividad: contabiliza, en un periodo de tiempo elegido, el número de
votos que ha recibido cada fotografía o cada usuario, el número de votos
emitido por un usuario o el número de nuevos amigos o seguidores de un
usuario.
Frecuencias de voto, de publicación y de amistad: se obtendrá, por cada
usuario, cuántos votos realiza, cuántas fotografías publica y cuántos
nuevos amigos hace por día, semana y mes en un periodo de tiempo dado
haciendo uso de la Ecuación 4.2.
Proximidad: por cada relación de amistad se conoce la distancia existente
entre los usuarios implicados antes de que se estableciera dicha amistad.
Esta medida también se aplica a las votaciones que los usuarios realizan
sobre las fotografías, donde se calcula cómo de próximos se encuentran el
usuario que vota y el propietario de la imagen. Hallando qué porcentaje de
estas relaciones se encuentra a diferentes proximidades., se obtendrá una
clasificación que muestre cada valor de la proximidad junto con su
porcentaje para conocer, a nivel de red social, cómo de cohesionada se
encuentra la red pudiendo comparar estos valores por períodos de tiempo.
Métricas de compromiso
Crecimiento de fotografías, votos y seguidores: para cada usuario se
calculará la diferencia de estos valores (fotografías subidas, votos recibidos
y nuevos seguidores) entre dos fechas sustituyendo a los usuarios por
dichos valores en la Ecuación 4.1.
CAPÍTULO 4. ESPECIFICACIÓN FUNCIONAL 33
Al igual que ocurre con MovieLens, con Flickr también se puede obtener qué usuarios son
más activos a la hora de votar o publicar fotos, a qué hora del día se realiza la mayor carga
de fotografías o qué días se registra una mayor actividad en la red. Asimismo, haciendo
uso del número de votos, visitas y comentarios, se puede calcular no sólo la suma de cada
uno de estos valores recibidos por las fotografías de cada usuario, sino también el número
máximo de votos, visitas o comentarios recibidos teniendo en cuenta todas las fotografías
publicadas por un usuario.
4.2.3 DBLP
DBLP recoge información referente a artículos relacionados con la computación y
publicados en un periodo de tiempo comprendido entre el año 1936 y el 2011. De cada
publicación se conoce su título, su clasificación, el año en el que se publicó, las
publicaciones a las que cita y sus autores, de los cuales se tiene su nombre completo.
Utilizando esta información, las métricas a las que puede dar respuesta son las
siguientes:
CAPÍTULO 4. ESPECIFICACIÓN FUNCIONAL 34
Métricas de alcanzabilidad
Velocidad de propagación: se calculará como el tiempo que transcurre
(pudiendo ser éste tan sólo años debido a la información proporcionada)
desde que un artículo es publicado hasta que es citado por primera vez.
Frecuencia de publicación: de cada autor se calculará cuántas
publicaciones realiza por año (sólo puede calcularse la frecuencia por año
debido a las características del conjunto de datos) haciendo uso de la
Ecuación 4.2. Puede obtenerse estableciendo un período de tiempo, de
forma que sólo se tengan en cuenta las publicaciones realizadas entre esos
años dados.
Frecuencia de citas: de las publicaciones escritas por un autor se
calculará, haciendo uso nuevamente de la Ecuación 4.2, cuántas citas
realiza por año en estas publicaciones.
Proximidad: se calcula la distancia a la que se encontraban los autores
antes de escribir un artículo juntos por primera vez de forma que se pueda
obtener qué tanto por ciento de los coautorías tienen diferentes
proximidades. De igual forma, puede obtenerse este valor para las citas en
los artículos. Asimismo, se podrá mostrar dicho valor en diferentes
periodos de tiempo con el fin de comparar su variación.
Métricas de compromiso
Crecimiento de publicaciones: consiste en comparar cuánto ha crecido el
número de publicaciones en un periodo. En este caso, no se darán fechas de
inicio y fin completas sino un año de inicio y otro de fin y también se
calculará mediante la Ecuación 4.1 sustituyendo el número de usuarios por
el de publicaciones.
Crecimiento de coautores: para cada autor se hallará, mediante la
Ecuación 4.1, el crecimiento de sus relaciones de coautoría entre dos años
dados por el usuario.
Crecimiento de las citas de una publicación: se calculará el incremento,
de nuevo con la Ecuación 4.1, en el número de citas que recibe una
publicación en el periodo establecido por el usuario de la interfaz.
Número de veces que una publicación ha sido citada: pudiendo
calcularse el número total desde que se publicó o en un periodo
determinado por el usuario de la aplicación.
Número de veces que han sido citadas las publicaciones de un
determinado autor: para cada autor se calculará el número de citas que
han recibido sus publicaciones en un periodo de tiempo establecido por el
usuario de la aplicación.
Fortaleza de los enlaces: una vez establecida una relación de coautoría o
amistad entre dos autores, se contabilizará el ratio de las publicaciones que
han realizado juntos respecto a la suma del total de artículos que han
publicado, pudiendo incluir nuevamente límite temporal, y haciendo uso
de la Ecuación 4.3.
Fidelidad de coautores: tras el establecimiento de una relación de
coautoría entre dos autores, se calculará cómo de fieles son dichos autores
entre sí. Para ello, se calculará el ratio de citas realizado por uno de ellos a
CAPÍTULO 4. ESPECIFICACIÓN FUNCIONAL 35
Nuevamente, y de la misma manera que ocurría con los conjuntos de datos anteriores, con
DBLP también es posible obtener datos referentes al año en el que se publicaron más
artículos, qué autores son los que más publican o quiénes son citados un mayor número de
veces.
5 Diseño de la solución
Este capítulo tiene como objetivo mostrar, en primer lugar, los diseños de las bases de
datos en grafo utilizadas para trabajar con cada conjunto de datos y, posteriormente,
describir el almacén de datos diseñado así como cada una de las tablas que lo constituyen.
Finalmente, se explica el proceso realizado para trasladar los datos contenidos en las
bases de datos orientadas a grafos al almacén de datos.
UserId MovieId
Age SCORING MovieTitle
Gender ReleaseDate
Occupation Date IMDb-URL
ZipCode Score Genres
Usuario Película
Tanto los usuarios como las películas se representan en el grafo mediante nodos en los
que se recogen sus propiedades. Cabe destacar que para identificar cada nodo se utilizará,
en los nodos que representan usuarios, la propiedad UserId y, en los nodos que
representan películas, el valor de MovieId. Para representar las valoraciones que los
usuarios realizan sobre las películas se utilizan aristas que relacionan al usuario que vota
con la película que es votada. Esta relación tiene, además, dos propiedades: la fecha y hora
en la que se realiza la votación y la valoración que otorga el usuario. En este caso, las
votaciones no disponen de ninguna propiedad que las identifique, por lo que será el propio
gestor el encargado de otorgarles un identificador único. Otro factor a tener en cuenta es el
tipo al que pertenece la arista: aunque en este conjunto no sería necesario debido a que es
la única relación que puede darse entre nodos, el gestor obliga a que todas las aristas
pertenezcan a un tipo al que, en este caso, se ha llamado SCORING.
36
CAPÍTULO 5. DISEÑO DE LA SOLUCIÓN 37
Una vez cargados los datos, el grafo resultante constaba de 2625 nodos (de los
cuales 943 correspondían a usuarios y 1682 a películas) y 100.000 aristas o relaciones,
correspondientes a votaciones. Mediante el uso de este grafo se facilitaban operaciones
tales como la obtención del número de votos recibidos por una película (sumando el
número total de aristas a las que está conectado el nodo que la representa) o el número de
votos emitidos por un usuario (nuevamente, calculando el número de aristas a las que está
conectado el nodo usuario). Para llevar a cabo estos cálculos, se utilizaron métodos
propios de Neo4J (por ejemplo, dado un nodo, es posible obtener todas las aristas de un
determinado tipo a las que está conectado). Estos métodos utilizan a su vez de estructuras
típicas de Java, como los iteradores.
Haciendo uso de estas facilidades se llevó a cabo el recorrido de todos los nodos y
aristas del grafo con el fin de obtener información relevante para la solución final. Algunos
de estos datos calculados fueron, por ejemplo, el número de votos emitido por cada
usuario o el número de votos que recibió una película. Toda la información extraída se
almacenó en varios ficheros de texto organizados de forma que la lectura posterior fuese
clara. Puesto que en el almacén (aspecto que se explicará en profundidad en el apartado
5.2) la dimensión encargada de almacenar fechas contiene datos cuyo cálculo resultaría
complejo mediante el uso de SQL (como, por ejemplo, saber si una fecha pertenece a las
vacaciones de Pascua) también se almacenaron en un fichero las diferentes fechas
presentes en el grafo (fechas de estreno de películas o de votación de éstas) junto con
información referente a ellas.
diferenciar la arista. No ocurre lo mismo con las relaciones de carga de fotografías, en las
cuales el propio gestor se encarga de otorgarles una clave que las identifique.
DateFriendship
UserId UserId
FRIENDSHIP
DateFriendship
LOAD_PHOTO FAV
DateLoad DateFav
PhotoId
NumberOfComments
NumberOfVisits
Fotografía
El proceso de carga desde los ficheros de origen y la base de datos en grafo se realizó de
igual manera que en el conjunto MovieLens pero adaptando las operaciones de carga a las
características del conjunto. El resultado final fue un grafo formado por 26.558.755 nodos
y 25.707.885 aristas.
Autor Autor
COAUTHOR
Name Name
Year
PUBLISH
PUBLISH PUBLISH
Index
Title
Year
Classification Index
Title
QUOTE Year
Publicación Classification
Publicación
Los autores y las publicaciones se representan mediante nodos, los cuales recogen la
información referente a los elementos que representan. Tanto para los nodos que
representan autores como los que representan publicaciones se optó por dejar que el
gestor Neo4J les otorgara un identificador puesto que los datos en origen no les otorgaban
un atributo que los identificase. Para representar la relación entre las publicaciones y sus
autores se utiliza la relación PUBLISH y, dado que una publicación puede estar escrita por
varios autores, esta relación de coautoría debe recogerse, lo cual se lleva a cabo mediante
las aristas de tipo COAUTHOR, que relacionan dos autores que han escrito juntos una
publicación y la fecha que se otorga a esa “amistad” es el año en el que escribieron juntos
por primera vez, de forma que dichos autores quedan relacionados desde su primera
publicación en común. Otro aspecto representado mediante aristas son las referencias
entre publicaciones, para las cuales se utilizan las aristas de tipo QUOTE. Tras la carga de
los datos de origen, el grafo final consta de 2.393.769 nodos y 6.040.064 aristas.
2002), como el día del año, si es día festivo, si es el último fin de semana del mes o si
pertenece a un periodo vacacional. Puesto que es posible que en algunos casos no se
disponga de la fecha completa, la mayor parte de sus columnas deberán admitir valores
nulos.
facilitar la carga de datos en éste así como futuras actualizaciones. En el caso de este
proyecto, se ha diseñado un data staging relacional para cada conjunto de datos de forma
que actúe como paso intermedio entre los ficheros extraídos de los grafos y el almacén
diseñado. Una vez que la información de los ficheros se encuentra almacenada en su data
staging correspondiente, el traslado al almacén de datos se simplifica.
A la hora de insertar los datos extraídos de cada grafo en su data staging correspondiente
se hizo uso de la plataforma SQL Server Integration Services (en adelante SSIS), una de las
herramientas de SQL Server Business Intelligence Development Studio orientada al
proceso ETL y que se describió en el apartado 3.3. Esta herramienta proporciona
facilidades que simplifican la inserción de datos pudiendo hacerse la mayor parte de ellas
de forma gráfica. En la Ilustración 5.7 se muestra una captura del proceso ETL diseñado
mediante SSIS para la carga de datos en el data staging de Flickr, donde aparece la carga
de las distintas tablas de forma secuencial con el fin de evitar problemas de referencias.
Dentro de cada uno de estos flujos de datos se realiza la lectura de datos desde el fichero
de texto, una búsqueda en el data staging para evitar datos duplicados y, finalmente, la
inserción en la tabla correspondiente. La carga de algunas tablas, como FRIENDSHIP,
mostrada en detalle la Ilustración 5.8, tiene ciertas particularidades. En este caso, además
de la lectura, la búsqueda y la carga, fue necesario unir información que se encontraba
almacenada en dos ficheros diferentes.
CAPÍTULO 5. DISEÑO DE LA SOLUCIÓN 46
Una vez que los datos de cada conjunto de datos se encuentran cargados en su data
staging, el siguiente paso es la carga de dichos datos en el almacén de datos. Para ello, se
hizo uso nuevamente de la herramienta SSIS y de las facilidades que ofrece. En la
Ilustración 5.9 se muestra una captura del flujo de datos diseñado para la carga de los
datos procedentes del conjunto de datos Flickr.
31
Por tratarse de conjuntos de datos públicos es probable la presencia de datos que, en detalle,
contienen errores.
CAPÍTULO 5. DISEÑO DE LA SOLUCIÓN 47
Ilustración 5.9 Proceso de carga de los datos del data staging de Flickr en el almacén de datos
Ilustración 5.10 Eliminación de las votaciones de Flickr con datos erróneos de fecha y hora
6 Generación de informes
En este capítulo se describe la interfaz a través de la cual el usuario puede acceder a los
informes diseñados para representar las métricas definidas en el apartado 4.1 aplicadas
sobre los conjuntos de datos cargados en el almacén de datos. Asimismo, se describen las
medidas de seguridad implementadas para el acceso a los informes y las acciones
realizadas para mejorar rendimiento de las consultas.
Esta herramienta permite conectar, entre otros, con bases de datos relacionales y
con cubos OLAP de forma que se puedan realizar consultas sobre ellos y mostrar la
información procedente de esas consultas con distintos formatos. En este caso, la mayor
parte de las consultas implementadas para responder a las métricas se han realizado
contra el almacén de datos pero aquellas en las que, debido a la complejidad de las
consultas y a la gran cantidad de datos almacenados, se observaba una importante pérdida
de rendimiento se optó por la construcción de cubos OLAP.
Este servidor web permitirá, además, la creación de carpetas en las que se podrán
clasificar los informes en base a diferentes criterios con los que se conseguirá que el
usuario de la interfaz pueda acceder a ellos de forma más rápida e intuitiva.
32
Esta dirección puede cambiarse a través de la interfaz web en función de las necesidades o
preferencias del usuario.
48
CAPÍTULO 6. GENERACIÓN DE INFORMES 49
Dentro de dichas carpetas se encuentran, respectivamente, los informes creados para cada
conjunto de datos o para visualizar las métricas que correspondan. El primer caso puede
verse en la Ilustración 6.3, donde se muestran los informes creados para el conjunto de
datos Flickr. El segundo caso aparece en la Ilustración 6.4, correspondiente a la carpeta de
métricas de alcanzabilidad y que engloba, independientemente del conjunto de datos al
que correspondan, todos los informes que dan respuesta a métricas de ese tipo.
A la hora de escribir la consulta SQL para generar cada informe, fue necesario
tener en cuenta las características del conjunto de datos al que correspondería dicho
informe, es decir, se seleccionaron sólo aquellos datos que correspondían a dicho
conjunto. Para ello, las consultas escritas contienen ciertos criterios de filtrado de datos:
por ejemplo, para Flickr se seleccionaron tan sólo aquellos usuarios de los que no se tenía
ni su nombre ni su sexo y, para MovieLens, aquellos productos que tuvieran una
descripción pero ningún usuario propietario. Gracias a estas diferencias entre los datos, no
fue necesario incluir nuevas columnas en las tablas que indicaran, para cada fila, a qué
conjunto de datos correspondía.
CAPÍTULO 6. GENERACIÓN DE INFORMES 50
En los siguientes apartados se describen algunos de los informes creados junto con una
captura de los mismos.
33
En el caso del informe mostrado, correspondiente a Flickr, los periodos en los que se estudia el
crecimiento son los correspondientes a los snapshots proporcionados.
CAPÍTULO 6. GENERACIÓN DE INFORMES 51
También se incluye un informe para conocer dicho valor en las valoraciones de las
fotografías, el cual puede verse en la Ilustración 6.15.
Ilustración 6.17 Informe del total de comentarios, visitas y votos recibidos por usuario
Ilustración 6.18 Informe del máximo de comentarios, visitas y votos recibidos por usuario
Esta información puede visualizarse también en forma de gráfica, tanto para la valoración
media (véase Ilustración 6.20) como para el número de votos (véase Ilustración 6.21).
6.3 Seguridad
Con el fin de evitar que usuarios que no conocen por completo las funcionalidades del
servidor web o que usuarios malintencionados generen problemas al realizar consciente o
inconscientemente ciertas acciones sobre los informes mostrados, Reporting Services
permite la creación de diferentes usuarios o roles de forma que se pueda restringir su
libertad a la hora de realizar ciertas acciones sobre la interfaz. Entre estas acciones están,
por ejemplo, la creación y eliminación de informes y carpetas o la visualización de estos.
Este último caso es importante si, por ejemplo, se dispusiera de información protegida de
los usuarios que forman parte de los conjuntos de datos estudiados. De esta forma, se
podrían restringir los accesos a los informes o carpetas que contuvieran estos datos
sensibles. Aunque en los conjuntos de datos empleados en este proyecto no se ha dado
este último caso, sí se ha creado un usuario con permisos limitados de forma que sus
acciones en la interfaz se limiten a visualizar los informes creados. En la Ilustración 6.31 se
muestra cómo ve la interfaz este usuario mientras que la Ilustración 6.32 corresponde a
un usuario con permisos de administrador. Como se observa en esta última ilustración, el
administrador tiene la posibilidad de realizar ciertas acciones, como la creación de
informes, de carpetas o de orígenes de datos, que no están disponibles en la interfaz del
usuario.
Además del uso de un cubo OLAP, se crearon índices sobre las columnas del
almacén de datos que más intervenían en las consultas con el fin de agilizar éstas. Por
ejemplo, fueron necesarios índices en aquellos atributos utilizados para diferenciar la
procedencia de los datos debido a su alta presencia en las consultas, como las columnas
Name y Gender de la tabla USER_DIMENSION y la columna UserKey de
PRODUCT_DIMENSION, así como en aquellas columnas relacionadas con parámetros
habituales, como es el caso de DateColumn en DATE_DIMENSION.
Ilustración 6.33 Cubo diseñado para calcular el número de votos recibido por usuario
7 Conclusiones y líneas futuras
En este capítulo se resumen las conclusiones a las que se ha llegado tras la realización del
proyecto así como una serie de posibles mejoras a realizar en el futuro sobre el trabajo
realizado.
7.1 Conclusiones
Este proyecto tenía como objetivo principal la implementación de una solución Business
Intelligence suficientemente genérica que calculara y mostrara una serie de métricas útiles
para el análisis de redes sociales y orientadas hacia la toma de decisiones. Para ello, se
trabajó con tres conjuntos de datos procedentes de redes sociales con muy distinto fin, se
diseñó un almacén de datos que recogiera la información necesaria para el cálculo de los
indicadores, se programó este cálculo y se diseñaron informes web para mostrar estos
indicadores.
Si bien el uso de Neo4J facilitó el cálculo de ciertas medidas, los conjuntos de datos
elegidos eran de gran tamaño, lo cual perjudicó al rendimiento ya que, a pesar de que los
grafos facilitan este tipo de cálculos, hubiese sido necesario el uso de una máquina con
mayores prestaciones para alcanzar el rendimiento óptimo ofrecido por el gestor.
65
CAPÍTULO 7. CONCLUSIONES Y LÍNEAS FUTURAS 66
lo que provocó que, en algunas ocasiones, el tiempo de espera para visualizarlos fuese
demasiado alto. Este hecho me obligó a hacer uso de la tecnología OLAP.
Amann, B., & Scholl, M. (1992). Gram: A Graph Data Model and Query Language. European
Conference on Hypertext Technology (ECHT) (págs. 201-211). ACM.
Andries, M., Gemis, M., Paredaens, J., Thyssens, I., & Den Bussche, J. V. (1992). Concepts for
graph-oriented object manipulation. Proceedings of the 3rd International
Conference on Extending Database Technology (EDBT) (págs. 21–38). Springer.
Angles, R., & Gutiérrez, C. (Febrero 2008). Survey of Graph Database Models. ACM
Computer Surveys.
Awareness Inc. (2012). Actionable Social Analytics: From Social Media Metrics to Business
Insights.
Codd, E. F. (1970). A relational model of data for large shared data banks. Commun. ACM
13, 377-387.
Graves, M., Bergeman, E. R., & Lawrence, C. B. (1995). A graph-theoretic data model for
genome mapping databases. Proceedings of the 28th Hawaii International
Conference on System Sciences (HICSS).
Gruhl, D., Nagarajan, M., Pieper, J., Robson, C., & Sheth, A. (2010). Multimodal Social
Intelligence in a Real-Time Dashboard System. The VLDB Journal — The
International Journal on Very Large Data Bases, 825-848.
Gutiérrez, A., Pucheral, P. S., Thévenin, & J.M. (1994). Database graph views: A practical
model to manage persistent graphs. Proceedings of the 20th International
Conference on Very Large Data Bases (VLDB) (págs. 391–402). Morgan Kaufmann.
67
BIBLIOGRAFÍA 68
Gyssens, M., Paredaens, J., Den Busshce, J. V., & Gucht, D. V. (1990). A graph-oriented object
database model. Proceedings of the 9th Symposium on Principles of Database
Systems (PODS) (págs. 417-424). ACM Press.
Hidders, J., & Paradaens, J. (1993). GOAL, A graph-based object and association language.
Advances in Database Systems: Implementations and Applications, 247–265.
Hill, S., Provost, F., & Volinsky, C. (2006). Network-Based Marketing: Identifying Likely
Adopters via Consumer Networks. Statistical Science, 256-276.
Kazienko, P., Musial, K., Kukla, E., Kajdanowicz, T., & Bródka, P. (2011). Multidimensional
Social Network: Model and Analysis. Computational Collective Intelligence.
Technologies and Applications, 378-387.
Kimbal, R., & Ross, M. (2002). The Data Warehouse Toolkit: The Complete Guide to
Dimensional Modeling. Wiley John & Sons.
Knight, B., Veerman, E., Dickinson, G., Hinson, D., & Herbold, D. (2008). Microsoft SQL
Server 2008 Integration Services. Indianapolis, Indiana: Wiley Publishing, Inc.
Kunii, H. S. (1987). DBMS with graph data model for knowledge handling. Proceedings of
the 1987 Full Joint Computer Conference on Exploring technology: Today and
Tomorrow (págs. 138-142). IEEE Computer Society Press.
Kuper, G. M., & Vardi, M. Y. (1984). A new approach to database logic. Proceedings of the
3th Symposium on Principles of Database Systems (PODS) (págs. 86-96). ACM Press.
Larson, B. (2008). Microsoft SQL Server 2008 Reporting Services. Emeryville, California:
McGraw-Hill/Osborne.
Lécluse, C., Richard, P., & Vélez, F. (1988). O2, an object-oriented data model. Proceedings
of the ACM SIGMOD International Conference on Management of Data (págs. 424–
433). ACM Press.
Levene, M., & Loizou, G. (1995). A graph-based data model and its ramifications. IEEE
Trans. Knowl. Data Eng, 809–823.
Levene, M., & Poulovassilis, A. (1990). The Hypernode model and its associated query
language. Proceedings of the 5th Jerusalem Conference on Information technology
(págs. 520-530). IEEE Computer Society Press.
Levene, M., & Poulovassilis, A. (1991). An object-oriented data model formalised through
hypergraphs. Data Knowl. Eng. 6, 205-224.
BIBLIOGRAFÍA 69
Mainguenaud, M. (1992). Simatic XT: A data model to deal with multi-scaled networks.
Comput. Environ. Urban Sys. 16, 281-288.
Mislove, A., Marcon, M., Gummadi, K. P., Druschel, P., & Bhattacharjee, B. (2007).
Measurement and Analysis of Online Social Networks. ACM SIGCOMM Conference
on Internet Measurement (págs. 29-42). San Diego, California: ACM.
Nguyen, Q. V., & Huang, M. L. (2010). A New Interactive Platform for Visual Analytics of
Social Networks. Visual Information Comunication, 231-244.
Palazuelos, C., & Zorrilla, M. (2011). FRINGE: A New Approach to the Detection of
Overlapping Communities in Graphs. ICCSA'11 Proceedings of the 2011
international conference on Computational science and its applications - Volume
Part III, 638-653.
Palazuelos, C., & Zorrilla, M. (2012). Analysis of Social Metrics in Dynamic Networks:
Measuring the Influence with FRINGE. EDBT-ICDT '12 Proceedings of the 2012 Joint
EDBT/ICDT Workshops, 9-12.
Papakonstantinou, Y., García-Molina, H., & Andwidom, J. (1995). Object exchange across
heterogeneous information sources. Proceedings of the 11th International
Conference on Data Engineering (ICDE). (págs. 251–260). IEEE Computer Society.
Paredaens, J., Peelman, P., & Tanca, L. (1995). G-Log: A graph-based query language. IEEE
Trans. Knowl. Data Eng.7, 436–453.
Roussopoulos, N., & Mylopoulos, J. (1975). Using semantic networks for database
management. Proceedings of the International Conference on Very Large Databases
(VLDB) (págs. 144-172). ACM.
The Data Warehouse Institute. (s.f.). The Data Warehouse Institute. Obtenido de
http://tdwi.org/Home.aspx
Ting, I.-H., Lin, C.-H., & Wang, C.-S. (2011). Constructing A Cloud Computing Based Social
Networks Data Warehousing and Analyzing System. International Conference on
Advances in Social Networks Analysis and Mining (págs. 735-740). IEEE Computer
Society.
White, J. S., Matthews, J. M., & Stacy, J. L. (2012). Coalmine: An Experience in Building a
System for Social Media. Proc. SPIE 8408, Cyber Sensing 2012.
Whittemore, B. (2003). The Business Intelligence ROI Challenge: Putting It All Together.
USERSNAPSHOT
USER_SESSION
U serS napshotKey
U serS essionKey
U serKey
U serKey AREA
CLASSIFICATION N umberO fP roducts
A reaKey
S tartD ateKey
C lassificationKey N umberO fV otes
S tartH ourKey ZipC ode
Description N umberO fF riends
E ndD ateKey
N umberO fF oF
E ndH ourKey
O ccupationKey AGE
S econds
A reaKey A geKey
Inv itationsS ent
GENRE A geKey A geM in
V otes
C lassificationKey BeginningD ateKey A geM ax
M essagesS ent
P roductKey E ndD ateKey
F riendsRequest
Leader
D ay sD iff
OCCUPATION
F riendsReqA cc O ccupationKey
PRODUCT_DIMENSION
WeeksD iff Description
P roductKey
USER_DIMENSION M onthsD iff
P roductId
U serKey
N umberO fV isits
D ateKey
U serId
Inv itationsS ent
H ourKey DATE_DIMENSION
N ame
Inv itationsE ffec D ateKey
D escription
S urname
M essagesS ent D ateC olumn
U serKey
G ender
M essagesE ffec F ullD ateD escription
IsG roup
F riendsReqS ent D ay O fWeek
RegisterD ateKey
F riendsReqReceiv ed D ay N umberInE poch
RegisterH ourKey
Y earsD iff WeekN umberInE poch
M onthN ame
SCORE PRODUCTSNAPSHOT
M onthN umberInY ear
S coreKey P roductS napshotKey
Y earM onth
S coreId P roductKey
FRIENDSHIP
Q uarter
S core F riendshipKey N umberO fV isits
Y earQ uarter
U serKey F riendshipId N umberO fC omments
H alfY ear
P roductKey U ser1Key S coring
Y earC olumn
RangeKey U ser2Key BeginningD ateKey
H oliday Indicator
D ateKey D ateKey E ndD ateKey
Weekday Indicator
H ourKey P roximity N umberO fV otes
S ellingS eason
P roximity Reciprocity D ay sD iff
M ajorE v ent
WeeksD iff
M onthsD iff
Y earsD iff
RANGE
RangeKey
M inV alue
M axV alue
70