🎯 Objetivo:
Conocer qué es Neo4j, entender las bases de datos de grafos y cuándo es útil este tipo de base de datos.
🌐 ¿Qué es Neo4j?
Neo4j es una base de datos NoSQL especializada en grafos, que almacena datos como nodos, relaciones y propiedades en lugar de tablas o documentos.
-
Es ideal para representar redes y conexiones complejas.
-
Se usa en áreas como redes sociales, recomendaciones, detección de fraudes y más.
-
Utiliza un lenguaje propio llamado Cypher para consultar grafos.
🔎 ¿Qué es una base de datos de grafos?
-
Una base de datos que modela datos en forma de nodos (entidades) y relaciones (conexiones entre nodos).
-
Cada nodo y relación puede tener propiedades (atributos).
Ejemplo simple:
-
Nodos: Personas, Películas
-
Relaciones: «AMIGO_DE», «VIO», «RECOMENDADO_POR»
🧩 Componentes clave
| Elemento | Descripción | Ejemplo |
|---|---|---|
| Nodo | Entidad o punto en el grafo | Persona: {nombre: "Ana"} |
| Relación | Conexión entre dos nodos | AMIGO_DE, VIO |
| Propiedad | Información asociada a nodos o relaciones | edad, fecha, duración |
🔥 ¿Por qué usar Neo4j?
-
Modelar datos altamente conectados de forma natural.
-
Consultas complejas y rápidas sobre relaciones.
-
Flexible para evolucionar modelos sin esquemas rígidos.
-
Casos reales: redes sociales, recomendaciones, análisis de fraude, genealogías.
📝 Ejemplo con Cypher
Crear dos nodos y una relación:
Consulta todos los amigos de Ana:
🚀 Casos de uso comunes
-
Redes sociales (amigos, seguidores)
-
Recomendaciones (productos, películas)
-
Detección de fraudes (relaciones sospechosas)
-
Gestión de infraestructuras (redes eléctricas, telecom)
📝 Actividad práctica
-
Crea dos nodos que representen dos personas y conéctalos con una relación
CONOCE_A. -
Consulta los nodos relacionados a una persona específica.
-
Añade propiedades extra a un nodo (ejemplo: email, ciudad).
-
Explica con tus palabras por qué una base de datos de grafos es mejor que una relacional para redes sociales.
✅ Revisión rápida
-
¿Qué representan los nodos en Neo4j?
-
¿Cómo se llaman las conexiones entre nodos?
-
¿Qué lenguaje se usa para consultas en Neo4j?