¿Qué es una base de datos de gráficos y para qué se utiliza? – CloudSavvy IT

Idea de base de datos de gráficos
Eduard Muzhevskyi / Shutterstock

Las bases de datos de gráficos son un tipo especial de base de datos que almacena estructuras de datos complejas que no sería factible almacenar en una base de datos relacional tradicional. Se utilizan sobre todo para las redes sociales, ya que son mucho más eficaces para determinadas consultas.

¿Qué es una base de datos gráfica?

Las bases de datos de gráficos se utilizan con mayor frecuencia para datos altamente interconectados y para situaciones en las que el contenido de los datos en sí es menos importante que la estructura general.

El caso de uso más sencillo de datos gráficos es el de las redes sociales. Considere una red de personas; cada persona tiene una lista de amigos y tiene relaciones con otras personas. Cada persona también hace publicaciones, a menudo cientos de ellas. Cada publicación podría tener miles de personas interactuando con ella. Entonces, a pesar de que el tweet solo tiene 280 caracteres, hay mucho más que almacenar al respecto.

Una base de datos gráfica de una red de personas está interconectada como amigos.  Cada persona ingresa a una publicación con la que todos los amigos pueden interactuar.

Ciertamente, este no es el único caso de uso, sino el más digerible: las bases de datos de gráficos se utilizan para todo tipo de cosas. Otro ejemplo es la detección de fraudes; dice que es un banco y desea marcar cuentas sospechosas. Puede resultar un poco sospechoso que dos cuentas separadas tengan la misma dirección o compartan números de teléfono. Con una base de datos de gráficos, puede hacer un gráfico de la conexión entre las dos cuentas e identificar problemas como este de manera mucho más eficiente que una base de datos relacional.

En una base de datos de gráficos, cada objeto se denomina nodo. Un nodo puede tener cualquier cantidad de propiedades, muy similar a cómo funciona una base de datos de documentos. Una base de datos de documentos simplemente almacenaría cada nodo como un documento separado en una colección (matriz) de documentos, sin tener en cuenta cómo se conectan.

Una base de datos de grafos con varios nodos u objetos y sus conexiones conocidas como bordes.

En una base de datos de grafos, las conexiones entre los nodos se denominan bordesy pueden conectar dos nodos desde cualquier lugar de la tabla. Los bordes definen las relaciones entre los nodos y pueden tener tipos específicos. Por ejemplo, dos amigos estarían conectados con un borde «Amigos», pero un usuario estaría conectado a una publicación con un borde «Publicado» o «Me gusta».

¿Qué los hace más rápidos?

No es que las bases de datos relacionales como MySQL hipocresía Almacenar estructuras similares a gráficos: enlaces como estos siguen siendo conceptos básicos para las tablas SQL. Los enlaces forman conexiones entre tablas, lo que permite que los datos se almacenen y actualicen en tablas separadas mientras se mantiene un enlace en otra parte de la base de datos, muy similar a cómo funcionan los punteros en C.En el ejemplo de la red social, no querría almacenar el nombre de cada amigo que tiene un usuario dado como ese amigo puede cambiar su nombre, por lo que, en su lugar, almacena la identificación del amigo y luego realiza una búsqueda siempre que necesite los datos correctos. Quizás guarde los resultados en caché para tomar algo de la base de datos, pero la mayoría de los sistemas funcionarán de manera similar.

Almacenar un conjunto de enlaces (como una lista de amigos) está bien, pero el problema surge cuando comienzas a hacer cualquier tipo de análisis complejo. El ejemplo clásico es la búsqueda de amigos de amigos. Para obtener una lista de todos los que tienen un amigo en común con la persona dada, necesitaría recorrer la lista de amigos de la persona dada, y luego recorrer la lista de amigos de cada amigo y luego realizar una búsqueda para cada registro. También debe asegurarse de no devolver registros duplicados, que es un ciclo adicional.

Si estas familiarizado con Notación Big O, es posible que ya vea el problema aquí. Es un problema de complejidad exponencial; hacer múltiples bucles anidados como este rompe la computadora muy rápidamente. Tampoco es una forma inteligente de solucionar este problema.

Eche un vistazo a este punto de referencia de neo4j que ejecuta la consulta de amigos de amigos, en comparación con una base de datos relacional tradicional (como MySQL):

Un referente de neo4j

En profundidad 2, es una consulta simple para ambas bases de datos. En la profundidad 3, MySQL no puede realizar esta consulta en un período de tiempo normal, y tarda 30 segundos en devolver una respuesta. Para su crédito, logra devolver la consulta de profundidad 4 después de 25 minutos, aunque la profundidad 5 bloquea la base de datos.

La base de datos de gráficos no tiene problemas para devolver ninguna de estas consultas, ya que todos los tiempos de ejecución son inferiores a 2 segundos, lo que lo hace miles de veces más rápido.

¿Como hace esto? Matemáticas muy complicadas, en su mayoría. Los gráficos son una estructura matemática en el fondo, y hay mucha teoría detrás de él, que no estamos calificados para discutir en detalle. Pero los gráficos relacionales son bastante simples de entender visualmente, lo que hace que trabajar con bases de datos de gráficos sea fácil en la práctica.

Si desea comenzar a trabajar con uno, deberá elegir e instalar una base de datos de gráficos. Neo4j es gratuito y de código abierto, y una opción muy popular. AWS tiene su base de datos Neptune, que puede probar de forma gratuita, pero debe hospedarse en AWS. Algunas bases de datos de varios modelos admiten gráficos como opción, como Microsoft SQL Server, Base de datos Oracle, y ArangoDB.

Deja un comentario

En esta web usamos cookies para personalizar tu experiencia de usuario.    Política de cookies
Privacidad