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.
Compatibilidad de Neptune con Neo4j
Neo4j se basa en un enfoque integral arquitectónico, en el que la carga de datos, ETL de datos, las consultas a las aplicaciones, el almacenamiento de datos y las operaciones de administración se realizan en el mismo conjunto de recursos informáticos, como, por ejemplo, las instancias EC2. Amazon Neptune es una base de datos de gráficos de especificaciones abiertas y centrada en OLTP en la que la arquitectura separa las operaciones y desacopla los recursos para que puedan escalarse de forma dinámica.
Neo4j incluye diversas características y herramientas, incluidas herramientas de terceros, que no forman parte de la especificación de openCypher, son incompatibles con openCypher o son incompatibles con la implementación de openCypher por Neptune. A continuación, veremos algunas de las más comunes.
Características específicas de Neo4j que no están presentes en Neptune
-
LOAD CSV
: Neptune tiene un enfoque arquitectónico diferente al de Neo4j para cargar datos. Para permitir una mejor escalabilidad y la optimización de los costos, Neptune implementa una separación de las preocupaciones en torno a los recursos y recomienda utilizar una de las integraciones de servicios de AWS, como, por ejemplo, AWS Glue para realizar los procesos de ETL necesarios para preparar los datos en un formato compatible con el programa de carga masiva Neptune.Otra opción es hacer lo mismo con código de aplicación que se ejecute en recursos informáticos de AWS, como instancias de Amazon EC2, funciones de Lambda, Amazon Elastic Container Service, tareas AWS Batch, etc. El código puede usar tanto el punto de conexión de HTTPS de Neptune como el punto de conexión de Bolt.
-
Control de acceso detallado: Neptune admite un control de acceso granular sobre las acciones de acceso a los datos mediante claves de condición de IAM. Se puede implementar un control de acceso más detallado en la capa de aplicación.
-
Neo4j Fabric: Neptune admite la federación de consultas entre bases de datos para cargas de trabajo de RDF mediante la palabra clave SERVICE de SPARQL. Dado que actualmente no existe un estándar o especificación abiertos para la federación de consultas para las cargas de trabajo de gráficos de propiedades, sería necesario implementar esa funcionalidad en la capa de aplicación.
-
Control de acceso basado en roles (RBAC): Neptune administra la autenticación mediante la asignación de roles y políticas de IAM. Los roles y políticas de IAM proporcionan un nivel extremadamente flexible de administración de usuarios dentro de la aplicación, por lo que es importante leer y comprender la Información general de IAM antes de configurar el clúster.
-
Marcadores: los clústeres de Neptune constan de una sola instancia de escritor y hasta 15 instancias de réplica de lectura. Los datos escritos en la instancia de escritos son compatibles con ACID y ofrecen una sólida garantía de coherencia en las lecturas posteriores. Las réplicas de lectura utilizan el mismo volumen de almacenamiento que la instancia de escritor y, en última instancia, son coherentes, normalmente en menos de 100 ms desde el momento en que se escriben los datos. Si su caso de uso requiere garantizar inmediatamente la coherencia de lectura de las nuevas escrituras, estas lecturas deben dirigirse al punto de conexión del clúster en lugar de al punto de conexión del lector.
-
Procedimientos de APOC: dado que los procedimientos de APOC no están incluidos en la especificación de openCypher, Neptune no proporciona soporte directo para procedimientos externos. En cambio, Neptune se basa en integraciones con otros servicios de AWS para lograr una funcionalidad similar para el usuario final de una manera escalable, segura y sólida. A veces, los procedimientos de APOC se pueden volver a escribir en openCypher o Gremlin, y algunos no son relevantes para las aplicaciones de Neptune.
Por lo general, los procedimientos de APOC se clasifican en las siguientes categorías:
-
Importación
: Neptune admite la importación de datos mediante una variedad de formatos mediante lenguajes de consulta, el programa de carga masiva de Neptune o como destino de AWS Database Migration Service. Las operaciones de ETL en los datos se pueden realizar mediante AWS Glue y el paquete de código abierto de neptune-python-utils
. -
Exportación
: Neptune admite la exportación de datos mediante la utilidad neptune-export, que admite una variedad de formatos y métodos de exportación comunes. -
Integración de bases de datos
: Neptune admite la integración con otras bases de datos mediante herramientas de ETL, tales como AWS Glue o herramientas de migración como AWS Database Migration Service. -
Actualizaciones de gráficos
: Neptune admite un amplio conjunto de características para actualizar los datos de los gráficos de propiedades mediante su compatibilidad con los lenguajes de consulta de openCypher y Gremlin. Consulte Reescrituras de Cypher para ver algunos ejemplos de reescrituras de procedimientos que se usan habitualmente. -
Estructuras de datos
: Neptune admite un amplio conjunto de características para actualizar los datos de los gráficos de propiedades mediante su compatibilidad con los lenguajes de consulta de openCypher y Gremlin. Consulte Reescrituras de Cypher para ver algunos ejemplos de reescrituras de procedimientos que se usan habitualmente. -
Temporal (fecha y hora)
: Neptune admite un amplio conjunto de características para actualizar los datos de los gráficos de propiedades mediante su compatibilidad con los lenguajes de consulta de openCypher y Gremlin. Consulte Reescrituras de Cypher para ver algunos ejemplos de reescrituras de procedimientos que se usan habitualmente. -
Matemática
: Neptune admite un amplio conjunto de características para actualizar los datos de los gráficos de propiedades mediante su compatibilidad con los lenguajes de consulta de openCypher y Gremlin. Consulte Reescrituras de Cypher para ver algunos ejemplos de reescrituras de procedimientos que se usan habitualmente. -
Consultas avanzadas de gráficos
: Neptune admite un amplio conjunto de características para actualizar los datos de los gráficos de propiedades mediante su compatibilidad con los lenguajes de consulta de openCypher y Gremlin. Consulte Reescrituras de Cypher para ver algunos ejemplos de reescrituras de procedimientos que se usan habitualmente. -
Comparación de gráficos
: Neptune admite un amplio conjunto de características para actualizar los datos de los gráficos de propiedades mediante su compatibilidad con los lenguajes de consulta de openCypher y Gremlin. Consulte Reescrituras de Cypher para ver algunos ejemplos de reescrituras de procedimientos que se usan habitualmente. -
Ejecución de cifrado
: Neptune admite un amplio conjunto de características para actualizar los datos de los gráficos de propiedades mediante su compatibilidad con los lenguajes de consulta de openCypher y Gremlin. Consulte Reescrituras de Cypher para ver algunos ejemplos de reescrituras de procedimientos que se usan habitualmente.
-
-
Procedimientos personalizados: Neptune no admite procedimientos personalizados creados por los usuarios. Esta funcionalidad tendría que implementarse en la capa de aplicación.
-
Geoespacial: aunque Neptune no ofrezca soporte nativo para las características geoespaciales, se puede lograr una funcionalidad similar mediante la integración con otros servicios de AWS, tal y como se muestra en esta publicación del blog: Combine Amazon Neptune and Amazon OpenSearch Service for geospatial queries
(Combinación de Amazon Neptune y Amazon OpenSearch Service para consultas geoespaciales) de Ross Gabay y Abhilash Vinod (1 de febrero de 2022). -
Ciencia de datos de gráficos: Neptune actualmente admite el análisis de gráficos a través de Neptune Analytics, un motor con optimización de memoria que admite una biblioteca de algoritmos de análisis de gráficos.
Neptune también proporciona una integración con el AWS SDK para Pandas
y varios cuadernos de ejemplo que muestran cómo sacar partido de esta integración en los entornos de Python para ejecutar análisis en los datos de gráficos. -
Restricciones de esquema: en Neptune, la única restricción de esquema disponible es la exclusividad del identificador de un nodo o un borde. No hay ninguna característica que especifique alguna restricción de esquema adicional ni ninguna restricción adicional de exclusividad o valor en un elemento del gráfico. Los valores de ID en Neptune son cadenas y se pueden configurar con Gremlin, de la siguiente manera:
g.addV('person').property(id, '1') )
Se recomienda a las aplicaciones que necesiten sacar partido del ID como una restricción de exclusividad que utilicen este método para lograr una restricción de exclusividad. Si la aplicación utilizó varias columnas como restricción de exclusividad, el ID puede configurarse en una combinación de estos valores. Por ejemplo,
id=123, code='SEA'
podría representarse comoID='123_SEA'
para lograr una restricción de exclusividad compleja. -
Varios inquilinos: Neptune solo admite un gráfico por clúster. Para crear un sistema de varios inquilinos con Neptune, utilice varios clústeres o divida los inquilinos de forma lógica en un único gráfico y utilice la lógica del lado de la aplicación para reforzar la separación. Por ejemplo, añada una propiedad
tenantId
e inclúyala en cada consulta, como, por ejemplo:MATCH p=(n {tenantId:1})-[]->({tenantId:1}) RETURN p LIMIT 5)
Neptune sin servidor hace que sea relativamente sencillo implementar la opción de varios inquilinos mediante varios clústeres de bases de datos, cada uno de los cuales se escala de forma independiente y automática según sea necesario.
Soporte de Neptune para las herramientas de Neo4j
Neptune ofrece las siguientes alternativas a las herramientas de Neo4j:
-
Navegador de Neo4j
: Neptune proporciona cuadernos de gráficos de código abierto que proporcionan un IDE centrado en el desarrollador para ejecutar consultas y visualizar los resultados. -
Bloom de Neo4j
: Neptune admite visualizaciones detalladas de gráficos mediante soluciones de visualización de terceros, como Graph-explorer, Tom Sawyer, Cambridge Intelligence, Graphistry, metaphacts y G.V(). -
GraphQL
: Neptune actualmente admite GraphQL a través de integraciones de AWS AppSync personalizadas. Consulte la publicación del blog Build a graph application with Amazon Neptune and AWS Amplify y el proyecto de ejemplo Building Serverless Calorie tracker application with AWS AppSync and Amazon Neptune . -
NeoSemantics
: Neptune admite de forma nativa el modelo de datos RDF, por lo que se recomienda a los clientes que deseen ejecutar cargas de trabajo de RDF que utilicen el soporte de modelos RDF de Neptune. -
Arrows.app
: el cifrado creado al exportar el modelo mediante el comando export es compatible con Neptune. -
Linkurious Ogma
: una integración de ejemplo con Linkurious Ogma está disponible aquí . -
Spring Data Neo4j
: por el momento, esta opción no es compatible con Neptune. -
Conector de Spark de Neo4j
: el conector de Spark de Neo4j se puede utilizar en un trabajo de Spark para conectarse a Neptune con openCypher. Estos son algunos ejemplos de configuración de códigos y aplicaciones: Código de muestra:
SparkSession spark = SparkSession .builder() .config("encryption.enabled", "true") .appName("Simple Application").config("spark.master", "local").getOrCreate(); Dataset<Row> df = spark.read().format("org.neo4j.spark.DataSource") .option("url", "bolt://
(your cluster endpoint)
:8182") .option("encryption.enabled", "true") .option("query", "MATCH (n:airport) RETURN n") .load(); System.out.println("TOTAL RECORD COUNT: " + df.count()); spark.stop();Configuración de aplicaciones:
<dependency> <groupId>org.neo4j</groupId> <artifactId>neo4j-connector-apache-spark_2.12-4.1.0</artifactId> <version>4.0.1_for_spark_3</version> </dependency>
Características y herramientas de Neo4j que no se incluyen aquí
Si utiliza una herramienta o característica que no se incluye aquí, no tenemos la certeza de su compatibilidad con Neptune u otros servicios incluidos en AWS. Si tiene más preguntas, póngase en contacto con AWS Support o con el equipo de cuentas.