Base de datos orientada a grafos (graph database)
Una graph database o base de datos orientada a grafos es un tipo especial de base de datos que almacena la información en forma de nodos y aristas. Este enfoque permite modelar y consultar relaciones complejas de manera eficiente. Por ello, las bases de datos orientadas a grafos son especialmente adecuadas para aplicaciones que requieren representar información altamente interconectada.
Qué es una graph database, de qué se compone y para qué se utiliza
Una base de datos orientada a grafos o graph database se basa, como bien dice su nombre, en grafos, un conjunto de objetos (vértices y aristas) que permite representar datos interconectados, así como las relaciones entre ellos, de forma comprensible, dentro de un único conjunto de datos.
Los grafos están formados por nodos o vértices, que representan entidades u objetos bien definidos, y aristas o arcos, que representan las relaciones entre los objetos. Gráficamente, estos dos componentes tienen forma de puntos y líneas, respectivamente. Las aristas tienen un extremo inicial y uno final, mientras que cada nodo siempre contiene un número concreto de relaciones a otros nodos, ya sean de entrada o de salida.
Las graph databases o bases de datos orientadas a grafos se utilizan, por ejemplo, para analizar las relaciones entre usuarios en redes sociales o el comportamiento de compra en tiendas online. Al almacenar las relaciones, es posible ofrecer de forma dirigida recomendaciones de productos o de amistad, así como construir redes personalizadas de personas y productos.
Las bases de datos relacionales almacenan la información en tablas y utilizan SQL para las consultas. En cambio, una graph database o base de datos orientada a grafos forma parte de la familia NoSQL y ofrece una estructura más flexible para gestionar de manera eficiente relaciones complejas entre datos.
Ejemplos de graph databases
Existen distintos conceptos que describen la estructura de este tipo de graph database. Los más conocidos son el Labeled Property Graph y el Resource Description Framework (RDF).
Labeled Property Graph
En un Labeled Property Graph (LPG) se asignan a cada nodo y a cada arista del grafo determinadas propiedades (properties) y etiquetas (labels). Estas almacenan información específica sobre las entidades o relaciones. Las etiquetas sirven para la categorización, de modo que, por ejemplo, un nodo puede estar marcado como “Persona” o “Empresa”, mientras que las propiedades pueden incluir atributos adicionales como nombre, edad o coordenadas geográficas.
Esta estructura permite consultas muy flexibles y potentes, ya que tanto las relaciones como las propiedades se almacenan directamente en la graph database y pueden recuperarse mediante consultas sencillas. Los LPG son especialmente adecuados para modelar redes complejas en las que las entidades y sus conexiones se describen en diferentes contextos.
Resource Description Framework
En el Resource Description Framework (RDF) la información se organiza en tríadas, formadas por sujeto, predicado y objeto. Esta estructura ofrece un modo sencillo de representar las relaciones entre entidades. Cada triple constituye una afirmación: el sujeto identifica el recurso, el predicado describe la propiedad o relación y el objeto indica el valor o bien otro recurso.
Con RDF los datos pueden vincularse de manera estandarizada, lo que permite combinarlos y consultarlos en diferentes sistemas. Esta flexibilidad hace que RDF sea especialmente útil en aplicaciones que dependen de la interconexión de datos de distintas fuentes, como los gráficos de conocimiento (knowledge graphs).
¿Cómo funcionan las búsquedas en una graph database?
Cuando se usa una base de datos de grafos, existen muchas maneras de realizar una consulta, principalmente porque no hay un lenguaje de consulta uniforme. Y, al contrario de lo que ocurre en modelos tradicionales, las bases de datos orientadas a grafos utilizan algoritmos especiales para poder realizar su principal tarea: simplificar y acelerar las consultas complejas.
Entre los algoritmos más comunes se encuentran la búsqueda en profundidad y la búsqueda en anchura. La búsqueda en profundidad busca el siguiente nodo más profundo, mientras que la búsqueda en anchura se mueve de un nivel a otro. Los algoritmos permiten encontrar patrones (patrones de grafos o graph patterns) y nodos relacionados directa o indirectamente. Otros algoritmos también se ocupan de calcular la ruta más corta entre dos nodos y de identificar cliques (subgrafos completamente conectados) y hotspots (nodos con alta conectividad/centralidad). Uno de los puntos fuertes de las graph databases es que las relaciones están guardadas en la propia base de datos, de manera que no son calculadas a partir de cada solicitud de búsqueda. Gracias a ello, la base de datos opera a gran velocidad incluso en búsquedas complicadas.
Las ventajas y desventajas de las graph databases
La potencia de una base de datos puede medirse principalmente según cuatro factores: integridad, rendimiento, eficiencia y escalabilidad. Se podría decir que el objetivo esencial de las bases de datos de grafos es hacer que las búsquedas sean más sencillas y rápidas. En los aspectos en los que las bases de datos relacionales, por ejemplo, tienen su punto débil, el modelo basado en grafos funciona de forma especialmente rápida: la razón es que la complejidad y la cantidad de datos no perjudican el proceso de búsqueda.
Con el modelo orientado a grafos, además, se pueden almacenar asuntos reales de forma natural, ya que la estructura utilizada es muy similar al pensamiento humano y hace que los enlaces sean muy intuitivos. Sin embargo, las graph databases tampoco son una solución perfecta. Uno de sus puntos débiles es, por ejemplo, la escalabilidad: puesto que están diseñadas especialmente para arquitecturas de un solo servidor, el crecimiento supone un desafío (matemático). Además, aún no existe ningún lenguaje de consulta consistente.
Resumen de las ventajas y desventajas de las bases de datos orientadas a grafos:
| Ventajas | Desventajas |
|---|---|
| ✓ La velocidad de búsqueda suele depender principalmente del número de relaciones concretas, no del conjunto de datos | ✗ Es difícil de escalar, por estar diseñado para arquitecturas con un solo servidor |
| ✓ Resultados en tiempo real | |
| ✓ Presentación intuitiva y resumida de las relaciones | |
| ✓ Estructuras flexibles y ágiles |
Las bases de datos orientadas a grafos no deberían considerarse, por lo general, como mejores y absolutas sustitutas de las bases de datos convencionales. Las estructuras relacionales siguen siendo modelos estándar que garantizan una gran estabilidad e integridad de los datos, además de permitir un escalamiento flexible. Como en la mayoría de los casos, todo depende del uso que se les quiera dar.
Comparativa de graph databases
Existen diferentes bases de datos orientadas a grafos, cada una adecuada para distintos escenarios de uso. A continuación, se presentan cuatro de los modelos más populares:
- Neo4j: Neo4j es la graph database más popular y está concebida como modelo de código abierto.
- Amazon Neptune: esta base de datos orientada a grafos puede usarse a través de la nube pública de Amazon Web Services y se abrió al público en 2018 como base de datos de alto rendimiento.
- SAP HANA Graph: SAP ha creado con SAP HANA una plataforma basada en un sistema de gestión de bases de datos relacional que se completa con el modelo integrado SAP HANA Graph, orientado a grafos.
- OrientDB: esta graph database combina enfoques documentales y basados en grafos y se considera uno de los modelos más rápidos disponibles en la actualidad.
En una comparación directa se observa que cada base de datos orientada a grafos ofrece distintas características, que pueden resultar útiles según el caso de uso específico:
| Base de datos orientada a grafos | Neo4j | Amazon Neptune | SAP HANA Graph | OrientDB |
|---|---|---|---|---|
| Tipo | Nativa | Gestionada (nube) | Extensión de grafos | Multi-modelo |
| Lenguajes de consulta | Cypher | SPARQL, Gremlin, openCypher | Basado en SQL | Similar a SQL, Gremlin |
| Modelo(s) de datos | Property Graph | Property Graph, RDF | Relacional, modelo de grafos | Grafos, documentos |
| Escenarios de uso típicos | Redes sociales, detección de fraude, sistemas de recomendación, gestión de redes | Grafos de conocimiento (knowledge graphs), gestión de identidades y accesos, aplicaciones nativas en la nube | Análisis de negocio, IoT, análisis financiero, aplicaciones SAP | Gestión de contenidos, relaciones de datos complejas, sistemas distribuidos |

