Versión 1.2.1.0 del motor de Amazon Neptune (08/03/2023) - 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.

Versión 1.2.1.0 del motor de Amazon Neptune (08/03/2023)

A partir del 8 de marzo de 2023, se implementará de forma general la versión 1.2.1.0 del motor. Tenga en cuenta que las versiones nuevas tardan unos días en estar disponibles en todas las regiones.

nota

Si se realiza la actualización desde una versión del motor anterior a la 1.2.0.0:

  • En la versión 1.2.0.0 del motor, se introdujo un nuevo formato para los grupos de parámetros personalizados y los grupos de parámetros de clústeres personalizados. En consecuencia, si va a actualizar una versión de motor anterior a la 1.2.0.0 a una versión de motor 1.2.0.0 o posterior, debe volver a crear todos los grupos de parámetros personalizados y los grupos de parámetros de clúster personalizados existentes utilizando la familia de grupos de parámetros neptune1.2. En las versiones anteriores, se utilizaba la familia de grupos de parámetros neptune1, y esos grupos de parámetros no funcionan con la versión 1.2.0.0 y las versiones posteriores. Para obtener más información, consulte Grupos de parámetros de Amazon Neptune.

  • En la versión 1.2.0.0 del motor, también se introdujo un nuevo formato para los registros de deshacer. Como resultado, se deben purgar todos los registros de deshacer que se hayan creado con una versión anterior del motor y la métrica UndoLogsListSize de CloudWatch debe ser cero antes de que se pueda iniciar una actualización desde una versión anterior a la 1.2.0.0. Si hay demasiados registros de deshacer (200 000 o más), al intentar iniciar una actualización, es posible que se agote el tiempo de espera de la purga de los registros de deshacer.

    Para acelerar la velocidad de depuración, actualice la instancia del escritor del clúster, que es donde se realiza la depuración. Si lo hace antes de intentar la actualización, puede reducir el número de registros de deshacer antes de empezar. Si se aumenta el tamaño del escritor a un tipo de instancia 24XL, se puede aumentar la velocidad de purga a más de un millón de registros por hora.

    Si la métrica UndoLogsListSize de CloudWatch es muy grande, abra un caso de soporte para ayudarle a analizar estrategias adicionales para reducirla.

  • Por último, se ha producido un cambio importante en la versión 1.2.0.0 que afecta al código anterior que utilizaba el protocolo Bolt con autenticación de IAM. A partir de la versión 1.2.0.0, Bolt necesita una ruta de recursos para la firma de IAM. En Java, la ruta del recurso podría tener este aspecto: request.setResourcePath("/openCypher"));. En otros lenguajes, /openCypher se puede agregar al URI del punto de conexión. Para ver ejemplos, consulte Uso del protocolo Bolt.

Versiones de parche posteriores para esta versión

Nuevas características de esta versión del motor

  • Se ha añadido soporte para TinkerPop 3.6.2, que añade muchas características nuevas de Gremlin, como los pasos nuevos mergeV(), mergeE(), element() y fail(). Los pasos mergeV() y mergeE() son de especial interés, ya que ofrecen una opción declarativa muy esperada para realizar operaciones tipo actualización o inserción, lo que debería simplificar en gran medida los patrones de código existentes y facilitar la lectura de Gremlin. La versión 3.6.x también ha añadido predicados de expresiones regulares, lo que supone una nueva sobrecarga para el paso property() que requiere una Map y una revisión principal del comportamiento de modulación by(), que es mucho más coherente en todos los pasos en los que se utiliza.

    Consulta el registro cambios de TinkerPop y la página de actualizaciones para obtener información sobre los cambios en la versión 3.6 y los aspectos a tener en cuenta al realizar la actualización.

    Si utiliza fold().coalesce(unfold(), <mutate>) para las inserciones condicionales, te recomendamos migrar a la nueva sintaxis mergeV/E(), que se describe aquí y aquí. Neptune utiliza un patrón de bloqueo más limitado para Merge que para Coalesce, lo que puede reducir las excepciones de modificación simultánea (CME).

    Para obtener más información sobre las nuevas características disponibles en esta versión de TinkerPop, consulte el blog de Stephen Mallette, Exploring new features of Apache TinkerPop 3.6.x in Amazon Neptune (Exploración de las nuevas características de Apache TinkerPop 3.6x en Amazon Neptune).

  • Se ha añadido compatibilidad con los tipos de instancias R6i, con tecnología de procesadores Intel Xeon Scalable de 3.ª generación. Son ideales para cargas de trabajo con uso intensivo de memoria y ofrecen hasta un 15 % más de rendimiento informático y hasta un 20 % más de ancho de banda de memoria por vCPU que los tipos de instancias R5 comparables.

  • Se han añadido puntos de conexión de la API de resumen de gráficos tanto para los gráficos de propiedades como para los gráficos RDF, que le permiten obtener un informe resumido rápido sobre el gráfico.

    En el caso de los gráficos de propiedades (PG), la API de resumen de gráficos devuelve una lista de solo lectura de etiquetas de nodos y bordes y claves de propiedades, junto con el recuento de nodos, bordes y propiedades. En el caso de los gráficos RDF, proporciona una lista de clases y claves de predicados, junto con recuentos de cuádruples, sujetos y predicados.

    La nueva API de resumen de gráficos ha incluido los siguientes cambios:

    • Se ha añadido una nueva acción del plano de datos GetGraphSummary.

    • Se ha añadido un nuevo punto de conexión rdf/statistics para reemplazar el punto de conexión sparql/statistics, que ahora está obsoleto.

    • Se ha cambiado el nombre del campo summary en la respuesta de estado de las estadísticas a signatureInfo para no confundirlo con la información de resumen del gráfico. Las versiones anteriores del motor siguen utilizando summary en la respuesta de JSON.

    • Se ha cambiado la precisión del campo date en la respuesta de estado de las estadísticas de un minuto a un milisegundo. El formato anterior era 2020-05-07T23:13Z (precisión en minutos), mientras que el nuevo formato es 2023-01-24T00:47:43.319Z (precisión en milisegundos). Ambos cumplen con la norma ISO 8601, pero este cambio puede interrumpir el código existente, según cómo se analice la fecha.

    • Se ha añadido un nuevo comando mágico de línea %statistics en el entorno de trabajo que permite recuperar las estadísticas del motor DFE.

    • Se ha añadido un nuevo comando mágico de línea %summary en el entorno de trabajo que permite recuperar información del resumen de gráficos.

  • Se ha añadido el registro de consultas lentas para registrar las consultas que tardan más en ejecutarse que un umbral especificado. Para habilitar y controlar el registro de consultas lentas, se utilizan los dos nuevos parámetros dinámicos, es decir, neptune_enable_slow_query_log y neptune_slow_query_log_threshold.

  • Se ha añadido compatibilidad con dos parámetros dinámicos, los nuevos parámetros de clúster, neptune_enable_slow_query_log y neptune_slow_query_log_threshold. Al realizar un cambio en un parámetro dinámico, se aplica inmediatamente, sin necesidad de reiniciar la instancia.

  • Se ha añadido una función removeKeyFromMap() de openCypher específica de Neptune que elimina una clave específica de un mapa y devuelve la nueva asignación resultante.

Mejoras en esta versión del motor

  • Se ha ampliado la compatibilidad con el DFE de Gremlin a los pasos limit con alcance local.

  • Se ha añadido soporte de modulación by() para el DedupGlobalStep del Gremlin en el motor DFE.

  • Se ha añadido compatibilidad con DFE para Gremlin SelectStep y SelectOneStep.

  • Mejoras en el rendimiento y correcciones para varios operadores de Gremlin, incluidos repeat, coalesce, store y aggregate.

  • Se ha mejorado el rendimiento de las consultas de openCypher relacionadas con MERGE y OPTIONAL MATCH.

  • Se ha mejorado el rendimiento de las consultas de openCypher relacionadas con UNWIND de una lista de mapas de valores literales.

  • Se ha mejorado el rendimiento de las consultas de openCypher que tienen un filtro IN para id. Por ejemplo:

    MATCH (n) WHERE id(n) IN ['1', '2', '3'] RETURN n
  • Se ha añadido la posibilidad de especificar el IRI base para las consultas de SPARQL mediante la instrucción BASE (consulte IRI base predeterminado para consultas y actualizaciones).

  • Se ha reducido el tiempo de espera para el procesamiento de carga para las cargas masivas de solo bordes de Gremlin y openCypher.

  • Se ha logrado que las cargas masivas se reanuden de forma asíncrona cuando Neptune se reinicia para evitar el prolongado tiempo de espera provocado por problemas de conectividad de Amazon S3 antes de que se produzca un error en los intentos de reanudación.

  • Se ha mejorado la gestión de las consultas DESCRIBE de SPARQL que tienen la sugerencia de consulta describeMode establecida en "CBD" (descripción concisa y limitada) y que implican una gran cantidad de nodos en blanco.

Defectos corregidos en esta versión del motor

  • Se ha corregido un error de openCypher que provocaba que las consultas devolvieran la cadena "null", en lugar de un valor nulo en Bolt y SPARQL-JSON.

  • Se ha corregido un error de openCypher en la comprensión de las listas que producía un valor nulo en lugar de los valores proporcionados para los elementos de la lista.

  • Se ha corregido un error de openCypher que provocaba que los valores de los bytes no se serializaran correctamente.

  • Se ha corregido un error de Gremlin en UnionStep que se producía cuando una entrada era un recorrido de borde hacia un vértice dentro de un recorrido secundario.

  • Se ha corregido un error de Gremlin que provocaba que una etiqueta de paso asociada a UnionStep no se propagase correctamente hasta el último paso del recorrido secundario.

  • Se ha corregido un error de Gremlin en el paso dedup con etiquetas que seguían a un paso repeat, por el que las etiquetas adjuntas al paso dedup no estaban disponibles para utilizarlas en consultas posteriores.

  • Se ha corregido un error de Gremlin que provocaba que al traducir el paso repeat dentro de un paso union se produjera un error interno.

  • Se ha corregido un error de corrección de Gremlin en las consultas del DFE con limit como recorrido secundario de pasos no unidos a la unión que recurrían a Tinkerpop. Las consultas en un formato como este se ven afectadas:

    g.withSideEffect('Neptune#useDFE', true).V().as("a").select("a").by(out().limit(1))
  • Se ha corregido un error de SPARQL por el que los patrones SPARQL GRAPH no tenían en cuenta el conjunto de datos proporcionado por una cláusula FROM NAMED.

  • Se ha corregido un error de SPARQL que provocaba que DESCRIBE de SPARQL con algunas clausulas FROM o FROM NAMED no siempre utilizaba correctamente los datos del gráfico predeterminado y, a veces, generaba una excepción. Consulte Comportamiento de DESCRIBE de SPARQL con respecto al gráfico predeterminado.

  • Se ha corregido un error de SPARQL para que se devolviera el mensaje de excepción correcto cuando se rechazaban caracteres nulos.

  • Se ha corregido un error explain de SPARQL que afectaba a los planes que incluían un operador PipelinedHashIndexJoin.

  • Se ha corregido un error que podía provocar un error interno cuando se enviaba una consulta que devolvía un valor constante.

  • Se ha corregido un problema con la lógica del detector de bloqueos que, en ocasiones, hacía que el motor dejara de responder.

Versiones de lenguaje de consulta admitidas en esta versión

Antes de actualizar un clúster de base de datos a la versión 1.2.1.0, asegúrese de que el proyecto sea compatible con estas versiones de lenguaje de consulta:

  • Compatible con la primera versión de Gremlin: 3.6.2

  • Compatible con la última versión de Gremlin: 3.6.2

  • Versión de openCypher: Neptune-9.0.20190305-1.1

  • Versión de SPARQL: 1.1

Rutas de actualización a la versión 1.2.1.0 del motor

Puede actualizar manualmente cualquier versión anterior del motor de Neptune a la versión 1.1.0.0 o una versión posterior.

nota

A partir de la versión 1.2.0.0 del motor, todos los grupos de parámetros personalizados y los grupos de parámetros de clúster personalizados que utilizaba con las versiones del motor anteriores a 1.2.0.0 deben volver a crearse mediante la familia de grupos de parámetros neptune1.2. Las versiones anteriores utilizaban la familia de grupos de parámetros neptune1, y esos grupos de parámetros no funcionarán a partir de la versión 1.2.0.0. Para obtener más información, consulte Grupos de parámetros de Amazon Neptune.

No se actualizará automáticamente a esta versión principal.

Actualización a esta versión

La versión 1.2.1.0 de Amazon Neptune ya está disponible con carácter general.

Si un clúster de base de datos ejecuta una versión de motor desde la que existe una ruta de actualización a esta versión, puede actualizarse ahora. Puede actualizar cualquier clúster que cumpla los requisitos mediante las operaciones del clúster de base de datos de la consola o mediante el SDK. El siguiente comando de la CLI actualizará inmediatamente un clúster que cumpla los requisitos:

Para Linux, OS X o Unix:

aws neptune modify-db-cluster \ --db-cluster-identifier (your-neptune-cluster) \ --engine-version 1.2.1.0 \ --apply-immediately

Para Windows:

aws neptune modify-db-cluster ^ --db-cluster-identifier (your-neptune-cluster) ^ --engine-version 1.2.1.0 ^ --apply-immediately

Las actualizaciones se aplican a todas las instancias en un clúster de base de datos simultáneamente. Una actualización requiere un reinicio de la base de datos en esas instancias, por lo que se experimentará un tiempo de inactividad que oscila entre 20-30 segundos y varios minutos, tras el cual se puede reanudar el uso del clúster de base de datos.

Realice siempre una prueba antes de realizar la actualización

Cuando se publique una nueva versión principal o secundaria del motor de Neptune, pruebe siempre las aplicaciones de Neptune en ella antes de actualizar. Incluso en una actualización secundaria podría haber nuevas características o comportamientos que podrían afectar al código.

Comience por comparar las páginas de notas de la versión actual con las de la versión de destino para ver si hay cambios en las versiones del lenguaje de consulta u otros cambios importantes.

La mejor forma de probar una nueva versión antes de actualizar el clúster de base de datos de producción es clonar el clúster de producción para que el clon ejecute la nueva versión del motor. A continuación, puede ejecutar consultas en el clon sin que eso afecte al clúster de base de datos de producción.

Cree siempre una instantánea manual antes de realizar la actualización

Antes de realizar una actualización, se recomienda crear siempre una instantánea manual del clúster de base de datos. Una instantánea automática solo ofrece protección a corto plazo, mientras que una instantánea manual está disponible hasta que la elimine explícitamente.

En algunos casos, Neptune crea una instantánea manual para usted como parte del proceso de actualización, pero no debe confiar en eso y crear su propia instantánea manual.

Cuando tenga la seguridad de que no necesitará revertir el clúster de base de datos al estado anterior a la actualización, puede eliminar de forma explícita la instantánea manual que ha creado, así como la instantánea manual que Neptune podría haber creado. Si Neptune crea una instantánea manual, tendrá un nombre que empieza por preupgrade, seguido del nombre del clúster de base de datos, la versión del motor de origen, la versión del motor de destino y la fecha.

nota

Si intenta realizar la actualización mientras hay una acción pendiente en proceso, es posible que se produzca un error como el siguiente:

We're sorry, your request to modify DB cluster (cluster identifier) has failed. Cannot modify engine version because instance (instance identifier) is running on an old configuration. Apply any pending maintenance actions on the instance before proceeding with the upgrade.

Si se produce este error, espere a que finalice la acción pendiente o active inmediatamente un periodo de mantenimiento para que se complete la actualización anterior.

Para obtener más información sobre la actualización de la versión del motor, consulte Mantenimiento del clúster de base de datos de Amazon Neptune. Si tiene alguna duda, el equipo de AWS Support está disponible en los foros de la comunidad y a través de AWS Premium Support.