-
UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE INGENIERÍA, CIENCIAS FÍSICAS Y MATEMÁTICA
CARRERA DE INGENIERÍA EN COMPUTACIÓN GRÁFICA
Desarrollo e implementación de una librería de análisis y
visualización de datos
basados en grafo
Trabajo de titulación modalidad Proyecto Integrador, previo a la
obtención del
Título de Ingeniero en Computación Gráfica
AUTOR: Torres Bonilla Pablo Sebastián
TUTORA: Ing. Ruiz Chávez Zoila de Lourdes
QUITO, 2019
-
ii
DERECHOS DE AUTOR
Yo, TORRES BONILLA PABLO SEBASTIÁN en calidad de autor y titular
de los
derechos morales y patrimoniales del trabajo de titulación
DESARROLLO E
IMPLEMENTACIÓN DE UNA LIBRERÍA DE ANÁLISIS Y VISUALIZACIÓN
DE DATOS BASADOS EN GRAFO, modalidad proyecto integrador, de
conformidad
con el Art.144 del CÓDIGO ORGÁNICO DE LA ECONOMÍA SOCIAL DE
LOS
CONOCIMIENTOS, CREATIVIDAD E INNOVACIÓN, concedo a favor de
la
Universidad Central del Ecuador una licencia gratuita,
intransferible y no exclusiva para
el uso no comercial de la obra, con fines estrictamente
académicos. Conservo a mi favor
todos los derechos de autor sobre la obra, establecidos en la
normativa citada.
Así mismo, autorizo a la Universidad Central del Ecuador para
que realice digitalización
y publicación de este trabajo de titulación en el repositorio
virtual, de la conformidad a lo
dispuesto en el Art. 144 de la Ley Orgánica de Educación
Superior.
El autor declara que la obra objeto de la presente autorización
es original en su forma de
expresión y no infringe en el derecho de autor de terceros,
asumiendo la responsabilidad
por cualquier reclamación que pudiera presentarse por esta causa
y liberando a la
Universidad de toda responsabilidad.
____________________
Torres Bonilla Pablo Sebastián
C.C.: 1720554417
Email: [email protected]
-
iii
CERTIFICACION DEL TUTOR
Yo, Ing. Ruiz Chávez Zoila de Lourdes, en calidad de tutora del
trabajo de titulación:
"DESARROLLO E IMPLEMENTACIÓN DE UNA LIBRERÍA DE ANÁLISIS Y
VISUALIZACIÓN DE DATOS BASADOS EN GRAFO" elaborado por el
estudiante
TORRES BONILLA PABLO SEBASTIÁN, de la carrera de Ingeniería en
Computación
Gráfica, Facultad de Ingeniería, Ciencias Físicas y Matemática
de la Universidad Central
del Ecuador, considero que el mismo reúne los requisitos y
méritos necesarios en el
campo metodológico y en el campo epistemológico, para ser
sometido a la evaluación por
parte del jurado examinador que se designe, por lo que lo
apruebo, a fin de que el trabajo
investigativo sea habilitado para continuar con el proceso de
titulación determinado por
la Universidad Central del Ecuador.
En la ciudad de Quito, a los 03 días del mes de julio de
2019.
__________________________
Ing. Ruiz Chávez Zoila de Lourdes
CI: 171192655—8
Telf.: 0987215026
-
iv
CONTENIDO
DERECHOS DE AUTOR
..................................................................................................................
ii
CERTIFICACION DEL TUTOR
.........................................................................................................
iii
CONTENIDO.................................................................................................................................
iv
LISTA DE FIGURAS
.......................................................................................................................
vi
RESUMEN
....................................................................................................................................
ix
ABSTRACT
.....................................................................................................................................
x
INTRODUCCIÓN
............................................................................................................................1
CAPÍTULO I
...................................................................................................................................3
1. DEFINICIÓN DEL
PROBLEMA.....................................................................................................3
1.1 ANTECEDENTES
......................................................................................................................3
1.2 FORMULACIÓN DEL PROBLEMA
.............................................................................................4
1.3 DESCRIPCIÓN DEL PROBLEMA
................................................................................................5
1.4 JUSTIFICACIÓN
.......................................................................................................................6
1.5 OBJETIVOS
..............................................................................................................................7
1.5.1 OBJETIVO GENERAL
.............................................................................................................7
1.5.2 OBJETIVOS ESPECÍFICOS
......................................................................................................7
1.6 ALCANCE
................................................................................................................................7
1.7 LIMITACIONES
........................................................................................................................8
1.8 INVESTIGACIÓN
BIBLIOGRÁFICA.............................................................................................9
1.8.1 RAW GRAPHS
......................................................................................................................9
1.8.2
LINKURIOUS.......................................................................................................................10
1.8.3
KEYLINES............................................................................................................................11
1.8.4 GRAPHISTRY
......................................................................................................................12
CAPÍTULO II
................................................................................................................................13
2. MARCO TEÓRICO
....................................................................................................................13
2.1 TEORÍA DE GRAFOS
..............................................................................................................13
2.1.1 GRAFO
...............................................................................................................................14
2.1.2 CAMINO
............................................................................................................................16
2.2 MÉTRICAS
.............................................................................................................................17
2.2.1
DEGREE..............................................................................................................................18
2.2.2 BETWEENNESS
..................................................................................................................18
2.2.3 PAGERANK
.........................................................................................................................18
2.3TRAVERSALS
..........................................................................................................................19
2.4 BASES DE DATOS
..................................................................................................................20
-
v
2.4.1 BASES DE DATOS
RELACIONALES.......................................................................................21
2.4.2 BASES DE DATOS NOSQL
...................................................................................................23
2.4.2 TIPOS DE BASES DE DATOS NOSQL
....................................................................................24
2.4.2.1 BASES DE DATOS CLAVE-VALOR
.....................................................................................24
2.4.2.2 BASES DE DATOS DOCUMENTALES
................................................................................25
2.4.2.3 BASES DE DATOS ORIENTADAS A GRAFOS
.....................................................................26
2.4.2.3.1 NEO4J
..........................................................................................................................27
2.4.2.3.1.1 CYPHER
.....................................................................................................................28
2.5 ARQUITECTURA DE DESARROLLO WEB
................................................................................29
2.5.1 ARQUITECTURA CLIENTE SERVIDOR
..................................................................................31
2.5.2 ARQUITECTURA DE TRES CAPAS
........................................................................................31
2.5.3 API-REST
............................................................................................................................32
2.6 HTML
....................................................................................................................................33
2.7 CSS
........................................................................................................................................34
2.9 JQUERY
.................................................................................................................................35
2.10 DJANGO
..............................................................................................................................35
2.11 SIGMA.JS
............................................................................................................................37
CAPÍTULO III
...............................................................................................................................38
3. MARCO METODOLÓGICO
.......................................................................................................38
3.1
METODOLOGÍA.....................................................................................................................38
3.1.1 METODOLOGÍA EN CASCADA
............................................................................................38
3.1.1.1 ANÁLISIS Y DEFINICIÓN DE REQUERIMIENTOS
...............................................................40
3.1.1.2 DISEÑO
...........................................................................................................................41
3.1.1.2.1 FASE DE PRESENTACIÓN Y
CONECTIVIDAD..................................................................42
3.1.1.2.2 FASE DE DEFINICIÓN DE CONSULTA
............................................................................43
3.1.1.2.3 FASE DE VISUALIZACIÓN
..............................................................................................48
3.1.1.3 IMPLEMENTACIÓN
.........................................................................................................50
3.1.1.3.1 PRESENTACIÓN Y CONECTIVIDAD
...............................................................................52
3.1.1.3.2 FASE DE DEFINICIÓN DE CONSULTA
............................................................................60
3.1.1.3.3 FASE DE VISUALIZACIÓN
..............................................................................................67
CAPÍTULO IV
...............................................................................................................................73
4 PRUEBAS Y RESULTADOS
.........................................................................................................73
4.1 RESULTADOS
........................................................................................................................73
4.1.1 BASE DE DATOS: CANTINA BAR
.........................................................................................75
4.1.2 BASE DE DATOS: EXPOFINDER
...........................................................................................81
4.1.2.1 REPRESENTACIÓN GEPHI
................................................................................................85
-
vi
4.2 PRUEBAS
..............................................................................................................................86
4.2.1 CAPTURAS DE PANTALLA DEL FUNCIONAMIENTO DE VISUALGRAPH EN
DISPOSITIVO
ANDROID:
...................................................................................................................................89
4.2.2 CAPTURAS DE PANTALLA DEL FUNCIONAMIENTO DE VISUALGRAPH EN
DISPOSITIVO IOS:
...................................................................................................................................................90
CAPÍTULO V
................................................................................................................................92
5. CONCLUSIONES Y RECOMENDACIONES
.................................................................................92
5.1 CONCLUSIONES
....................................................................................................................92
5.2 RECOMENDACIONES
............................................................................................................95
BIBLIOGRAFÍA
.............................................................................................................................97
LISTA DE FIGURAS
Figura 1.1: Ejemplo de visualización Raw Graphs. (Dealberto
& Grandin,2018). .........................9
Figura 1.2: Ejemplo de visualización Linkurious. (Jean Villedieu
Linkurious Co-Founder,2018). 10
Figura 1.3: Ejemplo de visualización keylines.
............................................................................11
Figura 1.4: Ejemplo de visualización Graphistry. (Página
oficial, 2018) ......................................12
Figura 2.1: Ilustración de los siete puentes en la ciudad de
Königsberg. ...................................13
Figura 2.2: Representación tipos de grafo.
.................................................................................14
Figura 2.2.1: Ejemplo de aplicación de algoritmo ForceAtlas a
una red de información. ...........16
Figura 2.3: Representación de un camino en un grafo.
..............................................................17
Figura 2.4: Representación de un Traversal.
..............................................................................20
Figura 2.5: Representación de estructuración de información
basada en tablas. ......................21
Figura 2.6: Ejemplo de esquema de base de datos SQL. Esquema HR.
......................................23
Figura 2.7: Ejemplo de base de datos clave-valor
......................................................................25
Figura 2.8: Ejemplo base de datos documental
.........................................................................25
Figura 2.9: Ejemplo base de datos orientadas a
grafo................................................................26
Figura 2.10: Logotipo Neo4j.
......................................................................................................27
Figura 2.11: ejemplo Cypher.
.....................................................................................................28
Figura 2.12: Ejemplo de consulta Cypher.
..................................................................................29
Figura 2.13: Ilustración sobre arquitectura cliente-servidor.
.....................................................30
Figura 2.14: Esquema de una posible arquitectura web
cliente-servidor. .................................30
Figura 2.15: Logotipo HTML.
......................................................................................................33
Figura 2.16: Estructura básica de una plantilla HTML.
...............................................................33
Figura 2.17: Logotipo CSS.
..........................................................................................................34
-
vii
Figura 2.18: Logotipo JavaScript
.................................................................................................34
Figura 2.19: Esquema del funcionamiento de Django.
...............................................................36
Figura 2.20: SigmaJS.
..................................................................................................................37
Figura 3.1: Esquema del funcionamiento de Django Rozo N. Janeth
(2010). .............................38
Figura 3.2: Esquema del proceso de la metodología en
cascada................................................39
Figura 3.3: Fases de implementación de visualGraph.
...............................................................42
Figura 3.4: Formulario de conexión con base de datos Neo4j.
...................................................43
Figura 3.5: Boceto del esquema de base de datos.
....................................................................44
Figura 3.6: módulo de construcción de traversals.
.....................................................................45
Figura 3.7: aplicación de propiedad asociativa para definir una
fórmula de traversals .............47
Figura 3.8: Operaciones complementarias de definición de
consulta (selección de métricas,
límite de consulta)
......................................................................................................................47
Figura 3.9: Boceto de la representación visual
...........................................................................48
Figura 3.10: Representación visual (Descripción de las
configuraciones)...................................49
Figura 3.11: Esquema de las tecnologías implementadas en el
desarrollo de visualGraph. .......51
Figura 3.12: Captura de pantalla del entorno de visualGraph.
...................................................52
Figura 3.13: Captura de pantalla del entorno de visualGraph.
...................................................52
Figura 3.14: Captura de pantalla del entorno de visualGraph.
...................................................53
Figura 3.15: Acceso a visualGraph.
.............................................................................................53
Figura 3.16: Captura de pantalla del código implementado en el
sistema de usuario. ..............54
Figura 3.17: Plantilla para el inicio de sesión.
.............................................................................55
Figura 3.18: Plantilla para el registro de nuevo usuario.
............................................................56
Figura 3.19: Captura de pantalla de visualGraph, formulario de
inicio de sesión. .....................56
Figura 3.20: Captura de pantalla de visualGraph, formulario de
registro. .................................57
Figura 3.21: Captura de pantalla de visualGraph, formulario de
autenticación de base de datos.
...................................................................................................................................................58
Figura 3.22: Captura de pantalla de código que posibilita la
conexión con la base de datos. ....58
Figura 3.23: Captura de pantalla de visualGraph, bases de datos
almacenadas. .......................59
Figura 3.24: Captura de pantalla de visualGraph, esquema de base
de datos. ..........................60
Figura 3.25: Captura de pantalla de visualGraph, tabla de tipos
de nodos y relaciones en la base
de datos.
....................................................................................................................................61
Figura 3.26: Captura de pantalla de código que permite la
representación visual del esquema.
...................................................................................................................................................62
Figura 3.27: Captura de pantalla del código que posibilita la
construcción de traversals. .........63
Figura 3.28: Lista de traversals para creación de funciones
lógicas. ..........................................63
Figura 3.29: Captura de pantalla del entorno de visualGraph.
...................................................64
Figura 3.30: Función para la creación de traversals
...................................................................66
-
viii
Figura 3.31: Representación visual.
............................................................................................68
Figura 3.32. Algoritmo de representación visual.
.......................................................................71
Figura 4.1: Registro de usuario en visualGraph.
.........................................................................73
Figura 4.2: Ingreso de usuario en visualGraph.
..........................................................................74
Figura 4.3: Comprobación de inicio de sesión en visualGraph.
..................................................74
Figura 4.4: Credenciales Neo4j.
..................................................................................................75
Figura 4.5: Ingreso de credenciales de Neo4j en visualGraph.
...................................................76
Figura 4.6: Esquema visual de la base de datos.
........................................................................76
Figura 4.8: Representación visual de los resultados.
..................................................................78
Figura 4.9: Selección de etiquetas para nodos.
..........................................................................78
Figura 4.10: Representación visual en base a una métrica
aplicada...........................................79
Figura 4.11: Construcción de traversal.
......................................................................................79
Figura 4.12: Creación de función lógica en base a traversals
creados. .......................................80
Figura 4.13: Representación standard en visualGraph.
..............................................................80
Figura 4.14: Representación visual de los resultados con métrica
con parámetros de
configuración.
............................................................................................................................81
Figura 4.15: Representación gráfica del esquema de base de
datos. .........................................82
Figura 4.16 Representación en tabla de las relaciones contenidas
en el grafo. .........................82
Figura 4.17: Construcción de traversal.
......................................................................................83
Figura 4.18: Representación visual, limitación de cincuenta.
.....................................................83
Figura 4.19: Representación visual, limitación de cien.
..............................................................84
Figura 4.20: Representación visual, limitación de mil.
...............................................................84
Figura 4.21: Apertura del archivo generado con la herramienta
Gephi. ....................................85
Figura 4.22: Ejemplo de archivo generado con la herramienta
Gephi. .......................................86
Figura 4.23: Representación visual, (navegador Chrome).
.........................................................88
Figura 4.24: Representación visual, (navegador Edge).
..............................................................88
-
ix
TÍTULO: Desarrollo e implementación de una librería de análisis
y visualización de
datos basados en grafo.
Autor: Torres Bonilla Pablo Sebastián
Tutor: Ing. Ruiz Chávez Zoila de Lourdes
RESUMEN
El presente proyecto consiste en el desarrollo de visualGraph,
una herramienta web de
análisis y visualización de datos relacionales. La herramienta
permite la conexión con una
base de datos en grafo, la generación de consultas basadas en
caminos tipados, así como
una rica visualización de los resultados de las consultas. De
una manera sencilla e intuitiva
es posible la construcción de consultas complejas basadas en
caminos tipados o
combinaciones lógicas de estos, así como la obtención de
visualizaciones configurables
de los resultados; también ofrece la posibilidad de descargar
archivos con los resultados
de las consultas realizadas para su posterior análisis en
herramientas habituales de análisis
de redes. visualGraph se basa en distintas tecnologías que hacen
posible su desarrollo;
resaltamos el uso de lenguajes de programación como Python y
JavaScript, de librerías
como NetworkX o SigmaJS y del framework de desarrollo web
Django.
PALABRAS CLAVE: ANÁLISIS DE REDES/ APLICACIÓN WEB/ GRAFOS/
BASE DE DATOS ORIENTADAS A GRAFO/NEO4J
-
x
TITLE: Development and implementation of a library for the
analysis and visualization
of graph databases.
Author: Torres Bonilla Pablo Sebastián
Tutor: Ing. Ruiz Chávez Zoila de Lourdes
ABSTRACT
The present project includes the development of a web tool for
analysis and visualization
of relational data called visualGraph. Obtained tool allows the
connection with a graph
database, the generation of queries based on typed paths, and
the subsequent visualization
of results. In a simple and intuitive way, it is possible to
build complex queries as well as
obtaining configurable visualizations of the results; It also
offers the possibility to
download files with the query results to allow the analysis of
the results standard graph
analysis software. visualGraph links different technologies that
make its development
possible; we highlight the use of programming languages such as
Python and JavaScript,
libraries such as NetworkX or SigmaJS and the Django web
development framework.
KEYWORDS: NETWORK ANALYSIS/ WEB APPLICATION/ GRAPHS/ GRAPH
DATABASE/ NEO4J
-
1
INTRODUCCIÓN
La herramienta presentada en este documento está orientada al
análisis y visualización de
datos relacionales; ha sido desarrollada en colaboración con la
Universidad de Sevilla y
la Universidad de Málaga, concretamente en el marco del proyecto
“Metodologías de
datos aplicadas al análisis de las exposiciones artísticas en
Andalucía para el desarrollo
de la economía creativa”, el cual se encarga del análisis de
información sobre
exposiciones de arte que se han llevado a cabo en España en los
últimos años.
A la hora de analizar los datos recopilados en dicho proyecto,
se hizo necesaria una
herramienta que facilitara la construcción de consultas basadas
en caminos tipados
evitando el uso de lenguajes de programación y el cambio
constante de plataformas para
realizar operaciones. La aplicación que presentamos en esta
memoria evita la conexión
con softwares externos y permite analizar la importancia de los
diferentes elementos en
una red en función de patrones relacionales definidos por el
usuario, así como la obtención
de una representación visual de los resultados. Todas estas
funcionalidades pueden ser
llevadas a cabo a través de la herramienta web presentada, sin
necesidad de utilizar
software externo.
El resultado final presentado en este documento es producto de
las exigencias del citado
proyecto llevado a cabo en conjunto con la Universidad de
Sevilla y la Universidad de
Málaga. En un inicio las funcionalidades iban a ser solventadas
a través de una librería
de código, pero la complejidad de manejar distintas plataformas
y la dificultad de mostrar
resultados inmediatos forzó la creación de una interfaz, de tal
manera que el usuario no
deba hacer ninguna tarea extra para empezar a trabajar sobre sus
datos. La herramienta
ofrece sus servicios a través de la web, asegurando su
funcionamiento y acceso inmediato
-
2
desde cualquier parte del mundo y además cuenta con un sistema
de usuarios que permite
gestionar sus bases de datos y consultas agilizando procesos en
futuras interacciones.
A lo largo del documento se presentan los diferentes contenidos
conceptuales sobre los
que se basa la herramienta, así como los diferentes procesos que
han permitido su
desarrollo y evaluación.
-
3
CAPÍTULO I
1. DEFINICIÓN DEL PROBLEMA
1.1 ANTECEDENTES
La gran cantidad de datos digitales que almacenamos en la
actualidad dificulta en
ocasiones su visualización, así como la extracción de
conocimiento útil a partir de los
mismos. Son muchos los esfuerzos que se han direccionado al
tratado de datos con el fin
de obtener herramientas de visualización y análisis; contando
hoy en día con numerosos
softwares libres y de pago.
Para solventar problemas relacionados con el almacenamiento y
manejo de grandes
cantidades de información relacional surgen las bases de datos
en grafo que permiten
almacenar la información de tal manera que optimizan el
rendimiento en las consultas en
base a las relaciones de los elementos.
Para el análisis de datos relacionales, existen tecnologías que
permiten evaluar las
métricas habituales con el fin de obtener información valiosa a
partir de este tipo de
estructuras, información que puede ser reflejada en
representaciones gráficas en base a
alguna propiedad que compartan los datos (por ejemplo, nodos
sobresalientes en la red
vistos desde distintas perspectivas).
La aplicación de técnicas de análisis de redes ha sido útil en
casos en los que las
conexiones entre los datos puedan contribuir en la búsqueda de
solución a un problema.
El direccionamiento que se le dé a la información analizada
puede aportar en procesos de
automatización; como es el caso de páginas de compra por
internet donde se le sugiere al
usuario productos que le podrían interesar a través de
algoritmos que analizan las
-
4
relaciones existentes entre la información obtenida del usuario
como: compras previas,
visita a determinados artículos e incluso su posición
geográfica.
Existen algunas herramientas que permiten analizar datos basados
en grafos como:
Linkurious, Gephi, Graphistry entre otras. Estas herramientas
están optimizadas para el
manejo de grandes volúmenes de información y cada herramienta
posee funcionalidades
diferentes que resuelven distintos problemas y que brindan
variedad de experiencias al
usuario. Estas herramientas en su mayoría ofrecen
funcionalidades a través de software
de pago o bien pueden ser añadidas como librerías a un
determinado lenguaje de
programación, limitando el posible uso a personas ajenas a
tecnologías informáticas.
1.2 FORMULACIÓN DEL PROBLEMA
En la actualidad se cuenta con herramientas que permiten
analizar y visualizar
información relacional almacenada en bases de datos orientadas a
grafo. Estas
herramientas, en su mayoría se encuentran orientadas a
programadores y conocedores de
sistemas informáticos, además requieren ser instaladas en un
determinado sistema
operativo para que sea posible su ejecución, así como establecer
conexión con softwares
externos para funcionalidades extras (análisis de la
información, representaciones
visuales, etc.), estableciéndose así obstáculos entre el sistema
y los usuarios que no
dominen el manejo de estos sistemas informáticos. Actualmente no
existen herramientas
que permitan la conexión con una base de datos en grafo, la
construcción de consultas
basadas en caminos tipados, la aplicación de técnicas de
análisis de redes y la
representación visual de los resultados a través de un entorno
web.
-
5
1.3 DESCRIPCIÓN DEL PROBLEMA
A medida que los años han transcurrido desde la invención de la
computadora, la forma
de almacenar y procesar la información ha evolucionado
permitiendo distintos
paradigmas de almacenamiento.
Las bases de datos relacionales convencionales (SQL) han ayudado
a estructurar la
información permitiendo gestionar millones de datos, pero están
limitadas en procesos en
los que se requiera extraer información de las relaciones entre
los elementos que
componen una red de información (Robinson I., 2015). Este tipo
de base de datos están
estructuradas en forma de tablas y eso dificulta la modificación
de su estructura, así como
el correcto rendimiento a la hora de ejecutar consultas en base
a las relaciones. Para
solventar este tipo de inconvenientes surgen las bases de datos
en grafo (un tipo de BD
noSQL) sustentadas en la teoría de grafos, que son más
eficientes a la hora de realizar
consultas en base a las relaciones entre los elementos, y que
además permiten modificar
su estructura en cualquier punto del proyecto. Del potencial de
estructurar información
en una base de datos en grafo se pueden destacar la
escalabilidad, la flexibilidad y el uso
optimizado del hardware (Merkl S., Chao J., 2018).
Redes sociales, tiendas online y motores de búsqueda, entre
otros, se pueden tomar como
ejemplos de uso de bases de datos en grafo, evidenciando el
potencial que tienen las
mismas al momento de trabajar con grandes volúmenes de
información, a través de
algoritmos de análisis y consulta basados en las relaciones
existentes entre los datos. Estas
bases de datos, permiten realizar consultas a larga distancia
(en las que se ven
involucradas más de un tipo de relación) entre elementos y medir
los patrones relacionales
que existen entre diferentes conjuntos de datos. Sin embargo, no
existe una herramienta
accesible e interactiva a través de la web que integre la
posibilidad de conectarse con una
base de datos en grafo, aplicar traversals (patrón de caminos
tipados) sobre dicha base
-
6
para obtener un grafo resultante y aplicar métricas a los nodos
del grafo resultado. Por
tanto, el desarrollo de este proyecto es favorable para la
comunidad informática, así como
para personas de distintas áreas del conocimiento interesadas en
el análisis de redes.
1.4 JUSTIFICACIÓN
Las bases de datos orientadas a grafo muestran grandes
resultados al trabajar con
información relacional a gran escala y se puede encontrar
software que permite la
estructuración, análisis y representación visual de información
relacional.
Las imágenes visuales en las ciencias cuantitativas desempeñan
un papel importante a la
hora de representar información. Esta idea no es contemporánea
al advenimiento de la
computadora y los gráficos por ordenador, ya que en el pasado se
llevaron a cabo a través
de representaciones manuales que requerían de gran esfuerzo y
precisión. Al nacer la
computadora, con la potencialidad de automatizar procesos y de
realizar representaciones
visuales, distintos campos de la ciencia se favorecieron,
dotando de confianza a procesos
en los que se requiere de minuciosidad y exactitud.
En este proyecto se ha desarrollado una herramienta para el
análisis de datos en forma
de grafo, que permite consultas a través de caminos tipados, así
como la representación
visual de los resultados. Además, esta herramienta enlaza
tecnologías libres existentes
permitiendo integrar funcionalidades probadas y aprobadas por la
comunidad científica
interesada, aportando de esta manera con fiabilidad en los
diferentes procesos que la
herramienta integra.
La herramienta desarrollada será de gran utilidad pues,
permitirá realizar operaciones
sobre bases de datos orientadas a grafos de una forma sencilla,
arrojando información útil
sin necesidad de utilizar diferentes plataformas.
-
7
1.5 OBJETIVOS
1.5.1 OBJETIVO GENERAL
Desarrollar una librería software que permita el análisis y la
visualización de datos
basados en grafo, haciendo uso de las métricas habituales para
el análisis de redes, así
como de proyecciones basadas en caminos tipados.
1.5.2 OBJETIVOS ESPECÍFICOS
▪ Estudio de los conceptos más importantes relacionados con la
teoría de grafos y
el análisis de redes e incorporación de dichos conceptos a la
librería software
planteada.
▪ Estudio de técnicas relacionadas con la proyección de grafos
basada en caminos
tipados e incorporación de dichas técnicas a la librería
software planteada.
▪ Estudio de diferentes técnicas de representación gráfica de
redes e incorporación
de dichas técnicas a la librería software planteada.
▪ Unificación de los desarrollos planteados en los objetivos
anteriores en una
librería software que permita el análisis y la visualización de
datos basados en
grafos.
▪ Aplicación de la librería desarrollada a un caso de estudio
concreto.
1.6 ALCANCE
La herramienta expuesta a lo largo del documento permitirá
fusionar etapas enlazadas en
el análisis de redes. Si bien existe una gran cantidad de
herramientas que favorecen a la
hora de analizar una red de información, éstas están orientadas
a solventar una
-
8
funcionalidad en particular forzando al usuario a cambiar de
entorno al avanzar de etapa,
invirtiendo tiempo y esfuerzo.
Por lo expuesto con anterioridad la herramienta planteada está
orientada a solventar este
problema; posibilitando el análisis a través de métricas y
proyecciones basadas en
caminos tipados, así como la representación de los resultados en
un entorno web,
ofreciendo una experiencia amigable y que sea accesible desde
cualquier parte del mundo.
1.7 LIMITACIONES
La conexión con bases de datos se limitará a la tecnología
Neo4j1. Es importante verificar
que la conexión con la base de datos sea posible, considerar que
la base de datos esté
activa y cuente con los permisos para acceder a la misma. La
base de datos debe contar
con nodos y relaciones para que la herramienta pueda ofrecer
resultados.
En la herramienta, la visualización que se muestra será con el
fin de representar los datos
obtenidos en los procesos. Se cuenta con la posibilidad de
trabajar sobre un archivo
descargable con el que se podrán realizar visualizaciones más
ricas en base a los datos
obtenidos con la herramienta Gephi2.
La herramienta considera tres métricas de centralidad en los
nodos: Degree, Pagerank y
Betweenness. El rendimiento de la aplicación dependerá de la
densidad de la base de
datos, longitud de las consultas definidas, así como del límite
que se le dé al número de
las consultas, pues equivaldrá al número de datos que se
muestran en la representación
gráfica resultante.
1 https://neo4j.com/
2 https://gephi.org/
-
9
En las visualizaciones que genera la herramienta se pueden
mostrar óptimamente un
máximo de 600 relaciones. Sin embargo, los archivos descargables
consideran cualquier
número de elementos.
A la hora de diseñar consultas basadas en caminos tipados, el
tipo de camino que se quiera
recorrer en el grafo debe tener sentido: la sucesión de tipos de
nodos y relaciones que se
especifiquen, así como la dirección de las relaciones deben
existir en la base de datos. Si
el camino no existiese se devolverá un grafo vacío.
1.8 INVESTIGACIÓN BIBLIOGRÁFICA
Investigando se pudo constatar que una herramienta que ofrezca
los mismos servicios
integrados no existe a través de un entorno web. A continuación,
se mencionan
herramientas similares que permiten representaciones gráficas de
los datos:
1.8.1 RAW GRAPHS
Figura 1.1: Ejemplo de visualización Raw Graphs. (Dealberto
& Grandin,2018).
-
10
RAWGraphs3 es un marco de visualización de datos de código
abierto creado con el
objetivo de facilitar la representación visual de datos
complejos. tiene como objetivo
proporcionar un eslabón entre las aplicaciones de hoja de
cálculo (por ejemplo, Microsoft
Excel, Apple Numbers, OpenRefine) y editores de gráficos
vectoriales (por ejemplo,
Adobe Illustrator, Inkscape, Sketch) La idea detrás de RAW
Graphs es proporcionar una
infraestructura para encapsular gráficos para que las personas
sin habilidades de
codificación pueden utilizarlos con sus propios datos. (Michelle
Mauri, Tommaso Elli,
Giorgio Caviglia, Giorgio Uboldi,2017).
1.8.2 LINKURIOUS
’
Figura 1.2: Ejemplo de visualización Linkurious. (Jean Villedieu
Linkurious Co-Founder,2018).
Es un software de análisis y visualización de redes que permite
detectar patrones
sospechosos, comprender las conexiones existentes y descubrir
otras nuevas en datos
3 https://rawgraphs.io/
-
11
relacionales. Linkurious permite la representación gráfica de
bases de datos como:
Neo4j4, TitanDB5, DataStasx6, AllegroGraph7.
1.8.3 KEYLINES
Figura 1.3: Ejemplo de visualización keylines.
“KeyLines es un potente conjunto de herramientas para crear
aplicaciones de
visualización de grafos de alto rendimiento. Desde la aplicación
de la ley hasta la
seguridad cibernética y la detección de fraudes, las
organizaciones de todo el mundo
confían en KeyLines para descubrir amenazas y conocimientos
sobre sus datos en grafos”.
(Página oficial, 2018).
4 https://neo4j.com/
5 http://titan.thinkaurelius.com/
6 https://www.datastax.com/
7 https://franz.com/agraph/allegrograph/
-
12
1.8.4 GRAPHISTRY
Figura 1.4: Ejemplo de visualización Graphistry. (Página
oficial, 2018)
Graphistry8 es un software que permite el análisis y la
visualización de datos almacenados
en distintas plataformas. ofreciendo un motor potente con
funcionalidad de trabajo GPU.
Las herramientas presentadas en este apartado permiten conocer
las distintas formas de
representación gráfica de datos y el potencial que tienen los
datos relacionales. Siendo
posible analizar redes inmensas de datos con distintos fines
como: la graficación de los
datos en base a propiedades que compartan e incluso aplicar
algoritmos propios de las
herramientas para detección de fraudes, obtención de información
sobresaliente, y la
migración de información desde otras plataformas.
8 https://www.graphistry.com/
https://www.graphistry.com/
-
13
CAPÍTULO II
2. MARCO TEÓRICO
En el presente trabajo se desarrolla una herramienta que se
ofrece a través de un entorno
web; el mismo que permite el análisis, así como la
representación visual de una base de
datos en grafo mediante aplicación de métricas y proyecciones de
caminos tipados. La
herramienta hace uso de distintas tecnologías de diseño web y
lenguajes de programación
que facilitan el cumplimento de los objetivos planteados. El
presente capítulo define
conceptos fundamentales considerados en la creación de la
herramienta.
2.1 TEORÍA DE GRAFOS
Es una rama de las matemáticas y las ciencias de la computación
que estudia los grafos;
que son estructuras matemáticas que permiten la representación
de relaciones entre
objetos. La teoría de grafos surge en el año de 1736. Como
alternativa a un problema
matemático dado en la ciudad de Königsberg (Kaliningrado,
Rusia), en el que se
considera un río que dividía en 4 regiones distintas a la
ciudad, partes que se encuentran
conectadas entre sí por 7 puentes, como se muestra en la
siguiente imagen:
Figura 2.1: Ilustración de los siete puentes en la ciudad de
Königsberg.
-
14
El enunciado del problema consistía en encontrar un camino que
permita cruzar toda la
ciudad a pie pasando solo una vez por cada uno de los puentes, y
volver al punto inicial.
Mediante una representación en forma de grafo se pudo constatar
que no era posible. De
la resolución del problema surgió la teoría de grafos. (Haray
F., 2015).
Un grafo se puede definir como una estructura matemática
compuesta por un conjunto de
nodos (vértices) y un conjunto de relaciones (aristas):
G= (V, E)
Donde V representa el conjunto de vértices o nodos del grafo y E
representa el conjunto
de aristas o relaciones. Cada arista e ∈ E está formada por un
par {u, v} de vértices en V
(u, v ∈ V). Diremos que la arista e conecta los nodos u y v.
El número de vértices Nv= |V| y el número de aristas Ne= |E| son
a menudo llamados el
orden y el tamaño del grafo G, respectivamente.
2.1.1 GRAFO
Un grafo se puede clasificar de acuerdo a cómo están
relacionados los nodos que lo
componen en grafo dirigido y grafo no dirigido:
Figura 2.2: Representación tipos de grafo.
-
15
Se dice que un grafo G es dirigido si para cada arista en E, el
orden en el que están
dispuestos los nodos importa; es decir {u, v} es distinto de {v,
u}. La dirección
gráficamente es representada por una flecha. En cuanto a los
grafos no dirigidos, el orden
en el que están dispuestos los nodos en una arista no importa,
es decir {u, v} es lo mismo
que {v, u}, en este caso la arista que conecta dos nodos es
representada con una línea entre
los mismos
Dos nodos u, v en V son adyacentes si están conectados a través
de una arista en E. Así,
relaciones e1, e2 ∈ E son adyacentes si tienen en común un
vértice en V.
Existe la posibilidad de añadir pesos a las aristas, valores que
pueden estar basados en
alguna propiedad que comparten los nodos o bien producto del
análisis topológico de la
red de información.
La representación visual de grafos no es algo trivial. Es un
proceso que no está
estandarizado, pues, hay que considerar que un grafo G compuesto
de nodos y relaciones
no contiene una geometría inherente. El usuario es quien se
encarga de destacar la
información que se quiere analizar, configurando
representaciones que consideran
tamaños, colores y formas distintas, pero que responden a los
objetivos que el usuario
requiera.
Se pueden definir 3 etapas necesarias en la representación de un
Grafo:
● Recopilación de información.
● Estructuración y tratado de la información que se desee
representar.
● Renderización de la representación en forma de imagen
visual.
-
16
Dado que normalmente los elementos en un grafo son representados
en un espacio
bidimensional hay que tener claro que cada elemento que se
represente en el mismo debe
poseer coordenadas (x, y) asociadas que determinen su posición.
Existen algoritmos que
facilitan la ubicación geométrica de los elementos en un grafo
como es el caso de
ForceAtlas.
ForceAtlas es un algoritmo que permite la distribución de los
elementos que componen
una red desde una perspectiva física; los nodos son considerados
como partículas y son
agrupados con sus vecinos más cercanos generando islas de datos
definidas. En síntesis,
el algoritmo se sustenta en una fuerza de atracción y una fuerza
de repulsión que permiten
determinar la distancia entre los nodos, donde las partículas
sufren más repulsión y menos
atracción al estar cerca y viceversa. (AD TECH & ANALYTICS,
2016).
Figura 2.2.1: Ejemplo de aplicación de algoritmo ForceAtlas a
una red de información.
2.1.2 CAMINO
Un camino en un grafo se puede definir como una lista de nodos
conectados
sucesivamente a través de relaciones. A continuación, se ilustra
un ejemplo, donde se
especifica en color negro un camino que parte del nodo n3 al
nodo n5 a través de las
relaciones a, c, b.
https://www.analiticaweb.es/category/ad-tech-analytics/
-
17
Figura 2.3: Representación de un camino en un grafo.
2.2 MÉTRICAS
Las métricas están destinadas a ser aplicables en el análisis de
grafos de cualquier
estructura o tamaño, permitiendo comparaciones cuantitativas
entre distintas entidades en
un grafo. (Purchase,2002).
Dado un grafo, es posible explorar las características y
propiedades estructurales de los
elementos que lo conforman. El simple hecho de realizar una
representación de todas las
relaciones en un grafo arroja poca o nula información relevante
y carece de fuerza visual
para aportar en un posible análisis de los datos. Las métricas
sobre los nodos permiten
agregar propiedades a los mismos, clasificándolos de cierta
forma en base al papel que
desempeñan en la red vista como un todo. Siendo los vértices y
las aristas los elementos
fundamentales en un grafo, se pueden aplicar medidas de
centralidad a estos elementos.
Las medidas de centralidad permiten encontrar nodos
sobresalientes en una red
determinada, a continuación, se definen varios tipos de
centralidad que se incluyen en la
herramienta que se desarrolla.
-
18
2.2.1 DEGREE
Sea un grafo G = (V, E), donde V es el conjunto de los nodos y E
es el conjunto de las
relaciones. Se define como centralidad degree de un nodo v ∈ V
al número de aristas en
E incidentes en v. Es decir, el número de veces que v está
relacionado con otros nodos en
V.
2.2.2 BETWEENNESS
Dado un grafo conexo G = (V, E) y dados dos nodos (u, v) en V,
existe al menos una ruta
más corta entre dichos nodos. Para cada nodo se define su
centralidad betweenness como
el número de veces que participa en una ruta más corta dados
todos los pares de nodos en
V. (Kolaczyk, E. D., 2009).
2.2.3 PAGERANK
PageRank es un algoritmo que está implementado en la ingeniería
del motor de búsqueda
de Google9 y que considera la importancia de una página web
basada en la importancia
de páginas conectadas a la misma. La idea esencial es que, si
una determinada página u
tiene un enlace a la página v, u confiere importancia a v. De
manera general, PageRank
es un algoritmo que permite aplicar un valor numérico a un nodo
basado en el número de
enlaces que dicho nodo posee y en la importancia de dichos
enlaces.
PageRank Considera tres factores a la hora de determinar la
importancia (centralidad) de
un nodo:
9 https://www.google.com/
https://www.google.com/
-
19
-El número de enlaces que recibe.
-La propensión de enlace de los nodos con los que se encuentra
relacionado.
-La centralidad de los enlazadores.
PageRank puede ayudar a descubrir nodos influyentes o
importantes cuyo alcance se
extiende más allá de sus conexiones directas, considerando su
potencial en base a la
influencia de nodos adyacentes (Page L., 1999).
2.3TRAVERSALS
Podemos describir un traversal (descripción de un tipo de camino
tipado) para un grafo
G como una lista ordenada T = , donde Ni son subconjuntos de
nodos del grafo y Ei son subconjuntos de aristas (habitualmente,
ambos serán tipos de
nodos y aristas del grafo). Diremos que un camino P en el grafo
G cumple con el traversal
T si (1) la sucesión de nodos que conforman el camino
(n1,n2,...,nn) cumplen
respectivamente con la sucesión de tipos de nodos definidos en T
(N1,N2,...Nn) y (2) la
sucesión de aristas que conforman el camino (e1,e2,...,en-1)
cumplen respectivamente con
la sucesión de tipos de aristas definida en T (E1,E2,...,En-1),
es decir n1 ∈ N1, n2 ∈N2, …,
nn ∈ Nn y e1 ∈ E1, e2 ∈E2, …, en ∈ En.
Un traversal puede ser interpretado como una herramienta de
transformación de grafos:
Si a un grafo G, se le aplica un traversal T, se obtendrá un
subgrafo G1 con nodos N1 ∪
Nn. En cuyo caso se pueden añadir aristas entre elementos de N1
y elementos de Nn
siempre que representen el origen y el destino de un mismo
camino cumpliendo con el
traversal. Además, podemos especificar un peso a estas aristas
en función del número de
caminos que cumplan con el traversal entre cada par de nodos.
(Sancho F., 2016).
-
20
Figura 2.4: Representación de un Traversal.
Existe otra definición popular en las ciencias de la computación
sobre traversal, en cuyo
caso se trata de un algoritmo que permite recorrer el grafo para
verificación o
actualización de elementos, visitando todos y cada uno de los
nodos existentes en un
grafo. En el desarrollo del presente trabajo cuando se hable de
traversals se hará referencia
a la primera definición expuesta en este apartado.
2.4 BASES DE DATOS
Las bases de datos facilitan el tratado de información aportando
eficiencia en la gestión
y manipulación de la misma.
Desde su aparición, las bases de datos han aportado en el
procesamiento de información,
algo vital para empresas e instituciones, permitiendo
transacciones en tiempo real entre
aplicaciones informáticas y usuarios. Existen distintas formas
de almacenar y organizar
la información dentro de una base de datos, a éstas se las
conoce como “Modelos de base
de datos”. La estructura de las bases de datos debe adaptarse a
los requerimientos de
volumen de información, las relaciones entre los datos, la
semántica y sus limitaciones.
-
21
Figura 2.5: Representación de estructuración de información
basada en tablas.
A continuación, se presentan los principales modelos de base de
datos.
2.4.1 BASES DE DATOS RELACIONALES
En el modelo relacional la información se dispone a manera de
tablas, en las que se
incluyen entidades de un tipo particular (Empleados, empresa,
locación, etc.) y cuyos
registros comparten estructura y propiedades semejante. Cada
registro debe tener un
identificador único para poder enlazar información alojada en
distintas tablas a través de
relaciones preestablecidas.
Para poder acceder y manipular los datos almacenados en una
tabla, así como realizar
operaciones de adición, eliminación y modificación de campos en
las tablas se utiliza lo
que se denominan lenguajes relacionales. El más común es el
lenguaje de consultas SQL
(Structured Query Language). (Silberschatz A., 2006).
-
22
El modelo relacional es un ejemplo de un modelo basado en
registros. Los modelos
basados en registros se denominan así porque la base de datos se
estructura en registros
de formato fijo de varios tipos. Cada tabla contiene registros
de un tipo particular. Cada
tipo de registro define un número fijo de campos, o atributos.
(Silberschatz A., 2006).
Desde la aparición del modelo relacional, éste se ha consolidado
como el modelo de bases
de datos más ampliamente utilizado. Sin embargo, actualmente con
la demanda de
grandes volúmenes y el continuo cambio en los esquemas de datos,
se han visto limitadas
a la hora de realizar consultas que relacionan distintas tablas,
así como a la hora de
modificar los campos pertenecientes a una tabla una vez
establecida.
Entre sus características principales se tiene que:
● Una base de datos relacional está compuesta por varias tablas
que pueden o no
relacionarse.
● No pueden existir tablas que lleven el mismo nombre.
● Las tablas están compuestas por filas y columnas. En las
columnas se especifican
los campos que contiene cada registro. Cada registro es
representado a través de
una fila en la tabla.
● Las relaciones entre distintas tablas son posible con el
comando JOIN10.
10 JOIN: Comando SQL que permite relacionar la información
contenida en distintas tablas.
-
23
Figura 2.6: Ejemplo de esquema de base de datos SQL. Esquema
HR.
2.4.2 BASES DE DATOS NOSQL
Las bases de datos SQL parecen no ser suficientes para tratar
con tan amplio universo de
problemas que vienen ligados a la aparición de grandes volúmenes
de información
heterogénea. Esto ha provocado la llegada de las tecnologías
para el almacenamiento de
datos englobadas dentro del concepto de NoSQL (Sadalage et al.,
2013).
En la actualidad, proyectos ambiciosos empiezan a optar por
modelos de base de datos
que no siguen las normas de las bases de datos relacionales;
principalmente por la falta
de flexibilidad, rendimiento y escalabilidad que el modelo
relacional implica. Dichos
modelos se denominan Bases de datos NoSQL (NoSQL no significa
una ausencia total
de SQL), y evitan la representación en tablas predefinidas,
permitiendo una modificación
en su estructura en cualquier momento. NoSQL proporciona el
rendimiento, la
escalabilidad y la flexibilidad que requieren muchas de las
aplicaciones modernas
(Robinson I., 2015).
-
24
Las bases de datos NoSQL surgen con la llegada de la web 2.0.
Con el surgimiento de
aplicaciones como Facebook, Twitter, YouTube, entre otras; donde
concurren miles de
usuarios con millones de consultas detrás de la arquitectura
mostrada al cliente.
Algunas de las ventajas de las bases de datos NoSQL son:
● Ejecución en ordenadores con recursos limitados: La forma en
que están
estructurados los datos en un sistema NoSQL permite la ejecución
en
computadores de bajo costo.
● Escalabilidad: Se pueden recorrer los datos de una manera
óptima, sin sacrificar
excesivo rendimiento.
● Manejo de grandes volúmenes de información: Las bases NoSQL
están
pensadas para trabajar con grandes volúmenes de datos,
manteniendo su fluidez.
2.4.2 TIPOS DE BASES DE DATOS NOSQL
2.4.2.1 BASES DE DATOS CLAVE-VALOR
Cada elemento de la base de datos se almacena como un nombre de
atributo (o "clave")
junto con su valor. Se caracterizan por ser muy eficientes tanto
para lectura como para
escritura de la información. Riak11, Voldemort12 y Redis13 son
los más conocidos en esta
categoría.
11 http://basho.com/products/ 12
https://www.project-voldemort.com/voldemort/ 13
https://redis.io/
-
25
Figura 2.7: Ejemplo de base de datos clave-valor
2.4.2.2 BASES DE DATOS DOCUMENTALES
Combinan una clave con una estructura de datos conocida como
documento, con una
estructura simple como JSON o XML. Se puede clasificar como uno
de los modelos de
bases de datos NoSQL más versátiles. MongoDB14 es la base de
datos más popular de
este tipo.
Figura 2.8: Ejemplo base de datos documental
14 https://www.mongodb.com/es
-
26
2.4.2.3 BASES DE DATOS ORIENTADAS A GRAFOS
Una base de datos orientada a grafos es un sistema NoSQL que
almacena información a
manera de grafo. HyperGraphDb15 y Neo4j16 son algunas de las
bases de datos más
populares de este tipo.
Figura 2.9: Ejemplo base de datos orientadas a grafo.
Entre las principales razones que convierten a una base de datos
orientada a grafo en un
sistema potente para almacenamiento de datos relacionales se
tiene el rendimiento y la
flexibilidad (Robinson I., 2015).
● Rendimiento: A diferencia de las bases de datos relacionales
SQL (donde el
rendimiento de las consultas disminuye con el crecimiento de la
información) las
bases de datos NoSQL mantienen un rendimiento estable, pues
están optimizadas
de tal manera que trabajan con la porción de información que
necesitan las
consultas especificadas evitando recorrer sectores de
información que no
intervengan.
15 http://hypergraphdb.org/
16 https://neo4j.com/
-
27
● Flexibilidad: Las bases de datos orientadas a grafo consideran
la posible
modificación de su estructura. Los grafos son naturalmente
aditivos, se puede
agregar nuevos tipos de relaciones y nuevos tipos de nodos sin
dañar la
funcionalidad. Gracias a la flexibilidad, el esquema de base de
datos puede ser
modificado en cualquier punto del desarrollo.
2.4.2.3.1 NEO4J
Figura 2.10: Logotipo Neo4j.
Neo4j es una plataforma libre implementada en Java que almacena
datos estructurados
en forma de grafo y es uno de los softwares utilizados en el
presente trabajo. Según la
página oficial del software, Neo4j puede soportar hasta 34
billones de nodos y 34 billones
de relaciones lo que lo hace potente frente a grandes cantidades
de datos.
La página oficial de Neo4j sostiene:
“En el mundo de las bases de datos relacionales, el rendimiento
de una operación join se
degradará exponencialmente con el número de relaciones
involucradas. Sin embargo, en
Neo4j la acción correspondiente se realiza como navegación de un
nodo a otro; Una
operación cuyo rendimiento es lineal. Este enfoque diferente
para almacenar y consultar
-
28
conexiones entre entidades proporciona un rendimiento
transversal de hasta cuatro
millones de saltos por segundo y núcleo. Como la mayoría de las
búsquedas son locales
en el vecindario de un nodo, la cantidad total de datos
almacenados en una base de datos
no afectará el tiempo de ejecución de las operaciones. La
administración de memoria
dedicada y las operaciones altamente escalables y eficientes en
memoria contribuyen a
los beneficios”.17
2.4.2.3.1.1 CYPHER
El lenguaje de consultas de Neo4j se denomina Cypher, éste
permite realizar consultas y
modificaciones en base a patrones de nodos y relaciones. El
lenguaje Cypher tiene las
características de ser intuitivo y sencillo.
Figura 2.11: ejemplo Cypher.
Al igual que SQL, Cypher es un lenguaje de consulta declarativo
que permite a los
usuarios realizar operaciones de: emparejamiento, inserción,
actualización o eliminación
de los elementos que componen la base de datos.
Entre las cláusulas más importantes se tiene:
17 Obtenido a través de la página oficial
(https://neo4j.com/).
https://neo4j.com/
-
29
CREATE: Permite la creación de elementos (nodos y enlaces).
MATCH: Permite especificar los patrones que Neo4j buscará en la
base de datos.
WHERE: permite la adición de restricciones o predicados a los
patrones MATCH.
RETURN: posibilita la devolución de partes del patrón que se
busca, nodos, relaciones
o propiedades de los mismos.
MERGE: Es una combinación de los comandos CREATE y MATCH,
permite la
creación de patrones que contengan nodos y relaciones, pero
evitando la creación de
duplicados. Al momento de crear elementos utilizando MERGE, el
sistema comprueba si
estos existen, de existir no se realiza cambio alguno, caso
contrario se crea lo que
corresponda.
Figura 2.12: Ejemplo de consulta Cypher.
2.5 ARQUITECTURA DE DESARROLLO WEB
La arquitectura web hace referencia a la forma en que un
servicio web distribuye los
procesos que permiten las interacciones (transacciones,
registros, aplicaciones, etc.) entre
el usuario y el servicio que se ofrece. La distribución de
funciones permite gestionar
determinada aplicación de una manera optimizada y segura para
los desarrolladores tanto
como para los usuarios.
-
30
Figura 2.13: Ilustración sobre arquitectura
cliente-servidor.
En las arquitecturas web encontramos diferentes elementos
importantes:
● Clientes: Son usuarios de un determinado servicio o
aplicación. Envían peticiones
y reciben respuestas, pueden ser navegadores o bots.
● Servidor: El servidor es un sistema que procesa las
peticiones, realiza
operaciones y validaciones, gestiona las bases de datos,
administra la interfaz de
usuario y retorna los resultados que se mostrarán en el lado del
cliente.
Figura 2.14: Esquema de una posible arquitectura web
cliente-servidor.
-
31
2.5.1 ARQUITECTURA CLIENTE SERVIDOR
El modelo Cliente/Servidor permite diversificar el trabajo que
realiza cada aplicación, de
forma que los clientes y el servidor no se sobrecarguen. En esta
arquitectura la capacidad
de proceso está repartida entre los clientes y los servidores,
aunque son más importantes
las ventajas de tipo organizativo debidas a la centralización de
la gestión de la
información y la separación de responsabilidades, lo que
facilita y clarifica el diseño del
sistema. (Emiliano Marini,2012).
El proceso de comunicación entre el cliente y el servidor
normalmente inicia cuando el
cliente ingresa a una página a través de un navegador web. Al
introducir la dirección en
el navegador, se envía una petición web al servidor, el mismo
que responde presentando
el servicio solicitado. A partir de ese momento la comunicación
entre el usuario y el
servidor es constante hasta finalizar la interacción.
2.5.2 ARQUITECTURA DE TRES CAPAS
Define a un modelado organizado a manera de capas en donde se
abstraen distintas
funcionalidades dentro de una aplicación.
Capa de presentación: Es la capa encargada de la interacción
entre el sistema y el
usuario. Muestra el sistema al usuario (presentación de
información) aislado de la capa
de negocios.
Capa de negocios: Contiene la lógica de procesamiento dentro de
la aplicación Web, la
comunicación con la capa de presentación se da para obtener las
entradas del usuario y
para mostrar los resultados. Así como la comunicación constante
con la capa de datos
para obtener información que se requiera.
-
32
Capa de datos: Es donde residen los datos y la encargada de la
manipulación de los
mismos. Recibe solicitudes de almacenamiento o recuperación de
información desde la
capa de negocio.
2.5.3 API-REST
Es un tipo de arquitectura de desarrollo web apoyada en el
estándar HTTP (Protocolo de
transferencia de hipertexto). (Massé M. 2012).
API: (Application programming interface) hace referencia a la
manera en que las
tecnologías sitios webs) intercambian datos. Al igual que una
interfaz gráfica de usuario
(GUI) facilita a las personas el uso de programas, las
interfaces de programación de
aplicaciones facilitan a los desarrolladores y tecnologías el
uso de ciertas herramientas.
REST: (Representational State Transfer) Un protocolo que permite
el intercambio de
datos en distintos formatos (XML, JSON, etc.).
El protocolo REST define métodos que mediante peticiones
permiten manejar los
recursos dentro de las páginas web. Entre los principales se
tiene:
-GET: Obtener datos/recursos.
-PUT. Actualizar datos.
-POST: Crear un nuevo recurso, enviar recursos.
-DELETE: Borrar el recurso.
-
33
2.6 HTML
Figura 2.15: Logotipo HTML.
HTML (Hypertext Markup Language) es un lenguaje basado en
etiquetas que permite la
creación de páginas web. HTML tiene un conjunto muy específico
de nombres de
etiquetas, y cada una de estas etiquetas representa un elemento
en una página web
determinada.
HTML permite la diferenciación de elementos a través de
identificadores y clases
definidas como atributos a las etiquetas; características que
permiten la adición de diseño
personalizado y especificaciones de funciones definidas que
permiten la representación
visual de un elemento (texto, imagen, animación, etc.) que en
conjunto forman una página
web.
Figura 2.16: Estructura básica de una plantilla HTML.
-
34
2.7 CSS
Figura 2.17: Logotipo CSS.
CSS (Cascading Style Sheets) es un lenguaje que trabaja junto
con HTML para proveer
estilos visuales a los elementos del documento, como tamaño,
color, fondo, bordes, etc.
(Gauchat J. 2012).
Oficialmente CSS no está integrado en HTML, es un complemento
desarrollado para
superar las limitaciones y reducir la complejidad de HTML. Dada
la estructuración de
una página web, es necesario nutrir de una apariencia que
permita llegar al usuario
objetivo. 2.8 JavaScript
Figura 2.18: Logotipo JavaScript
JavaScript es un lenguaje de programación que permite dotar de
interactividad a una
página web, contando con gran cantidad de librerías que están
orientadas a resolver
problemas particulares en entornos web.
-
35
JavaScript se asienta sobre un rico ecosistema de componentes
(pequeños bloques de
software que se pueden conectar fácilmente) y una gran comunidad
de desarrolladores.
Un número creciente de personas considera a JavaScript cómo la
tecnología más
importante en el desarrollo de software en la actualidad.
Pesquet B. (2015).
2.9 JQUERY
Es la librería web más popular para JavaScript, es gratuita y
fue diseñada para simplificar
la creación de sitios web modernos. Facilita la selección de
elementos HTML, la creación
de animaciones y efectos, también controla eventos y ayuda a
implementar Ajax18.
Gauchat J. (2012).
JQuery simplifica procesos cotidianos en el desarrollo de
páginas web, brindando
posibilidades de alto nivel a JavaScript.
2.10 DJANGO
Es un framework de desarrollo web gratuito y de código abierto
basado en Python.
Django19 simplifica los servicios web, permitiendo concentrarse
netamente en la creación
de la aplicación.
Django, entre sus características principales tiene el ser
rápido, seguro y escalable20. Su
implementación es sencilla y brinda un sinnúmero de
posibilidades para potenciarlos
servicio webs. El framework cuenta con un sistema de
administración de bases de datos,
18 Es una herramienta de JavaScript para realizar peticiones
remotas de manera asíncrona.
19 https://www.djangoproject.com/
20 Obtenido a través de la página Django oficial.
(https://www.djangoproject.com/)
https://www.djangoproject.com/
-
36
sistema de usuarios, un sistema de plantillas y muchas otras
funcionalidades importantes
que simplifican muchos procesos cotidianos en la implementación
de un servicio web.
Django tiene capas bien establecidas que colaboran con el orden
de los elementos en el
proyecto. Los elementos sobresalientes y necesarios en la
implementación de Django en
un proyecto web son: URLS, Vistas, Modelos y plantillas.
Figura 2.19: Esquema del funcionamiento de Django.
URLs: Se definen como direcciones que permiten redirigir
peticiones HTTP a una vista
en particular. Las direcciones definidas permiten al usuario
ingresar a través de un
navegador web para interactuar con el entorno web.
Vista (View): Una vista es una función Python que toma una
solicitud web y devuelve
una respuesta web, respuesta que puede ser el contenido de una
página HTML, una
imagen o cualquier elemento que se encuentre en una ruta del
proyecto. Es el lugar donde
se establece la lógica de una aplicación web; solicitando
información a los modelos y
presentándola a través de las plantillas.
-
37
Modelos (Models): Son estructuras donde se almacenan los datos y
donde se efectúan
las operaciones de adición, modificación y eliminación de
elementos.
Plantillas (Templates): Son ficheros de texto que definen la
estructura de una vista, la
cual servirá como plantilla para mostrar el contenido de una
web.
2.11 SIGMA.JS
Figura 2.20: SigmaJS.
SigmaJS21 es una biblioteca de JavaScript dedicada a la
representación visual de grafos.
Facilita la representación de redes en páginas web y permite a
los desarrolladores integrar
la exploración de redes en aplicaciones web enriquecidas.
(Página oficial, 2018).
SigmaJS facilita la representación de estructuras de datos en
forma de grafo. Aportando
significativamente con funciones que facilitan el manejo de la
información visual.
21 http://sigmajs.org/
-
38
CAPÍTULO III
3. MARCO METODOLÓGICO
3.1 METODOLOGÍA
La obtención de un software de calidad implica ejecutar un
proceso organizado que
permite planificar su elaboración, significando una sucesión de
etapas que abarcan el
análisis, diseño, desarrollo y pruebas del mismo. A su vez una
metodología permite elevar
la productividad de una idea, encontrar ventajas y debilidades
en el proyecto;
potencializando los recursos disponibles en la creación.
En un proyecto de desarrollo de software la metodología define
“quién debe hacer qué,
cuándo y cómo debe hacerlo”, no existe una metodología de
software universal. Las
características de cada proyecto (equipo de desarrollo,
recursos, etc.) exigen que el
proceso sea configurable. (Rozo Janeth, 2010).
Figura 3.1: Esquema del funcionamiento de Django Rozo N. Janeth
(2010).
3.1.1 METODOLOGÍA EN CASCADA
El modelo en cascada (figura 3.2), presenta una visión muy clara
de cómo se suceden las
etapas durante el desarrollo, y sugiere a los desarrolladores
cuál es la secuencia de eventos
que podrán encontrar. También conocido como ciclo de vida del
software. Consta de 5
-
39
fases, que son las actividades fundamentales en cualquier
desarrollo de software: análisis,
diseño, implementación, verificación y mantenimiento. (Gómez
Fuentes, 2011).
La aplicación de la metodología en cascada se orienta mejor al
desarrollo de proyectos de
corto plazo, proyectos definitivos y detallados. Para comenzar
la aplicación de la
metodología en cascada se necesita tener el análisis de los
requerimientos bien definidos,
el resultado del desarrollo dependerá de que estos
requerimientos sean los adecuados para
satisfacer la necesidad del proyecto. (Serrano Silva &
Ramírez, 2010).
Figura 3.2: Esquema del proceso de la metodología en
cascada.
La metodología en cascada ha sido ampliamente considerada en el
proceso de creación
de un software estableciendo un proceso fiable a los
requerimientos establecidos,
cimentando sistemas robustos al centrar toda la atención en el
desarrollo de una etapa
hasta su culminación, condición necesaria para avanzar entre las
etapas que define la
metodología.
Puesto que se tienen claras las características que la
herramienta ofrecerá y con el fin de
conseguir resultados concretos y óptimos, se ha optado por
implementar la metodología
en cascada para la creación de la herramienta propuesta.
-
40
A continuación, se detalla cada etapa que la metodología define,
así como los procesos
correspondientes llevados a cabo en la creación de la
herramienta web.
3.1.1.1 ANÁLISIS Y DEFINICIÓN DE REQUERIMIENTOS
En esta etapa se define el servicio que se ofrecerá a través de
la aplicación web, sus
funcionalidades, metas y restricciones. Los requerimientos
especifican qué es lo que el
sistema debe hacer (sus funciones) y sus propiedades esenciales
y deseables. La captura
de los requerimientos tiene como objetivo principal la
comprensión de lo que los usuarios
esperan que haga el sistema. Un requerimiento expresa el
propósito del sistema sin
considerar cómo se va a implantar. En otras palabras, los
requerimientos identifican el
qué del sistema, mientras que el diseño establece el cómo del
sistema. (Gómez Fuentes,
2011).
Los requerimientos que el aplicativo a desarrollar plantea
son:
● Conexión con una base de datos orientada a grafo alojada en
Neo4j22.
● Obtención de nodos y relaciones de la base de datos.
● Representación visual del esquema de la base de datos.
● Módulo para la creación y aplicación de traversals
(proyecciones a través de
caminos tipados).
● Aplicación de técnicas de análisis de redes (métricas de
centralidad sobre nodos).
● Representación visual de los resultados obtenidos tras la
aplicación de traversals.
22Base de datos en grafo. https://neo4j.com/
-
41
● Generación de archivos para visualizaciones personalizadas en
Gephi.23
● Sistema de usuarios para el manejo de datos en la
aplicación.
Estas funcionalidades representan la base lógica de la
herramienta. La librería que se
desarrolla en el presente proyecto solventará estos
requerimientos a través de una interfaz
web.
En el desarrollo de la interfaz web se consideran pautas que
brindan una mejor
experiencia al usuario, exigiendo ser una herramienta sencilla,
intuitiva y fácil de manejar
que permita a personas que desconocen de técnicas de
programación, desarrollar
proyecciones y visualizaciones sobre una base de datos.
3.1.1.2 DISEÑO
Puesto que la aplicación ofrecerá sus servicios a través de la
web, se le ha asignado un
nombre que facilitará su diferenciación en el medio:
visualGraph.
Las funcionalidades de la aplicación web visualGraph se han
dividido en tres fases que
permitirán sintetizar tanto el diseño como la implementación de
la herramienta:
1.- Fase de presentación y conectividad
2.- Fase de definición de consulta
3.- Fase de visualización
23Programa de análisis y representación de redes.
https://gephi.org/
-
42
Figura 3.3: Fases de implementación de visualGraph.
3.1.1.2.1 FASE DE PRESENTACIÓN Y CONECTIVIDAD
Esta fase representa el primer encuentro del usuario con la
herramienta, cuando se da a
conocer la aplicación y se llevan a cabo las operaciones
relacionadas con la gestión de
usuarios (ingreso de usuario, registro de usuario) para la
posterior conexión con una base
de datos. Como página principal se muestra contenido a manera de
introducción que
brinda información sobre la aplicación y se ofrece una breve
guía al usuario que le
permitirá entender cómo manejar la herramienta.
La aplicación supone la existencia de una base de datos
previamente creada y alojada en
Neo4j y de la cual se importan los datos que el usuario manejará
a través de la
herramienta.
-
43
Figura 3.4: Formulario de conexión con base de datos Neo4j.
Es necesario establecer un formulario que permita ingresar las
credenciales de la base de
datos. Dicho formulario será presentado al usuario una vez que
haya iniciado sesión con
visualGraph; de esta manera se puede vincular al usuario activo
con sus bases de datos y
almacenarlas para futuras interacciones. Para posibilitar el
almacenamiento de los campos
mencionados el usuario deberá activar la casilla ubicada entre
las credenciales y el botón
de validación (figura 3.4). Aprobando de esta manera el uso de
la información contenida
en la base de datos para ser representada en el esquema gráfico
de la base de datos, así
como el almacenamiento de sus credenciales para su posterior
ingreso.
3.1.1.2.2 FASE DE DEFINICIÓN DE CONSULTA
Esta etapa corresponde al momento en que el usuario visualiza y
selecciona los nodos y
relaciones para la creación de consultas en base a caminos
tipados.
Una vez se establezca la conexión con la base de datos, se le
presentará al usuario un
esquema de la base de datos (figura 3.5) para conocimiento de
los tipos de nodos y
-
44
relaciones existentes en el grafo, de tal manera que contribuya
en la construcción de
traversals.
Figura 3.5: Boceto del esquema de base de datos.
Seguidamente debe presentarse un módulo que posibilite la
creación de traversals donde
el usuario podrá construir de una manera interactiva una
sucesión lógica de tipos de nodos
y relaciones que tengan coherencia con el esquema presentado. Se
debe considerar la
capacidad de aumentar y/o disminuir la longitud del traversal
(número de tipos nodos y
relaciones que intervienen).
-
45
Figura 3.6: módulo de construcción de traversals.
Descripción del módulo de construcción de traversals en base a
la figura 3.6:
1. Especifica los tipos de nodos y los tipos y direcciones de
las relaciones inmersos en
la creación de un traversal, su estructura mínima incluye dos
tipos de nodos, un tipo
de relación y una dirección. Campos que están dispuestos a
manera de listas
seleccionables, es decir el usuario al hacer clic en cualquier
elemento podrá
seleccionar el nombre del tipo de nodo, relación o dirección
correspondiente.
1.1. A través de este desplegable se deben seleccionar los tipos
de nodos que
compondrán el traversal. Si se selecciona el tipo ‘any’ como
tipo de nodo, la
aplicación considerará todos los nodos a la hora de llevar a
cabo la consulta.
-
46
1.2. Con este desplegable es posible seleccionar un tipo de
relación contenido en la
base de datos para ser añadida al traversal
1.3. Permite especificar la dirección en la que está dispuesta
una relación en el
traversal.
2. Mediante esta opción se puede aumentar y disminuir el tamaño
del traversal.
3. Una vez el traversal esté definido, mediante esta opción es
posible agregarlo a una
tabla. En dicha tabla se mostrarán todos los traversals que
hayan sido definidos para
que el usuario pueda combinarlos a través de fórmulas
lógicas.
Una vez se hayan definido dos o más traversals (identificados
como T1, T2, ...Tn), se
podrán definir fórmulas lógicas enlazando los identificadores Ti
(T1, T2..., Tn.) mediante
los operadores: and, or o xor. donde i es asignado en base al
orden de adición en la
construcción de traversals y n representa el número de
traversals que contiene la lista.
Los operadores lógicos permitidos para enlazar los distintos
traversals contenidos en la
lista son:
AND: Cuando se establece una función lógica con el operador AND
entre dos traversals
T1 y T2, los nodos en el grafo resultante serán aquellos que
sean origen o destino de
caminos que cumplan con T1 y T2 simultáneamente.
OR: Cuando se establece una función lógica con el operador OR
entre dos traversals T1
y T2, los nodos en el grafo resultante serán aquellos que sean
origen o destino de caminos
que cumplan con T1 o T2.
XOR: Cuando se establece una función lógica con el operador XOR
a un traversal T1, los
nodos en el grafo resultante serán aquellos que sean origen o
destino de caminos que no
cumplan con T2.
-
47
En la definición de las fórmulas lógicas es posible hacer uso de
la propiedad asociativa
para agrupar operaciones como se muestra en la siguiente
figura:
Figura 3.7: aplicación de propiedad asociativa para definir una
fórmula de traversals
Adicionalmente el usuario deberá realizar tareas (figura 3.8)
complementarias de:
● Selección de métricas.
● Limitación de consultas.
● Asignación de nombre a archivo resultante generado.
Figura 3.8: Operaciones complementarias de definición de
consulta (selección de métricas, límite de consulta)
El usuario deberá seleccionar las métricas que se le aplicarán a
los nodos en el grafo
resultante, valores que serán añadidos a cada nodo como una
propiedad que contribuirá
tanto al análisis como a las visualizaciones posteriores.
-
48
Debido a que las representaciones gráficas hacen uso de recursos
hardware, es necesario
permitir al usuario que limite el número de elementos retornados
para el caso de bases de
datos que contengan grandes volúmenes de información. Se
establecerá un límite de 600
relaciones a la hora de llevar a cabo las representaciones
gráficas, es decir si se supera
dicho valor la aplicación mostrará un gráfico limitado con 600
relaciones como resultado,
sin embargo, en el archivo generado para su posterior lectura en
programas de análisis de
redes como Gephi.
3.1.1.2.3 FASE DE VISUALIZACIÓN
En esta fase se muestra una representación gráfica de los datos
que satisfagan las
restricciones definidas, además de la posibilidad de configurar
propiedades de los
elementos en la visualización. Los resultados gráficos que
arroja visualGraph consideran
el nodo inicial y final comprendidos en los caminos que cumplen
con un traversal (o una
combinación lógica de estos).
Figura 3.9: Boceto de la representación visual
-
49
Si se cumplen satisfactoriamente todas las etapas mencionadas en
la fase anterior,
visualGraph mostrará una representación visual standard de los
datos procesados, además
de la posibilidad de descargar el archivo generado para realizar
representaciones
personalizadas.
Dentro de la visualización, el usuario podrá realizar
configuraciones que facilitan la
identificación de los datos obtenidos. Es posible asignar una
propiedad que el nodo
contenga para mostrar a manera de etiqueta en su
representación.
La apli