Neo4j Graph Database Fundamentals · Lección

Refactorización y evolución del modelo de grafos

Aprenda a evolucionar de forma segura un modelo de grafos de Neo4j con el tiempo mediante patrones de refactorización y consultas reestructuradas.

Lección 4 de 413 pasos

Refactorización y evolución del modelo de grafos es una lección gratuita de Neo4j Graph Database Fundamentals en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Neo4j Graph Database Fundamentals, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Neo4j Graph Database Fundamentals incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

Models Are Never Final

As applications grow, your graph model will change. New questions demand new structure. Refactoring lets you reshape the graph without losing data.

Property to Node

A common refactor: a property shared by many nodes (like a city name) becomes its own node so it can hold relationships.

MATCH (p:Person)
WHERE p.city IS NOT NULL
MERGE (c:City {name: p.city})
MERGE (p)-[:LIVES_IN]->(c)
REMOVE p.city;

Node to Property

The reverse refactor: collapse a rarely-traversed node back into a property when its relationships add no value.

MATCH (p:Person)-[r:LIVES_IN]->(c:City)
SET p.city = c.name
DELETE r;

Renaming Relationship Types

To rename a relationship type, create the new one and delete the old. Cypher cannot rename a type in place.

MATCH (a)-[old:KNOWS]->(b)
MERGE (a)-[:FRIEND]->(b)
DELETE old;

Adding a New Label

You can introduce a new label to a subset of nodes to support new queries or constraints.

MATCH (p:Person)
WHERE p.age >= 18
SET p:Adult;

Splitting a Node

When one node mixes two concerns (e.g. a user and their address), split it into linked nodes for clarity and reuse.

MATCH (u:User)
WHERE u.street IS NOT NULL
CREATE (a:Address {street: u.street, zip: u.zip})
MERGE (u)-[:HAS_ADDRESS]->(a)
REMOVE u.street, u.zip;

Merging Duplicate Nodes

Data imports can create duplicates. Use APOC or careful Cypher to merge them, reattaching all relationships to a single surviving node.

MATCH (a:Person {email: 'x@y.com'}), (b:Person {email: 'x@y.com'})
WHERE id(a) < id(b)
WITH a, b
CALL apoc.refactor.mergeNodes([a, b]) YIELD node
RETURN node;

Batching Large Refactors

Refactors over millions of nodes should run in batches to avoid huge transactions. APOC's periodic iterate helps.

CALL apoc.periodic.iterate(
  'MATCH (p:Person) WHERE p.city IS NOT NULL RETURN p',
  'MERGE (c:City {name: p.city}) MERGE (p)-[:LIVES_IN]->(c) REMOVE p.city',
  {batchSize: 1000}
);

Versioning Your Model

Keep refactor scripts in version control and apply them in order, like database migrations. This makes changes reproducible across environments.

Testing After Refactor

Always validate counts before and after. Compare relationship totals to ensure nothing was orphaned or lost.

MATCH ()-[r:LIVES_IN]->() RETURN count(r) AS livesInCount;

Refactor with Confidence

Back up first, refactor in batches, verify counts, and keep scripts versioned. A graph model is a living thing you improve over time.

Quick Check

Test your refactoring knowledge.

Recap

You learned to evolve graph models safely:

  • Convert properties to nodes and back
  • Rename relationship types by recreating them
  • Split nodes and merge duplicates
  • Batch large refactors with APOC
  • Version scripts and verify counts
Gratis para empezar

Aprende Neo4j Graph Database Fundamentals con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
12
Lecciones
48

Preguntas frecuentes

¿La lección «Refactorización y evolución del modelo de grafos» es gratis?

Sí — el texto completo de «Refactorización y evolución del modelo de grafos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Neo4j Graph Database Fundamentals, actualiza a CoddyKit PRO. El curso de Neo4j Graph Database Fundamentals incluye 4 lecciones en total.

¿Qué aprenderé en «Refactorización y evolución del modelo de grafos»?

Aprenda a evolucionar de forma segura un modelo de grafos de Neo4j con el tiempo mediante patrones de refactorización y consultas reestructuradas. Practicas Neo4j Graph Database Fundamentals con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Neo4j Graph Database Fundamentals?

No se requiere experiencia previa. Neo4j Graph Database Fundamentals en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Refactorización y evolución del modelo de grafos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Neo4j Graph Database Fundamentals?

Sí. Cada lección de Neo4j Graph Database Fundamentals incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Principios del modelado de datos de grafos
  2. Diseño de su primer modelo de grafo
  3. Restricciones de esquema e índices
  4. Refactorización y evolución del modelo de grafos
← Volver a Neo4j Graph Database Fundamentals