Pixelaula.
Administración y NoSQL · Lección 5 de 5

Las relaciones primero

En un grafo las conexiones se guardan, no se calculan. Al terminar sabrás escribir consultas en Cypher que recorren una red de películas.

⏱ 25–35 min▶ Video de 90 s🧪 Laboratorio con 4 misiones
00 · En 90 segundos

Primero, la idea completa

Mira el video entero o salta a la parte que quieras repasar. Después, cada idea tiene su propia escena para tocarla.

    01 · Las relaciones primero

    Nodos, relaciones y propiedades

    Una base de datos de grafos representa los datos como un dibujo de puntos y flechas. Tiene tres piezas:

    • Nodos (o vértices): las cosas. Cada uno puede tener una o varias etiquetas que dicen qué es: :Person, :Movie.
    • Relaciones: las flechas que conectan dos nodos. Tienen un tipo (:ACTED_IN, :DIRECTED) y una dirección: salen de un nodo de inicio y llegan a un nodo final.
    • Propiedades: pares clave-valor que pueden tener tanto los nodos como las relaciones: name: "Tom Hanks", born: 1956, roles: ["Chuck Noland"].

    La diferencia con una relacional es que las conexiones se guardan, no se calculan. En una tabla, saber quién actuó en qué exige un JOIN que busca coincidencias; en un grafo, el nodo ya sabe a quién apunta, y basta con recorrer la flecha.

    • Tablas → grafos · Filas → nodos · Columnas → propiedades · Restricciones → relaciones · JOIN → recorrido.

    Neo4j es la base de grafos más conocida: corre sobre la máquina virtual de Java, cumple ACID, tiene un esquema flexible, índices, una aplicación web para administrarla y su propio lenguaje de consultas, Cypher.

    Escena 1

    ¿A quién llega Ana en 1, 2 o 3 saltos de amistad? Compara lo que cuesta en un grafo y en tablas.

    02 · Cypher

    Consultas que se dibujan

    Cypher describe patrones con arte ASCII: los nodos van entre paréntesis y las relaciones son flechas con corchetes.

    • (p:Person {name: "Tom Hanks"}): un nodo con etiqueta Person y esa propiedad. La letra p es una variable para usarlo después.
    • (p)-[:ACTED_IN]->(m:Movie): p actuó en una película m.
    • (a)-[:FRIEND]-(b): sin punta de flecha, en cualquier dirección.
    • (a)-[:FRIEND*2]->(c): exactamente dos saltos. *1..3: de uno a tres.

    Una consulta combina cláusulas. MATCH dice el patrón que buscas; WHERE le agrega condiciones; RETURN dice qué devolver. Para crear se usa CREATE:

    • CREATE (n:Person {name: "Ana", born: 1999}) crea un nodo.
    • MATCH (a:Person {name: "Ana"}), (m:Movie {title: "Top Gun"}) CREATE (a)-[:REVIEWED {rating: 9}]->(m) busca dos nodos que ya existen y los conecta.
    • MATCH (m:Movie) WHERE m.released >= 2000 RETURN m.title ORDER BY m.released LIMIT 5 filtra, ordena y limita.
    Escena 2

    Elige una persona y una pregunta. Mira el patrón en Cypher y lo que encuentra en el grafo.

    03 · Cambiar y borrar

    SET, REMOVE y DELETE

    • SET n.ciudad = "Antigua" agrega o cambia una propiedad; SET n:Actor agrega una etiqueta.
    • REMOVE n.ciudad quita una propiedad; REMOVE n:Actor, una etiqueta.
    • DELETE r borra una relación. Un nodo solo se puede borrar con DELETE si ya no tiene relaciones; para borrarlo junto con todas ellas se usa DETACH DELETE n.
    • MATCH (n) DETACH DELETE n vacía la base completa: cuidado.

    Para cargar datos masivos, LOAD CSV WITH HEADERS FROM 'archivo.csv' AS fila lee un archivo y crea nodos y relaciones por cada fila, incluso con millones de registros.

    04 · Predice

    Antes de leer la respuesta

    Truco para tu laboratorio
    Las personas tienen la propiedad name y born; las películas, title y released. Las relaciones son ACTED_IN, DIRECTED, PRODUCED y WROTE. Respeta mayúsculas y minúsculas.
    Laboratorio

    Tu turno: una base de películas en Cypher

    Un Neo4j con una pequeña base de películas: actores, directores, productores y guionistas. Escribe consultas en Cypher; lo que devuelve cada una se ilumina en el grafo y aparece en la tabla de resultados.

    Repaso

    Comprueba lo que entendiste

    Cada respuesta incorrecta explica por qué parece correcta y en qué falla.