Migración de Neo4j a Amazon Neptune - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Migración de Neo4j a Amazon Neptune

Tanto Neo4j como Amazon Neptune son bases de datos de gráficos, diseñadas para cargas de trabajo de gráficos transaccionales en línea que admiten el modelo de datos de gráficos de propiedades etiquetadas. Estas similitudes hacen de Neptune una opción común para los clientes que buscan migrar sus aplicaciones de Neo4j actuales. Sin embargo, estas migraciones no son simples procesos de migrar mediante lift-and-shift, ya que existen diferencias en cuanto a la compatibilidad con los lenguajes y las características, las características operativas, la arquitectura de los servidores y las capacidades de almacenamiento entre las dos bases de datos.

En esta página se explica el proceso de migración y se presentan aspectos a tener en cuenta antes de migrar una aplicación de gráficos de Neo4j a Neptune. Estos aspectos suelen aplicarse a cualquier aplicación de gráficos de Neo4j, ya sea que funcione con una base de datos Community, Enterprise o Aura. Aunque cada solución sea única y pueda requerir procedimientos adicionales, todas las migraciones siguen el mismo patrón general.

Cada uno de los pasos descritos en las siguientes secciones incluye aspectos a tener en cuenta y recomendaciones para simplificar el proceso de migración. Además, hay herramientas de código abierto y publicaciones de blog que describen el proceso, así como una sección de compatibilidad de características con opciones arquitectónicas recomendadas.

Información general sobre la migración de Neo4j a Neptune

Con la compatibilidad de Neptune con el lenguaje de consulta de openCypher, puede mover la mayoría de las cargas de trabajo de Neo4j que utilizan el protocolo Bolt o HTTPS a Neptune. Sin embargo, openCypher es una especificación de código abierto que incluye la mayoría de las funciones compatibles con otras bases de datos, como Neo4j, aunque no todas.

A pesar de ser compatible en muchos aspectos, Neptune no es un sustituto directo de Neo4j. Neptune es un servicio de base de datos de gráficos totalmente gestionado con características empresariales como alta disponibilidad y alta durabilidad que es arquitectónicamente diferente de Neo4j. Neptune se basa en instancias, con una única instancia de escritor principal y hasta 15 instancias de réplica de lectura que permiten escalar la capacidad de lectura horizontalmente. Con Neptune sin servidor, puede escalar y reducir verticalmente y de forma automática su capacidad informática en función del volumen de consultas. Esto es independiente del almacenamiento de Neptune, que se escala automáticamente a medida que se van añadiendo datos.

Neptune es compatible con la especificación estándar de openCypher de código abierto, versión 9. En AWS, creemos que el código abierto es la opción adecuada para todos y estamos comprometidos a llevar el valor del código abierto a nuestros clientes y la excelencia operativa de AWS a las comunidades de código abierto.

Sin embargo, muchas aplicaciones que se ejecutan en Neo4j también utilizan características propias que no son de código abierto y que Neptune no admite. Por ejemplo, Neptune no admite los procedimientos de APOC, algunas cláusulas y funciones específicas de Cypher ni tipos de datos Char, Date o Duration. Neptune convierte automáticamente los tipos de datos que faltan en tipos de datos compatibles.

Además de openCypher, Neptune también es compatible con el lenguaje de consulta Apache TinkerPop Gremlin para gráficos de propiedades (así como con SPARQL para datos RDF). Gremlin puede interoperar con openCypher en el mismo gráfico de propiedades y, en muchos casos, se puede usar Gremlin para proporcionar funciones que openCypher no proporciona. A continuación se muestra una comparación rápida de los dos lenguajes:

openCypher Gremlin

Style (Estilo)

Declarativo

Imperativo

Sintaxis

Coincidencia de patrones

Match p=(a)-[:route]->(d) WHERE a.code='ANC' RETURN p

Basado en la transversalidad

g.V().has('code', 'ANC'). out('route').path(). by(elementMap())

Facilidad de uso

Inspirado en SQL, legible por personas que no son programadores

Curva de aprendizaje más pronunciada, similar a la de lenguajes de programación como Java

Flexibilidad

Baja

Alta

Soporte de consultas

Consultas basadas en cadenas

Consultas basadas en cadenas o código en línea compatibles con las bibliotecas cliente

Clientes

HTTPS y Bolt

HTTPS y Websockets

Por lo general, no es necesario cambiar el modelo de datos para migrar de Neo4j a Neptune, ya que tanto Neo4j como Neptune admiten datos de gráficos de propiedades etiquetadas (LPG). Sin embargo, Neptune presenta algunas diferencias en la arquitectura y el modelo de datos que puede sacar partido para optimizar el rendimiento. Por ejemplo:

Si tiene alguna pregunta, póngase en contacto con AWS Support o con el equipo de cuentas de AWS. Usamos sus comentarios para priorizar las nuevas características que se adapten a sus necesidades.