Search

Bases de Datos Orientadas a Grafos

Hoy, después de mucho tiempo sin escribir, voy a intentar realizar una introducción básica sobre qué es esto de los grafos, qué son las bases de datos orientadas a grafos y cómo nos ayudan a sacar valor a los datos.

Hace unos cuantos meses entré a trabajar en Graph Everywhere, una empresa apasionada de los datos y que realiza proyectos fantásticos utilizando esta tecnología, ayudando a sus clientes a sacar todo el valor a sus datos.

Poniéndome en el lugar de alguien al que lo anterior le suene a chino mandarín, lo primero que preguntaría sería… ¿un grafo? … ¿qué es eso de un grafo?

HISTORIA

El 26 de agosto de 1735, un auténtico genio, Leonhard Euler (Suiza, 1707 – Rusia Imperial, 1783 ) presentó en la Academia de Ciencias de San Petersburgo un artículo donde resolvía el problema de los puentes de Königsberg, actual Kaliningrado. Este artículo es parte del Commentarii academiae scientiarum imperialis Petropolitanae y se encuentra en su volumen número 8, con el título Solutio problematis ad geometriam situs pertinentis.

El problema presentado, y resuelto por Euler en dicho artículo, consistía en lo siguiente. En Königsberg existe una isla llamada Kneiphof rodeada por el río Pregel, el cual está dividido por dos ramas.

Se construyeron 7 puentes en las ramas de este río. La pregunta que se planteó fue si sería posible darte un paseo por Königsberg de modo que se atravesara cada uno de los puentes una vez y no más de una vez.

Este problema dio origen a la teoría de grafos, la cuál ha sido, y es, muy útil para resolver cuestiones complejas en campos como la informática, telecomunicaciones, logística, electrónica, gestión de proyectos, redes sociales, genética, biología, etc….

GRAFOS

Y, por si no lo has adivinado ya, el dibujo superpuesto sobre el mapa de época de Königsberg es un grafo.

Como se ve en el esquema, un grafo consiste en una colección de NODOS (círculos naranjas) unidos por ARISTAS (líneas azules). A partir de aquí a las aristas las llamaremos RELACIONES.

En un grafo se representan nodos y las diferentes maneras en las que estos se pueden vincular entre sí a través de las relaciones.

Además, se puede añadir información para enriquecer el grafo, tanto a los nodos como a las relaciones. Los nodos se pueden etiquetar para identificar distintos tipos, y a las relaciones también se les puede dar un nombre. Además, a ambos se les pueden añadir propiedades.

Por ejemplo, en un grafo podríamos tener estos nodos

NODOSPROPIEDADES
UsuarioNombre, Apellido, dni
HotelNombre, Capacidad, Ciudad

Y la siguiente relación, que partiría desde los usuarios y llegaría a los hoteles.

RELACIONESPROPIEDADES
ReservaLocalizador, FechaEntrada, FechaSalida

BASES DE DATOS

Ahora que ya sabemos qué es un grafo, debemos tener un sitio donde guardar esta estructura y toda la información contenida en ella.

Aquí entran en juego las bases de datos orientadas a grafos. Un ejemplo de estas bases de datos en Neo4j.

Punto importante. Aquí no hay tablas. La estructura de las bases de datos orientadas a grafos se parece como un huevo a una castaña a las bases de datos relaciones de toda la vida, en la que nuestros datos están tabulados. Es decir, no se utiliza un modelo relacional.

¿Qué cosas buenas tienen las bases de datos de grafos respecto a las bases de datos relacionales o las NOSQL?

  • RENDIMIENTO

Todos los que hemos trabajado con bases de datos relacionales hemos tenido que lidiar con consultas SQL, ya no solo complicadas en cuanto a la sintaxis, sino eternas en cuanto a la salida de los resultados. Concatenar varias operaciones JOIN que tengan que recorrerse varias tablas, con volúmenes elevados de datos, afectan de manera crítica al tiempo de ejecución de la consulta.

Esto no sucede con la base de datos orientadas a grafos. El rendimiento en las consultas tiende a permanecer constante incluso a medida que crece el volumen de los datos. Esto es debido a que el motor responde a las consultas buscando únicamente en la parte del grafo necesaria, y no en el grafo completo. Así, el tiempo de ejecución de las consultas es proporcional al tamaño de la parte del gráfico recorrida para satisfacer la consulta.

  • FLEXIBILIDAD

Igualmente, al trabajar con bases de datos relacionales, nos hemos tenido que pelear con el modelo de datos al presentarse la necesidad de añadir nuevas tablas, tipos de datos, claves únicas, etc….respetando la estructura y las reglas del proyecto. Con las bases de datos orientadas a grafos, crear nuevos nodos, propiedades y relaciones es muy rápido y sencillo. De esta forma nuestra base de datos se puede adaptar rápidamente a un cambio en las necesidades del negocio sin que las estructuras existentes se vean afectadas. Esto aumenta la productividad y reduce los gastos de gestión y mantenimiento. Añadiría aquí también, que estas bases de datos son altamente escalables. Son bases de datos schema-free, lo que te permite no estar encorsetado a un esquema, como sucede en las bases de datos relacionales, e ir adaptando el modelo a tus necesidades, añadiendo nuevos nodos, etiquetas, relaciones, propiedades…de una manera rápida y sencilla, como si no hubiera un mañana, sin preocuparte, como hemos dicho en el primer punto, de una caída de rendimiento.

  • AGILIDAD

Todo lo anterior dota a las bases de datos orientadas a grafos de una gran agilidad a la hora de adaptarse a las demandas de nuevos desarrollos de aplicaciones y necesidades del negocio, de forma que crezcan a la par.

VALOR

La piedra angular de las bases de datos orientadas a grafos son las relaciones.

El auténtico valor que aportan se sustenta en las relaciones que te permiten descubrir y visualizar estas bases de datos, las cuales serían muy difíciles de descubrir con bases de datos relacionales.

De esta manera se pueden descubrir patrones de comportamiento dentro de un grafo. Esto te permite realizar:

  • Análisis de redes sociales, prediciendo comportamientos, analizando gustos y, por ejemplo, eligiendo el público objetivo adecuado a una campaña publicitaria.
  • Sistemas de recomendación.
  • Análisis de flujos de trabajo.
  • Análisis de áreas de indisponibilidad dentro de una red debido a una falla.
  • Detección del fraude, buscando patrones sospechosos.
  • Optimización de rutas logísticas.
  • Automatización de controles de acceso.

Como veis las opciones son infinitas.

Además, las bases de datos orientadas a grafos pueden aportar mucho valor a a la Inteligencia Artificial, al ser un almacenamiento de datos con las características antes comentadas. Por ejemplo puede ser el almacenamiento perfecto para la entrada y la salida de un sistema de Machine Learning.

Fuente: neo4j.com

Espero poder seguir escribiendo de todo esto y mucho más en mis siguientes posts.

!Mientras puedes empezar a probar Neo4j!


Aprendizaje automático Aprendizaje supervisado Automation bases de datos Beautiful Soup Clasificador Classifier cypher Data Federation Data Sharding defaultdict Fabric Geocodificación Geoposicionamiento geopy Grafos Graph Databases groupby itemgetter itertools LEGO logistic regression Machine Learning Modbus neo4j neo4j v4 numpy Odds pandas Perceptrón Probabilidad Probability puesta en producción Python Qlik Regresión Regresión lineal regresión logística Regression SCADA Scikit-learn Selenium Supervised learning Visualización Web Scraping

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.