tutora: ing. ruiz chávez zoila de lourdes...ruiz chávez zoila de lourdes resumen el presente...
TRANSCRIPT
-
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