¿Qué es una base de datos de gráficos?
Una base de datos de gráficos está diseñada para tratar las relaciones entre los datos como igualmente importantes para los datos en sí.
¿Por qué son importantes las bases de datos de grafos?
Debido a que los gráficos son buenos para manejar relaciones, algunas bases de datos almacenan datos en forma de gráfico.
Ejemplo
Tenemos una red social en la que están conectados cinco amigos. Estos amigos son Anay, Bhagya, Chaitanya, Dilip y Erica. Una base de datos de gráficos que almacenará su información personal puede verse así:
Ejemplo anterior pero usando un enfoque de base de datos tradicional
. Ahora usaremos una base de datos relacional para almacenar información. Es muy probable que usemos dos tablas: una para almacenar la información de cada usuario y la otra para almacenar las relaciones entre los usuarios. Así es como se ve la tabla Usuarios:
identificación | primer nombre | apellido | teléfono | |
---|---|---|---|---|
1 | Anay | Agarwal | anay@ejemplo.net | 555-111-5555 |
2 | bhagya | Kumar | bhagya@ejemplo.net | 555-222-5555 |
3 | Chaitanya | Nayak | chaitanya@example.net | 555-333-5555 |
4 | Dilip | jainista | dilip@example.net | 555-444-5555 |
5 | Érica | emmanuel | erica@ejemplo.net | 555-555-5555 |
Ahora, también necesitaremos otra tabla para capturar la amistad/relación entre usuarios/amigos. Nuestra mesa de amistad se verá así:
id_usuario | amigo_id |
---|---|
1 | 2 |
1 | 3 |
1 | 4 |
1 | 5 |
2 | 1 |
2 | 3 |
2 | 4 |
2 | 5 |
3 | 1 |
3 | 2 |
3 | 4 |
3 | 5 |
4 | 1 |
4 | 2 |
4 | 3 |
4 | 5 |
5 | 1 |
5 | 2 |
5 | 3 |
5 | 4 |
Evitaremos profundizar en la teoría de la base de datos (clave principal y clave externa). En su lugar, suponga que la tabla de amistad usa las identificaciones de ambos amigos.
Supongamos que nuestra red social aquí tiene una función que permite a cada usuario ver la información personal de sus amigos. Entonces, si Chaitanya estuviera solicitando información, significaría que necesita información sobre Anay, Bhagya, Dilip y Erica. Abordaremos este problema de la manera tradicional (base de datos relacional). Primero debemos identificar el id de Chaitanya en la tabla de usuarios:
identificación | primer nombre | apellido | teléfono | |
---|---|---|---|---|
3 | Chaitanya | Nayak | chaitanya@example.net | 555-333-5555 |
Ahora, buscaríamos todas las tuplas en la tabla de amistad donde el ID_usuario es 3. La relación resultante sería algo como esto:
id_usuario | amigo_id |
---|---|
3 | 1 |
3 | 2 |
3 | 4 |
3 | 5 |
Ahora, analicemos el tiempo necesario en este enfoque de base de datos relacional. Esto será aproximadamente log(N) veces donde N representa el número de tuplas en la tabla de amistad o el número de relaciones. Aquí, la base de datos mantiene las filas en el orden de las identificaciones. Entonces, en general, para el número de consultas ‘M’, tenemos una complejidad de tiempo de M*log(N)
Solo si hubiéramos utilizado un enfoque de base de datos de gráficos, la complejidad de tiempo total habría sido O (N). Porque, una vez que hemos localizado a Cindy en la base de datos, solo tenemos que dar un paso para encontrar a sus amigos. Así es como se ejecutaría nuestra consulta:
Desventajas: tenga
en cuenta que las bases de datos de gráficos no siempre son la mejor solución para una aplicación. Tendremos que evaluar las necesidades de la aplicación antes de decidir la arquitectura.