BBDD basadas en grafos

Actualmente, hablar de bases de datos es algo bastante manido. Tal vez hace 20 años era algo más novedoso, principalmente por la generalización del uso de bases de datos relacionales frente a bases de datos jerárquicas.

La tecnología ha hecho que nuestros comportamientos se hayan modificado y por lo tanto modelizarlos con las herramientas utilizadas hace 20 años puede ser una ardua labor. Es como si en lugar de mandar correos electrónicos aún mandásemos cartas o por qué correos electrónicos y no whatsapp o cualquier otro medio de comunicación.

Lo que tiene aún validez es el propio concepto abstracto de qué es una base de datos (a nivel de sistemas informáticos), el cual podemos definir formalmente como una colección de información organizada de forma que un programa de ordenador pueda seleccionar rápidamente los fragmentos de datos que necesite. A partir de aquí la cosa se complica porque tendríamos que ver cómo se organiza la información y eso nos lleva a diferentes tipos de bases de datos, algunos curiosos y sorprendentes.

La evolución de las bases de datos

En un principio los ficheros de texto eran explotados como bases de datos, se trataba la información en función de la posición de dichos datos (campos) dentro del propio fichero. El problema surgía con la propia consistencia e integridad de los datos. Esto podríais pensar que es algo muy antiguo, pero luego volveremos al tema para que veáis que no lo es tanto. En aplicaciones de gestión aún existen aplicaciones que usan ficheros de texto a modo de base de datos.

Para suplir este problema aparecieron las bases de datos jerárquicas en las que se comienza a hablar de relaciones entre registros. Estas bases de datos solventaban algunos problemas, pero eran demasiado simples para modelizar comportamientos dentro de una aplicación con lo que los resultados obtenidos eran muy simples y requería la repetición sistemática de datos ya introducidos.

IBM revolucionó el sector con el desarrollo del modelo relacional de base de datos en los años setenta. Estas bases de datos contaban con álgebra relacional muy potente y se creó un lenguaje de consulta común para todos los fabricantes:  SQL (Structured Query Language).

SQL ha sido el estándar indiscutible durante las últimas décadas en relación con la gestión de datos. La inclusión de nuevas funcionalidades ha hecho que permaneciera vigente el modelo durante más años y aún sigue siendo incuestionable para muchos entornos.

La incursión del mundo web hizo tambalear la primacía de este sistema debido a que se precisaban estructuras de datos más simples. Adicionalmente, las páginas web explotaban datos desde archivos de texto o desde su propio script.

Con la aparición de la web 2.0 y la programación basada en navegadores ligeros se hizo necesaria la aparición de algún gestor de base de datos más simple, flexible y, a ser posible, open source. En este período aparecieron, además, esquemas de gestión de archivos como XML, XMLT, Json, etc.

Se puede decir que la aparición del término NoSQL aparece con la llegada de la web 2.0 debido a que hasta ese momento sólo subían contenido a la red aquellas empresas que tenían un portal, pero con la llegada de aplicaciones como Facebook, Twitter o Youtube, cualquier usuario podía subir contenido, provocando así un crecimiento exponencial de los datos. Por todo lo cual, empieza a aparecer problemas en la gestión de toda esa información almacenada en bases de datos relacionales.

En un principio, para solucionar estos problemas de accesibilidad, las empresas optaron por utilizar un mayor número de máquinas, pero pronto se dieron cuenta de que esto no solucionaba el problema, además de ser una solución muy cara. La otra solución era la creación de sistemas pensados para un uso específico que con el paso del tiempo han dado lugar a soluciones robustas, apareciendo así el movimiento NoSQL.

Por lo tanto, hablar de bases de datos NoSQL es hablar de estructuras que nos permiten almacenar información en aquellas situaciones en las que las bases de datos relacionales generan ciertos problemas debido principalmente a problemas de escalabilidad y rendimiento donde se dan cita miles de usuarios concurrentes y con millones de consultas diarias.

Además, de lo comentado anteriormente, las bases de datos NoSQL son sistemas de almacenamiento de información que no cumplen con el esquema entidad–relación. Tampoco utilizan una estructura de datos en forma de tabla donde se van almacenando los datos, sino que para el almacenamiento hacen uso de otros formatos como clave–valor, mapeo de columnas y grafos.

Por otro lado, se precisan nuevos sistemas de análisis de datos que hasta la fecha no habían sido utilizados, dado al ingente volumen de datos a tratar, la heterogeneidad y la diferencia de temporalidad entre estos. Así aparecen sistemas de tratamiento de BIG DATA. Como curiosidad, el término BIG DATA surge del error que se generaba al intentar procesar consultas en nuestros gestores en SQL (big data error) y no porque se manejan gran cantidad de datos; aunque está implícito en la definición.

Así pues, llegamos al momento actual de tecnología de gestión de datos: muchas tecnologías diferentes para tratar problemas distintos.

Podemos indicar que, ahora, la decisión de qué gestor de base de datos se debe utilizar no es un tema sencillo.  Las bases de datos en SQL siguen siendo muy estables y se les ha ido añadiendo nuevas funcionalidades para asegurarse que puedan ser escalables: tener funciones de Big Data o, al menos, de Business Inteligence y reflejar los patrones necesarios para poder explotar los datos necesarios.

Bases de datos orientadas a grafos

A este punto es dónde queríamos llegar para explicar el motivo por el que surgen las bases de datos orientadas a grafos, la cuales no dejan de ser un tipo de bases de datos NoSql.

Da igual quién te hable de datos y dónde y por qué lo haga, seguramente te dirá que lo más importante de los Big Data es extraer valor de la información (es el concepto perfecto en el que se engloban las cuatro famosas V de los grandes datos: volumen, velocidad, variedad y veracidad). Muchas empresas tienen datos que sirven de poco porque no están estructurados, no conocen la relación entre ellos.

Las bases de datos orientadas a grafos (BDOG) ayudan a encontrar relaciones y dar sentido al puzle completo. Una de las más conocidas es Neo4j, adicionalmente, otros referentes en materia de bases relacionales como Microsoft están incluyendo esta tecnología.

Empresas como eBay, Walmart, Telenor, UBS, Cisco, Hewlett-Packard o Lufthansa han confiado en las cualidades de las bases de datos orientadas a grafos para mejorar sus servicios.

Según David Montag (desarrollador, asesor y experto en bases de datos NoSql), “Hoy todas las empresas del mundo intentan hacer negocio impulsado por los datos”. Como ejemplo de empresas que utilizan esta tecnología podemos indicar que eBay la usa para planificar las rutas del servicio de comercio electrónico; Walmart analiza cada venta de un producto para “entender qué tipo de artículos te gusta comprar y qué tipo de productos te puede recomendar”; o, por ejemplo, Cisco que ofrece soluciones personalizadas a sus clientes “sin que tengan que levantar el teléfono y hablar con el servicio de asistencia”.

Este tipo de base de datos usan grafos para representar datos y las relaciones entre ellos. Un grafo se define como cualquier representación formada por vértices (se ilustran mediante círculos) y aristas (se muestran mediante líneas de intersección). Dentro de estas representaciones gráficas, tenemos varios tipos de grafos:

Los distintos tipos de grafos

  • Grafos no dirigidos: los nodos y las relaciones son intercambiables, su relación se puede interpretar en cualquier sentido. Las relaciones de amistad en la red social Facebook, por ejemplo, son de este tipo.
  • Grafos dirigidos: los nodos y las relaciones no son bidireccionales por defecto. Las relaciones en Twitter son de este tipo. Un usuario puede seguir a determinados perfiles en esta red social sin que ellos le sigan a él.
  • Grafos con peso: en este tipo de gráficas las relaciones entre nodos tienen algún tipo de valoración numérica. Eso permite luego hacer operaciones.
  • Grafos con etiquetas: estos grafos llevan incorporadas etiquetas que pueden definir los distintos vértices y también las relaciones entre ellos. En Facebook podríamos tener nodos definidos por términos como ‘amigo’ o ‘compañero de trabajo’ y la relaciones como ‘amigo de’ o ‘socio de’.
  • Grafos de propiedad: es un grafo con peso, con etiquetas y donde podemos asignar propiedades tanto a nodos como relaciones (por ejemplo, cuestiones como nombre, edad, país de residencia, nacimiento).

Conclusión

En el sector de la auditoría financiera y en el control de fraude este tipo de tecnología tiene una clara aplicación práctica y, de hecho, es utilizada habitualmente en nuestros trabajos con el fin de poder cruzar grandes volúmenes de datos, realizar un análisis sobre el total de la información y no muestreos, obtener una mayor seguridad en relación con la información analizada y demostrar hipótesis que de otra forma sería imposible.

* Antonio Pérez es Socio en el Área de Advisory