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.0.0 del motor de Amazon Neptune (21/07/2022)
A partir del 21 de julio de 2022, se implementará de forma general la versión 1.2.0.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ámetrosneptune1
, 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 compatibilidad con bases de datos globales. Una base de datos global de Neptune abarca varias Regiones de AWS y tiene un clúster de base de datos principal en una región y hasta cinco clústeres de base de datos secundarios en otras regiones.
Se ha añadido soporte para un control de acceso más detallado en las políticas de IAM de Neptune que el que estaba disponible anteriormente, en función de las acciones del plano de datos. Se trata de un cambio radical, ya que las políticas de IAM existentes que se basan en la acción obsoleta
connect
deben ajustarse para utilizar las acciones más detalladas del plano de datos. Consulte Tipos de políticas IAM.Se ha mejorado la disponibilidad de las instancias de lector. Anteriormente, cuando se reiniciaba una instancia de escritor, también se reiniciaban automáticamente todas las instancias de lector de un clúster de Neptune. A partir de la versión 1.2.0.0 del motor, las instancias de lector permanecen activas tras reiniciar el escritor, lo que mejora la disponibilidad del lector. Las instancias de lector se pueden reiniciar por separado para detectar los cambios en los grupos de parámetros. Consulte Reinicio de una instancia de base de datos en Amazon Neptune.
Se ha añadido un nuevo parámetro de clúster de base de datos neptune_streams_expiry_days que le permite establecer el número de días que los registros de las transmisiones permanecen en el servidor antes de eliminarlos. El rango va de 1 a 90 y el valor predeterminado es 7.
Mejoras en esta versión del motor
Se ha mejorado el rendimiento de serialización de Gremlin para las consultas de ByteCode.
Neptune ahora procesa los predicados de texto mediante el motor DFE para mejorar el rendimiento.
Neptune ahora procesa los pasos
limit()
de Gremlin con el motor DFE, incluidos los límites de recorrido no terminales y secundarios.Se ha modificado la gestión del paso
union()
de Gremlin en el DFE para que funcione con otras nuevas características, lo que significa que los nodos de referencia se muestran en los perfiles de consulta según lo previsto.Gracias a la paralelización de algunas operaciones de unión costosas dentro del DFE, se ha mejorado el rendimiento hasta un factor de cinco.
Se ha añadido soporte de modulación
by()
paraOrderGlobalStep order(global)
para el motor DFE de Gremlin.Se ha añadido la visualización de los valores estáticos inyectados en los detalles de explicación del DFE.
Se ha mejorado el rendimiento al recortar patrones duplicados.
Se ha añadido la compatibilidad con la conservación del orden en el motor DFE de Gremlin.
-
Se ha mejorado el rendimiento de las consultas de Gremlin que tienen filtros vacíos, como los siguientes:
g.V().hasId(P.within([]))
g.V().hasId([])
Se han mejorado los mensajes de error cuando una consulta de SPARQL utiliza un valor numérico demasiado grande para que Neptune lo represente internamente.
Se ha mejorado el rendimiento al colocar los vértices con los bordes asociados al reducir las búsquedas en los índices cuando las transmisiones están deshabilitadas.
-
Se ha ampliado la compatibilidad con el DFE a más variantes del paso
has()
, en particular ahasKey()
yhasLabel()
, y a predicados de rango para cadenas/URI dentro dehas()
. Esto afecta a consultas como las siguientes:// hasKey() on properties g.V().properties().hasKey("name") g.V().properties().has(T.key, TextP.startingWith("a")) g.E().properties().hasKey("weight") g.E().properties().hasKey(TextP.containing("t")) // hasLabel() on vertex properties g.V().properties().hasLabel("name") // range predicates on ID and Label fields g.V().has(T.label, gt("person")) g.E().has(T.id, lte("
(an ID value)
")) Se ha añadido una función join() de openCypher específica de Neptune que concatena las cadenas de una lista en una sola cadena.
Se han actualizado las políticas administradas de Neptune para incluir permisos de acceso a los datos y permisos para las nuevas API de bases de datos globales.
Defectos corregidos en esta versión del motor
Se ha corregido un error que provocaba que una solicitud HTTP sin un tipo de contenido especificado fallara automáticamente.
Se ha corregido un error de SPARQL en el optimizador de consultas que impedía el uso de una llamada de servicio dentro de una consulta.
Se ha corregido un error de SPARQL en el analizador RDF de Turtle que provocaba un error debido a una combinación concreta de datos Unicode.
Se ha corregido un error de SPARQL por el que una determinada combinación de cláusulas
GRAPH
ySELECT
generaba resultados de consulta incorrectos.-
Se ha corregido un error de Gremlin que provocaba un problema de corrección en las consultas que utilizaban cualquier paso de filtro dentro de un paso de unión, como el siguiente:
g.V("1").union(hasLabel("person"), out())
Se ha corregido un error de Gremlin que provocaba que
count()
deboth().simplePath()
duplicara el número real de resultados devueltos sincount()
.Se ha corregido un error de openCypher que provocaba que el servidor generara una excepción de discordancia de firmas defectuosa para las solicitudes de Bolt a clústeres con la autenticación de IAM habilitada.
Se ha corregido un error de openCypher por el que una consulta que utilizaba keep-alive de HTTP podía cerrarse incorrectamente si se enviaba después de una solicitud errónea.
Se ha corregido un error de openCypher que podía provocar un error interno cuando se enviaba una consulta que devolvía un valor constante.
-
Se ha corregido un error en los detalles de explicación para que
Time(ms)
de la subconsulta del DFE ahora sume correctamente los tiempos de CPU de los operadores de la subconsulta del DFE. Tenga en cuenta el siguiente fragmento del resultado de explicación como ejemplo:subQuery1 ╔════╤════════╤════════╤═══════════════════════╤═══════════════════════════════════╤══════╤══════════╤═══════════╤═══════╤═══════════╗ ║ ID │ Out #1 │ Out #2 │ Name │ Arguments │ Mode │ Units In │ Units Out │ Ratio │ Time (ms) ║ ╠════╪════════╪════════╪═══════════════════════╪═══════════════════════════════════╪══════╪══════════╪═══════════╪═══════╪═══════════╣ ... ╟────┼────────┼────────┼───────────────────────┼───────────────────────────────────┼──────┼──────────┼───────────┼───────┼───────────╢ ║ 1 │ 2 │ - │ DFEChunkLocalSubQuery │ subQuery=...graph#336e.../graph_1 │ - │ 1 │ 1 │ 1.00 │ 0.38 ║ ║ │ │ │ │ coordinationTime(ms)=0.026 │ │ │ │ │ ║ ╟────┼────────┼────────┼───────────────────────┼───────────────────────────────────┼──────┼──────────┼───────────┼───────┼───────────╢ ... subQuery=...graph#336e.../graph_1 ╔════╤════════╤════════╤═══════════════════════╤═══════════════════════════════════╤══════╤══════════╤═══════════╤═══════╤═══════════╗ ║ ID │ Out #1 │ Out #2 │ Name │ Arguments │ Mode │ Units In │ Units Out │ Ratio │ Time (ms) ║ ╠════╪════════╪════════╪═══════════════════════╪═══════════════════════════════════╪══════╪══════════╪═══════════╪═══════╪═══════════╣ ║ 0 │ 1 │ - │ DFESolutionInjection │ solutions=[?100 -> [-10^^<LONG>]] │ - │ 0 │ 1 │ 0.00 │ 0.04 ║ ║ │ │ │ │ outSchema=[?100] │ │ │ │ │ ║ ╟────┼────────┼────────┼───────────────────────┼───────────────────────────────────┼──────┼──────────┼───────────┼───────┼───────────╢ ║ 1 │ 3 │ - │ DFERelationalJoin │ joinVars=[] │ - │ 2 │ 1 │ 0.50 │ 0.29 ║ ╟────┼────────┼────────┼───────────────────────┼───────────────────────────────────┼──────┼──────────┼───────────┼───────┼───────────╢ ║ 2 │ 1 │ - │ DFESolutionInjection │ outSchema=[] │ - │ 0 │ 1 │ 0.00 │ 0.01 ║ ╟────┼────────┼────────┼───────────────────────┼───────────────────────────────────┼──────┼──────────┼───────────┼───────┼───────────╢ ║ 3 │ - │ - │ DFEDrain │ - │ - │ 1 │ 0 │ 0.00 │ 0.02 ║ ╚════╧════════╧════════╧═══════════════════════╧═══════════════════════════════════╧══════╧══════════╧═══════════╧═══════╧═══════════╝
Los tiempos de subconsulta de la última columna de la tabla inferior suman 0,36 ms (
.04 + .29 + .01 + .02 = .36
). Al añadir el tiempo de coordinación de esa subconsulta (.36 + .026 = .386
), se obtiene un resultado cercano al tiempo de la subconsulta registrado en la última columna de la tabla superior, es decir,0.38
ms.
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.0.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.2.0.0 del motor
Dado que se trata de una versión principal del motor, no hay ninguna actualización automática.
Solo se puede actualizar de forma manual a una versión 1.2.0.0
, a partir del último parche de la versión 1.1.1.0 del motor. Las versiones anteriores del motor deben actualizarse primero a la versión más reciente de 1.1.1.0
antes de poder actualizarse a 1.2.0.0
.
Por lo tanto, antes de intentar actualizar a esta versión, confirme que está utilizando la última versión de parche de la versión 1.1.1.0
. Si no es así, empiece por actualizar a la última versión de parche de 1.1.1.0
.
Antes de realizar la actualización, también debe volver a crear cualquier grupo de parámetros de clúster de base de datos personalizado que haya utilizado con la versión anterior, mediante el uso de la familia de grupos de parámetros neptune1.2
. Para obtener más información, consulte Grupos de parámetros de Amazon Neptune.
Si va a actualizar primero a la versión 1.1.1.0
y, después, inmediatamente a la versión 1.2.0.0
, puede que aparezca 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 (consulte Mantenimiento del clúster de base de datos de Amazon Neptune).
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.2.0.0 \ --allow-major-version-upgrade \ --apply-immediately
Para Windows:
aws neptune modify-db-cluster ^ --db-cluster-identifier
(your-neptune-cluster)
^ --engine-version 1.2.0.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