Versión 1.1.1.0 del motor de Amazon Neptune (19/04/2022) - 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.1.1.0 del motor de Amazon Neptune (19/04/2022)

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

importante

La actualización a esta versión del motor desde una versión anterior a 1.1.0.0 también desencadena una actualización del sistema operativo en todas las instancias del clúster de base de datos. Dado que las solicitudes de escritura activas que se produzcan durante la actualización del sistema operativo no se procesarán, debe pausar todas las cargas de trabajo de escritura en el clúster que se va a actualizar, incluidas las cargas masivas de datos, antes de iniciar la actualización.

Para completar la actualización correctamente, cada subred de cada zona de disponibilidad (AZ) debe tener al menos una dirección IP disponible por instancia de Neptune. Por ejemplo, si hay una instancia de escritor y dos instancias de lector en la subred 1 y dos instancias de lector en la subred 2, la subred 1 debe tener al menos 3 direcciones IP libres y la subred 2 debe tener al menos 2 direcciones IP libres antes de iniciar la actualización.

Al inicio de la actualización, Neptune genera una instantánea con un nombre que se compone de preupgrade seguido de un identificador generado automáticamente en función de la información del clúster de base de datos. No se le cobrará por esta instantánea y podrá utilizarla para restaurar el clúster de base de datos si se produce algún problema durante el proceso de actualización.

Cuando se complete la propia actualización del motor, la nueva versión del motor estará disponible brevemente en el sistema operativo anterior, pero en menos de cinco minutos todas las instancias del clúster comenzarán simultáneamente a actualizar el sistema operativo. El clúster de base de datos no estará disponible en este momento durante varios minutos. Puede reanudar cargas de trabajo de escritura una vez finalizada la actualización.

Este proceso genera los siguientes eventos:

  • Mensajes de eventos por clúster:

    • Upgrade in progress: Creating pre-upgrade snapshot [preupgrade-(autogenerated snapshot ID)]

    • Database cluster major version has been upgraded

  • Mensajes de eventos por instancia:

    • Applying off-line patches to DB instance

    • DB instance shutdown

    • Finished applying off-line patches to DB instance

    • DB instance restarted

Versiones de parche posteriores para esta versión

Nuevas características de esta versión del motor

  • El lenguaje de consulta de openCypher ya se encuentra disponible con carácter general para su uso con fines de producción.

    aviso

    Hay un cambio importante en esta versión para el código que usa openCypher con autenticación de IAM. En la vista previa de Neptune para openCypher, la cadena de host de la firma de IAM incluía el protocolo, como, por ejemplo bolt://, de la siguiente manera:

    "Host":"bolt://(host URL):(port)"

    A partir de esta versión del motor, se debe omitir el protocolo:

    "Host":"(host URL):(port)"

    Para ver ejemplos, consulte Uso del protocolo Bolt.

  • Se ha añadido compatibilidad con TinkerPop 3.5.2. Entre los cambios de esta versión se encuentran el soporte para transacciones remotas y el soporte de bytecode para las sesiones (con g.tx), y la adición de la función datetime() al lenguaje de Gremlin.

    aviso

    Se han introducido varios cambios importantes en TinkerPop 3.5.0, 3.5.1 y 3.5.2 que pueden afectar al código de Gremlin. Por ejemplo, usar recorridos generados por un GraphTraversalSource como secundarios de esta manera ya no funcionará: g.V().union(identity(), g.V()).

    Ahora en su lugar, utilice un recorrido anónimo como este: g.V().union(identity(), __.V()).

  • Se ha añadido compatibilidad con claves de condición globales de AWS que puede usar en las políticas de acceso a datos de IAM que controlan el acceso a los datos almacenados en un clúster de base de datos de Neptune.

  • El motor de consultas DFE de Neptune ya está disponible con carácter general para su uso en producción con el lenguaje de consultas de openCypher, pero todavía no para las consultas de Gremlin y SPARQL. Ahora lo habilita con su propio parámetro de instancia neptune_dfe_query_engine en lugar del parámetro lab-mode.

Mejoras en esta versión del motor

  • Se han añadido nuevas características a openCypher, como la compatibilidad con consultas parametrizadas, el almacenamiento en caché del árbol de sintaxis abstracta (AST) para las consultas parametrizadas, las mejoras en las rutas de longitud variable (VLP) y nuevos operadores y cláusulas. Consulte openCypher conformidad con las especificaciones en Amazon Neptune para obtener información sobre el nivel actual del soporte de lenguajes.

  • Se han realizado mejoras importantes en el rendimiento de openCypher para cargas de trabajo sencillas de lectura y escritura, lo que se tradujo en un mayor rendimiento en comparación con la versión 1.1.0.0.

  • Se han eliminado las limitaciones bidireccionales y de profundidad de openCypher al gestionar las rutas de longitud variable.

  • Se ha completado el soporte del motor DFE para los predicados within y without de Gremlin, incluidos los casos en los que se combinan con otros operadores de predicados. Por ejemplo:

    g.V().has('age', within(12, 15, 18).or(gt(30)))
  • Se ha ampliado el soporte del motor DFE para el paso order de Gremlin cuando el ámbito es global (es decir, no order(local)) y cuando no se utilizan moduladores by(). Por ejemplo, esta consulta ahora sería compatible con el DFE:

    g.V().values("age").order()
  • Se ha añadido un campo isLastOp al formato de respuesta del registro de cambios de las transmisiones de Neptune para indicar que un registro es la última operación de su transacción.

  • Se ha mejorado considerablemente el rendimiento del registro de auditoría y se ha reducido la latencia cuando se ha habilitado el registro de auditoría.

  • Se ha convertido el código de bytes y las consultas HTTP de WebSocket de Gremlin a un formato legible por el usuario en los registros de auditoría. Las consultas ahora se pueden copiar directamente de los registros de auditoría para ejecutarlas en los cuadernos de Neptune y en otros lugares. Tenga en cuenta que este cambio en el formato actual del registro de auditoría constituye un cambio radical.

Defectos corregidos en esta versión del motor

  • Se ha corregido un error raro de Gremlin que provocaba que no se devolvieran resultados cuando se utilizaban los pasos anidados filter() y count() combinados, como en la siguiente consulta:

    g.V("1").filter(out("knows") .filter(in("knows") .hasId("notExists")) .count())
  • Se ha corregido un error de Gremlin que provocaba que se devolviera un error al utilizar un vértice almacenado por un paso agregado en uno de los recorridos to() o from() recorridos junto con un paso addE. Un ejemplo de una consulta de este tipo es:

    g.V("id").aggregate("v").out().addE().to(select("v").unfold()))
  • Se ha corregido un error de Gremlin que provocaba que el paso not fallara en casos de borde al utilizar el motor DFE. Por ejemplo:

    g.V().not(V())
  • Se ha corregido un error de Gremlin que provocaba que los valores sideEffect no estuvieran disponibles dentro de los recorridos to() y from().

  • Se ha corregido un error que, en ocasiones, provocaba que un restablecimiento rápido desencadenara una conmutación por error de la instancia.

  • Se ha corregido un error de carga masiva que provocaba que una transacción errónea no se cerrara antes de comenzar la siguiente tarea de carga.

  • Se ha corregido un error de carga masiva que provocaba que el sistema se bloqueara debido a una falta de memoria.

  • Se ha añadido un reintento para corregir un error de carga masiva que provocaba que el programa de carga no esperara lo suficiente para que las credenciales de IAM estuvieran disponibles tras una conmutación por error.

  • Se ha corregido un error que provocaba que la caché interna de credenciales no se borrara correctamente en los puntos de conexión que no eran de consulta, como, por ejemplo, el punto de conexión status.

  • Se ha corregido un error en las transmisiones para garantizar que los números de secuencia de confirmación de las transmisiones estén ordenados correctamente.

  • Se ha corregido un error que provocaba que las conexiones de larga duración finalizaran antes de diez días en los clústeres habilitados para IAM.

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.1.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.5.2

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

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

  • Versión de SPARQL: 1.1

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

Puede actualizar manualmente cualquier versión anterior del motor de Neptune a esta versión. Tenga en cuenta que las versiones anteriores a la versión principal del motor (1.1.0.0) tardarán más en actualizarse a esta versión.

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

Actualización a esta versión

importante

La actualización a esta versión del motor desde una versión anterior a 1.1.0.0 también desencadena una actualización del sistema operativo en todas las instancias del clúster de base de datos. Dado que las solicitudes de escritura activas que se produzcan durante la actualización del sistema operativo no se procesarán, debe pausar todas las cargas de trabajo de escritura en el clúster que se va a actualizar, incluidas las cargas masivas de datos, antes de iniciar la actualización.

Al inicio de la actualización, Neptune genera una instantánea con un nombre que se compone de preupgrade seguido de un identificador generado automáticamente en función de la información del clúster de base de datos. No se le cobrará por esta instantánea y podrá utilizarla para restaurar el clúster de base de datos si se produce algún problema durante el proceso de actualización.

Cuando se complete la propia actualización del motor, la nueva versión del motor estará disponible brevemente en el sistema operativo anterior, pero en menos de cinco minutos todas las instancias del clúster comenzarán simultáneamente a actualizar el sistema operativo. El clúster de base de datos no estará disponible en este momento durante aproximadamente seis minutos. Puede reanudar cargas de trabajo de escritura una vez finalizada la actualización.

Este proceso genera los siguientes eventos:

  • Mensajes de eventos por clúster:

    • Upgrade in progress: Creating pre-upgrade snapshot [preupgrade-(autogenerated snapshot ID)]

    • Database cluster major version has been upgraded

  • Mensajes de eventos por instancia:

    • Applying off-line patches to DB instance

    • DB instance shutdown

    • Finished applying off-line patches to DB instance

    • DB instance restarted

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 neptune \ --engine-version 1.1.1.0 \ --allow-major-version-upgrade \ --apply-immediately

Para Windows:

aws neptune modify-db-cluster ^ --db-cluster-identifier (your-neptune-cluster) ^ --engine neptune ^ --engine-version 1.1.1.0 ^ --allow-major-version-upgrade ^ --apply-immediately

En lugar de --apply-immediately, puede especificar --no-apply-immediately. Para realizar una actualización de versión principal, es necesario el parámetro allow-major-version-upgrade. Además, asegúrese de incluir la versión del motor, ya que es posible que el motor se actualice a otra versión.

Si el clúster utiliza un grupo de parámetros del clúster personalizado, asegúrese de incluir este parámetro para especificarlo:

--db-cluster-parameter-group-name (name of the custom DB cluster parameter group)

Del mismo modo, si alguna instancia del clúster utiliza un grupo de parámetros de base de datos personalizado, asegúrese de incluir este parámetro para especificarlo:

--db-instance-parameter-group-name (name of the custom instance parameter group)

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 una 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.