Versión 1.4.1.0 del motor de Amazon Neptune (21/11/2024)
A partir del 21 de noviembre de 2024, se implementará de forma general la versión 1.4.1.0 del motor. Tenga en cuenta que las versiones nuevas tardan unos días en estar disponibles en todas las regiones.
aviso
La caché de planes de consultas no es compatible temporalmente con el caso de uso de ejecución de consultas parametrizadas que incluyen valores de parámetros numéricos, debido a un error en la gestión de usos duplicados de un parámetro de tipo numérico en la consulta. Por ejemplo:
MATCH (n:movie) WHERE n.runtime>=$minutes RETURN n UNION MATCH (n:show) WHERE n.duration>=$minutes RETURN n parameters={"minutes":130}
Las consultas que realizan muchas búsquedas de índices en instrucciones o índices de diccionario podrían experimentar una regresión del rendimiento del 5 %. Por ejemplo, la obtención del recuento de todos los vértices o la obtención del id de todos los vértices no se verían afectadas. La obtención de todas las propiedades de todos los vértices podría experimentar una regresión de hasta el 5 %.
Nuevas características de esta versión del motor
-
Se ha añadido compatibilidad con la subconsulta
CALLy una subconsulta de solo lectura, lo que permite la ejecución de operaciones dentro de un ámbito definido. Se ejecuta una subconsultaCALLuna vez por cada fila entrante y las variables devueltas en la subconsulta están disponibles para el ámbito externo de la consulta que las engloba. Las variables del ámbito externo se pueden importar a una subconsultaCALLmediante una cláusulaWITHde importación. Para obtener más información, consulte Compatibilidad con subconsultas CALL en Neptune.MATCH (origin:airport {code:"AUS"})-[:route]->(stopover) CALL { WITH stopover MATCH (stopover)-[r:route]->(destination) RETURN destination ORDER BY r.dist DESC LIMIT 2 } RETURN stopover, destination -
Se han añadido funciones de openCypher. Presentamos ocho nuevas funciones para ayudar con las cadenas, las operaciones de recopilación y la clasificación de las recopilaciones. Entre ellas se incluyen:
textIndexOf,collToSet,collSubtract,collIntersection,collSort,collSortMaps,collSortMultiycollSortNodes. Consulte Funciones de openCypher en Neptune para obtener la descripción, los parámetros de entrada, la salida y los ejemplos.
Mejoras en esta versión del motor
Mejoras de Gremlin
-
Nuevo parámetro del modo de laboratorio
AccurateQRCMemoryEstimation. La caché de resultados de consultas de Gremlin, cuando está habilitada, permite almacenar en caché los resultados de las consultas en la base de datos. De forma predeterminada, se utiliza una estimación aproximada para determinar el tamaño del resultado almacenado en caché. Con este parámetro del modo laboratorioAccurateQRCMemoryEstimationhabilitado, la estimación del tamaño de los resultados almacenados en caché utilizará una estimación tamaño precisa en lugar de aproximada. -
Se ha corregido un problema que afectaba a la optimización del filtro “not” en las consultas de Gremlin que se ejecutan en el motor de ejecución predeterminado. Este problema afectaba a las consultas cuando los bordes se filtraban utilizando el paso not() combinado con cualquiera de los pasos outV()/inV()/otherV(). Entre las consultas de ejemplo se incluyen:
-
g.E().hasLabel("knows").not(outV().hasId("5")) -
g.V().has('airport','code','SDF').outE().where(not(otherV().has(id, within('1','5','7')))).count()
-
Mejoras de openCypher
-
Mejora del rendimiento en consultas que utilizan listas o mapas estáticos de gran tamaño. En determinadas consultas con UNWIND sobre una lista grande de mapas anidados que se utilizan para insertar o actualizar un nodo con propiedades, se observa una mejora significativa del rendimiento.
-
Se ha introducido una nueva sugerencia de consulta de openCypher para indicar al motor que asuma tipos de datos consistentes para los valores utilizados en la consulta. Consulte AssumeConsistentDataTypes para obtener más información sobre la nueva sugerencia de consulta de openCypher.
-
Se ha introducido un conjunto de nuevas funciones de openCypher para gestionar valores de texto y recopilaciones.
Defectos corregidos en esta versión del motor
Correcciones de Gremlin
-
Se ha corregido un problema en la ruta del código OSS de TinkerPop que permitía crear una representación en Bytecode de una consulta de recorrido cuando se utilizaba cualquiera de los pasos
withStrategies()/withoutStrategies()/with()en el objeto “g”GraphTraversalSource. El problema añadía incorrectamente nuevas instrucciones a Bytecode en lugar de sustituir las instrucciones existentes para la misma estrategia y provocaba una discrepancia en la clave de caché al invalidar la caché de resultados para borrar los resultados almacenados.
Correcciones de openCypher
-
Se ha corregido el comportamiento de
`~id`matchen las cláusulas CREATE/MERGE/MATCH. Al utilizar un valor`~id`no válido, como null o tipos que no son cadenas, ahora se lanza una excepción correcta para las cláusulas CREATE/MERGE y se devuelve un resultado nulo para una cláusulaMATCH. -
Se ha corregido el error de IFE que se producía cuando el usuario utilizaba un valor de tipo no compatible con funciones de agregación (es decir, sum(<string>)).
-
Se ha corregido un problema por el que algunas consultas de mutación de baja latencia derivadas de una gran carga de trabajo de consultas fallaban con un error OutOfMemory.
Correcciones de SPARQL
-
Se ha corregido un problema en el registro de auditoría que se producía al gestionar las consultas de SPARQL que contienen el carácter
'%'.
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.4.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.7.1Compatible con la última versión de Gremlin:
3.7.1Versión de openCypher:
Neptune-9.0.20190305-1.0Versión de SPARQL:
1.1
Rutas de actualización a la versión 1.4.1.0 del motor
Puede actualizar a esta versión desde la versión 1.2.0.0 o superior del motor.
Actualización a esta versión
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.4.1.0 \ --allow-major-version-upgrade \ --apply-immediately
Para Windows:
aws neptune modify-db-cluster ^ --db-cluster-identifier(your-neptune-cluster)^ --engine-version 1.4.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 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