Blog de Amazon Web Services (AWS)

Visualización de grafos con Amazon Neptune y Gremlin

Por Christopher Ávila, Arquitecto de Soluciones AWS México y
José Peñúñuri , Arquitecto de Soluciones AWS México

 

Amazon Neptune es un servicio de base de datos orientada a grafos completamente administrado que permite fácilmente integrar aplicaciones que funcionan con conjuntos de datos altamente conectados. Amazon Neptune es compatible con los lenguajes de consultas Apache TinkerPop Gremlin y SPARQL, los cuales permiten al usuario crear consultas para navegar por conjuntos de datos.

Amazon Neptune es la solución ideal para casos de uso tales como crear motores de recomendaciones, ya que permite almacenar las relaciones que existen entre clientes y su historial de compras y así poder hacer consultas que permitan emitir recomendaciones personalizadas. Con Amazon Neptune también se pueden crear consultas que permitan identificar patrones de fraude en transacciones financieras que contengan elementos en común con transacciones fraudulentas conocidas como correo electrónico, nombre de la persona o dirección IP. Otros casos de uso de Amazon Neptune incluyen su aplicación en redes sociales, operación de redes/T.I. y ciencias de la salud.

En agosto de 2020, Amazon Neptune añadió una funcionalidad que permite a los usuarios visualizar sus grafos utilizando la herramienta de Neptune Workbench. Los usuarios que hacen consultas usando Gremlin o SPARQL ahora pueden ver sus resultados de manera gráfica y seleccionar visualmente nodos o propiedades dentro del Workbench. Los usuarios pueden ver sus datos de grafos conectando el Workbench a su cluster de Neptune y pueden buscar propiedades específicas, ver el grafo y mostrar todas las propiedades de un nodo seleccionado. Esto facilita la comprensión del grafo, así como el ajuste y mejora de las consultas.

En esta publicación, usted aprenderá a visualizar datos en Amazon Neptune utilizando un conjunto de datos que contiene información acerca de rutas aéreas. Para hacer las consultas y visualización de sus grafos usted utilizará Gremlin, un lenguaje funcional y de flujo de datos que permite a los usuarios generar consultas complejas de sus aplicaciones de grafos. Este lenguaje pertenece a Apache TinkerPop™, un marco de referencia para cómputo de grafos de código abierto, agnóstico a proveedores de tecnología y distribuido bajo licencia Apache2.

Para llevar a cabo los pasos que se describen más adelante debe tener un cluster de Amazon Neptune funcionando en su cuenta de AWS. Usted puede crear un cluster de Amazon Neptune manualmente o desplegando la plantilla de AWS CloudFormation disponible aquí. Para efectos de ejecutar los ejemplos de consulta y visualización que se proveen a continuación, utilice los parámetros predeterminados de la plantilla de AWS CloudFormation y solamente modifique los siguientes:

  • EC2SSHKeyPairName – elija una llave par (key pair) que haya creado con anterioridad y que actualmente posea.
  • NotebookInstanceType = ml.t2.medium
  • SetupGremlinConsole = True

Una vez que haya creado su cluster de Amazon Neptune, verifique que el cluster se encuentre activo (Status: Available). Después busque la opción Notebooks en el menu izquierdo y haga clic.

 

 

 

A continuación, se abrirá la pantalla de la lista de Cuadernos (Notebooks). Seleccione la casilla del cuaderno asociado al cluster de Amazon Neptune. Haga clic en el botón Open notebook con lo que se abrirá una nueva pestaña de su navegador con el cuaderno de Jupyter.

 

 

Una vez abierto el cuaderno de Jupyter, haga click en el directorio de Neptune.

 

 

Cuando se abra el directorio, haga clic en el directorio 02-Visualization.

 

 

Dentro de este directorio encontrará dos cuadernos que contienen ejercicios avanzados sobre visualización basados en un conjunto de datos de rutas aéreas. Para este ejercicio haga clic en el cuaderno llamado Air-Routes-Gremlin.ipynb.

 

 

Una vez desplegado el cuaderno verá la siguiente imagen:

 

 

Este cuaderno contiene pasos detallados y el código necesario para cargar los datos, hacer consultas y generar las visualizaciones. Este cuaderno se ejecutará directamente en la Consola de AWS, y para fines de aprendizaje, también puede descargarlo desde este repositorio de GitHub.

Puede ejecutar cada línea de código del cuaderno situándose en la celda del código y presionando el atajo del teclado [Shift+Return] o haciendo clic en el botón de “Run” del menú superior. Del lado izquierdo de cada celda, podrá ver unos corchetes en blanco (ln [ ]) que indican el estado de ejecución del código. In [*] indica que el código está siendo ejecutado e ln [n] indica que la ejecución del código ya finalizó. Se recomienda ejecutar cada celda de código en orden y esperar a que termine cada ejecución para comenzar con la siguiente.

Primeramente, es recomendable verificar que el cluster de Amazon Neptune esté activo y estable. Ejecute las primeras celdas de código y podrá ver la versión del cuaderno, la configuración y el estado del cluster:

 

 

Antes de comenzar a ejecutar las visualizaciones, es necesario elegir el lenguaje a utilizar y descargar los datos. Ejecute la celda del apartado “Now let’s load some property graph data”, seleccione Gremlin y airports respectivamente y haga clic en el botón de Submit.

 

 

Continúe leyendo la información que provee el cuaderno hasta llegar al apartado de “Adjusting the visualization layout and other settings”. En este paso podrá comenzar con las consultas y visualizaciones. El primer ejemplo consiste en hacer una consulta general en la que se define la etiqueta de aeropuerto (hasLabel(‘airport’)) y se filtra por el código de ruta (by(‘code’)) y distancia (by(‘dist’)) con un límite de resultados a desplegar igual a 5 (limit(5)). Usted podrá ver que el resultado de la consulta aparece en la pestaña llamada Console.

 

 

La visualización de la consulta aparecerá en la pestaña llamada Graph.

 

A continuación, usted encontrará más ejemplos de consultas utilizando Gremlin que podrá ejecutar y visualizar. Las consultas que aparecen en el cuaderno responden a preguntas que surgen con respecto al conjunto de datos, como, por ejemplo, conocer todas las rutas disponibles partiendo desde un origen determinado. Ejecute la consulta del apartado “Find all routes from Cozumel (CZM)» para ver todas las rutas que parten del aeropuerto de Cozumel (CZM).

 

 

También puede hacer consultas que muestran cada uno de los vértices del resultado agrupados por color. En la consulta del apartado “Color Results by Group” podrá ver como se le asigna un color especifico a los aeropuertos de un mismo país. En color azul se despliegan los aeropuertos de México, en color amarillo los de Estados Unidos y en color rojo los de Canadá.

 

 

A continuación, diríjase al siguiente apartado llamado How long are the routes from Cozumel?y ejecute el código de la celda para conocer la distancia de las rutas que salen del aeropuerto de Cozumel. Los resultados serán ordenados por distancia de manera ascendente.

 

 

Continue ejecutando las instrucciones del cuaderno para explorar las opciones de consultas y visualizaciones disponibles. Al final del cuaderno encontrará un apartado para cambiar las opciones de visualización (Changing the visualization settings) como lo pueden ser los colores, ancho de líneas, bordes, la física de interacción de los bordes y la letra a utilizar.

 

 

Resumen

En esta publicación se explica cómo hacer visualizaciones de grafos en Amazon Neptune utilizando el lenguaje de Gremlin y como es que estas herramientas nos pueden ayudar a responder preguntas de conjuntos de datos altamente conectados entre si. Si desea aprender más acerca de Apache TinkerPop Gremlin puede revisar este tutorial, y para conocer más sobre visualización de grafos puede revisar la documentación de Amazon Neptune. Por último, para evitar costos adicionales, se recomienda eliminar la plantilla de AWS CloudFormation (en caso de que la haya desplegado) para así eliminar todos los recursos creados en su cuenta de AWS.

 

 


Sobre el autor

Christopher Ávila es Arquitecto de Soluciones en AWS México.

 

 

 

 

 

José Peñúñuri es Arquitecto de Soluciones en AWS México.

 

 

 

 

Conozca los distintos tipos de bases de datos disponibles, las diferencias entre los servicios estándar administrados de base de datos y las bases de datos nativas en la nube con el volante de inercia de datos.