Top Banner
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
109

TUTORA: Ing. Ruiz Chávez Zoila de Lourdes...Ruiz Chávez Zoila de Lourdes RESUMEN El presente proyecto consiste en el desarrollo de visualGraph, una herramienta web de análisis y

Jan 27, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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