

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Mecanismo do Amazon Neptune versão 1.3.2.1 (20/6/2024)
<a name="engine-releases-1.3.2.1"></a>

Desde 20/6/2024, a versão 1.3.2.1 do mecanismo está sendo implantada de forma geral. Observe que leva vários dias para que uma nova versão fique disponível em todas as regiões.

**nota**  
A [versão 1.3.0.0 do mecanismo](engine-releases-1.3.0.0.md) introduziu um novo formato para grupos de parâmetros personalizados e grupos de parâmetros de cluster personalizados. Como resultado, se você estiver atualizando de uma versão de mecanismo anterior à 1.3.0.0 para a versão 1.3.0.0 ou posterior, deverá recriar todos os grupos de parâmetros personalizados e grupos de parâmetros de cluster personalizados existentes usando a família de grupos de parâmetros `neptune1.3`. As versões anteriores usavam a família de grupos de parâmetros `neptune1` ou `neptune1.2`, e esses grupos de parâmetros não funcionarão com a versão 1.3.0.0 e posterior. Da mesma forma, você deve usar grupos de parâmetros de cluster 1.4.0.0 para as versões 1.4.0.0 e superiores do mecanismo. Consulte [Grupos de parâmetros do Amazon Neptune](parameter-groups.md) para obter mais informações.

**Atenção**  
 A versão 1.3.2.1 do mecanismo introduziu alguns problemas em potencial que você deve conhecer. Consulte a seção [Atenuação de problemas na versão 1.3.2.1](#1.3.2.1-mitigation) abaixo para obter mais informações. 

## Defeitos corrigidos nesta versão do mecanismo
<a name="engine-releases-1.3.2.1-new"></a>

**Correções do openCypher**
+  Um erro foi detectado no recurso de cache do plano de consulta para consultas parametrizadas que contêm uma cláusula `WITH` interna com `SKIP` e `LIMIT` como parâmetros. Os valores SKIP/LIMIT não foram parametrizados adequadamente e, como resultado, as execuções subsequentes do mesmo plano de consulta em cache com valores de parâmetros diferentes ainda retornariam os mesmos resultados da primeira execução. Isso foi corrigido. 

  ```
  # insert some nodes
  UNWIND range(1, 10) as i CREATE (s {name: i}) RETURN s
  
  # sample query
  MATCH (p) 
  WITH p ORDER BY p.name SKIP $s LIMIT $l 
  RETURN p.name as res
  
  # first time executing with {"s": 2, "l": 1}
  {
    "results" : [ {
      "res" : 3
    } ]
  }
  
  # second time executing with {"s": 2, "l": 10}
  # due to bug, produces
  {
    "results" : [ {
      "res" : 3
    } ]
  }
  # with fix, produces correct results: 
  {
    "results" : [ {
      "res" : 3
    }, {
      "res" : 4
    }, {
      "res" : 5
    }, {
      "res" : 6
    }, {
      "res" : 7
    }, {
      "res" : 8
    }, {
      "res" : 9
    }, {
      "res" : 10
    } ]
  }%
  ```
+  Correção de um erro em que consultas de mutação parametrizadas lançavam um `InternalFailureException` quando o parâmetro passado ainda não estava presente no banco de dados. 
+  Correção de um erro em que as consultas parametrizadas do Bolt ficavam travadas após atingirem uma condição de corrida durante a limpeza dos recursos da consulta. 

## Alterações na versão 1.3.2.1 transferidas da versão 1.3.2.0
<a name="engine-releases-1.3.2.1-carried-over-1320"></a>

### Melhorias transferidas da versão 1.3.2.0 do mecanismo
<a name="engine-releases-1.3.2.1-improvements"></a>

**Melhorias gerais**
+ Suporte adicionado para TLS versão 1.3 incluindo conjuntos de cifras TLS\_AES\_128\_GCM\_SHA256 e TLS\_AES\_256\_GCM\_SHA384. O TLS 1.3 é uma opção, mas o TLS 1.2 ainda é o mínimo.
+  O suporte estendido do openCypher para o formato datetime está em lab\_mode nesta versão. Recomendamos testá-lo. 

**Melhorias no Gremlin**
+ Atualização 3.7x do TinkerPop
  + Fornece uma grande expansão da linguagem Gremlin.
    + Novas etapas para processar cadeias de caracteres, listas e datas.
    + Nova sintaxe para especificar a cardinalidade dentro da etapa `mergeV()`.
    + `union()` agora pode ser usado como uma etapa inicial.
    + Para saber mais sobre as mudanças na 3.7.x, consulte a [documentação de atualização do TinkerPop](https://tinkerpop.apache.org/docs/3.7.1/upgrade/#_tinkerpop_3_7_1).
  +  Ao atualizar os drivers da linguagem Gremlin do cliente para Java, observe que as classes do serializador passaram por [renomeações](https://tinkerpop.apache.org/docs/3.7.1/upgrade/#_serializer_renaming). Você precisará atualizar a nomenclatura do pacote e da classe em seus arquivos de configuração e no código, se especificado. 
+  `StrictTimeoutValidation` (somente quando habilitado pelo modo de laboratório `StrictTimeoutValidation` incluindo`StrictTimeoutValidation=enabled`): quando o parâmetro `StrictTimeoutValidation` tem um valor de `enabled`, um valor de tempo limite por consulta especificado como uma opção de solicitação ou uma dica de consulta não pode exceder o valor definido globalmente no grupo de parâmetros. Nesse caso, o Neptune lançará um `InvalidParameterException`. Essa configuração pode ser confirmada em uma resposta no endpoint `/status` quando o valor é `disabled`. Nas versões 1.3.2.0 e 1.3.2.1 do Neptune, o valor padrão desse parâmetro é `Disabled`.

**Melhorias no openCypher**
+  A versão 1.3.2.0 do mecanismo Amazon Neptune oferece um throughput até 9x mais rápido e 10x maior para desempenho de consultas do openCypher em relação às versões anteriores do mecanismo. 
+  Consultas de baixa latência e melhoria no desempenho do throughput: melhorias gerais no desempenho para consultas de baixa latência do openCypher. A nova versão também melhora o throughput dessas consultas. As melhorias são mais significativas quando consultas parametrizadas são usadas. 
+  Suporte para o cache do plano de consultas: quando uma consulta é enviada ao Neptune, a string de consulta é analisada, otimizada e transformada em um plano de consulta, executado pelo mecanismo. As aplicações muitas vezes são apoiadas por padrões de consulta comuns que são instanciados com diferentes valores. O cache do plano de consultas pode reduzir a latência geral ao armazenar em cache os planos de consulta e, assim, evitar a análise e a otimização desses padrões repetidos. Consulte [Cache do plano de consulta no Amazon Neptune](access-graph-qpc.md) para obter mais detalhes. 
+  Melhoria de desempenho para consultas de agregação DISTINCT. 
+  Melhoria de desempenho para junções envolvendo variáveis anuláveis. 
+  Melhoria de desempenho para consultas envolvendo valores diferentes do predicado id(node/relationship). 
+  Suporte estendido para a funcionalidade de data e hora (habilitado somente no modo de laboratório `DatetimeMillisecond` incluindo `DatetimeMillisecond=enabled`). Para obter mais informações, consulte [Compatibilidade temporal na implementação do Neptune openCypher (Neptune Analytics e banco de dados do Neptune 1.3.2.0 e superior)](feature-opencypher-compliance.md#opencypher-compliance-time-na). 

### Correções de defeitos transferidas da versão 1.3.2.0 do mecanismo
<a name="engine-releases-1.3.2.1-defects"></a>

**Melhorias gerais**
+ Atualização da mensagem de erro do NeptuneML ao validar o acesso aos buckets do Graphlytics.

**Correções do Gremlin**
+ Correções das informações de rótulos ausentes na tradução de consultas do DFE, para cenários em que etapas que não contribuem com caminhos contêm rótulos. Por exemplo:

  ```
  g.withSideEffect('Neptune#useDFE', true).
    V().
    has('name', 'marko').
    has("name", TextP.regex("mark.*")).as("p1").
    not(out().has("name", P.within("peter"))).
    out().as('p2').
    dedup('p1', 'p2')
  ```
+ Correção de um erro `NullPointerException` na tradução da consulta do DFE, que ocorre quando uma consulta é executada em dois fragmentos do DFE e o primeiro fragmento é otimizado para um nó insatisfatório. Por exemplo:

  ```
  g.withSideEffect('Neptune#useDFE', true).
    V().
    has('name', 'doesNotExists').
    has("name", TextP.regex("mark.*")).
    inject(1).
    V().
    out().
    has('name', 'vadas')
  ```
+ Correção de um erro em que Neptune podia lançar `InternalFailureException` um quando uma consulta continha ValueTraversal dentro do modulador by() e sua entrada era Map. Por exemplo:

  ```
  g.V().
    hasLabel("person").
    project("age", "name").by("age").by("name").
    order().by("age")
  ```

**Correções do openCypher**
+ Operações UNWIND aprimoradas (por exemplo, expandir uma lista de valores em valores individuais) para evitar situações de falta de memória (OOM). Por exemplo:

  ```
  MATCH (n)-->(m)
  WITH collect(m) AS list
  UNWIND list AS m
  RETURN m, list
  ```
+ Otimização de id personalizada corrigida no caso de várias operações MERGE em que o id é injetado via UNWIND. Por exemplo:

  ```
  UNWIND [{nid: 'nid1', mid: 'mid1'}, {nid: 'nid2', mid: 'mid2'}] as ids
  MERGE (n:N {`~id`: ids.nid})
  MERGE (m:M {`~id`: ids.mid})
  ```
+ Correção de explosão de memória ao planejar consultas complexas com acesso à propriedade e vários saltos com relacionamentos bidirecionais. Por exemplo:

  ```
  MATCH (person1:person)-[:likes]->(res)-[:partOf]->(group)-[:knows]-(:entity {name: 'foo'}), 
         (person1)-[:knows]->(person2)-[:likes]-(res2), (comment)-[:presentIn]->(:Group {name: 'barGroup'}), 
         (person1)-[:commented]->(comment2:comment)-[:partOf]->(post:Post), (comment2)-[:presentIn]->(:Group {name: 'fooGroup'}), 
         (comment)-[:contains]->(info:Details)-[:CommentType]->(:CommentType {name: 'Positive'}),
         (comment2)-[:contains]->(info2:Details)-[:CommentType]->(:CommentType {name: 'Positive'}) 
  WHERE datetime('2020-01-01T00:00') <= person1.addedAfter <= datetime('2023-01-01T23:59') AND comment.approvedBy = comment2.approvedBy 
  MATCH (comment)-[:contains]->(info3:Details)-[:CommentType]->(:CommentType {name: 'Neutral'})
  RETURN person1, group.name, info1.value,  post.ranking, info3.value
  ```
+ Correção de consultas de agregação fixa com null como grupo por variáveis. Por exemplo:

  ```
  MATCH (n)
  RETURN null AS group, sum(n.num) AS result
  ```

**Correções do SPARQL**
+ Correção do analisador SPARQL para melhorar o tempo de análise de consultas grandes, como INSERT DATA, contendo muitos triplos e tokens grandes.

### Atenuação de problemas na versão 1.3.2.1
<a name="1.3.2.1-mitigation"></a>
+  Consultas usando valores de filtro numérico podem retornar resultados incorretos ao usar o cache do plano de consulta. Para evitar o problema, use a dica de consulta `QUERY:PLANCACHE "disabled"` para ignorar o cache do plano de consulta. Por exemplo, use: 

  ```
  USING QUERY:PLANCACHE "disabled"
  MATCH (n:person)
  WHERE n.yearOfBirth > $year
  RETURN n
  
  parameters={"year":1950}
  ```
+  Consultas que usam o mesmo nome de parâmetro várias vezes podem falhar com o erro `Parameter name should not be a number and/or contain _internal_ or _modified_user_ string within it. These are reserved for planCache. Otherwise, rerun with HTTP parameter planCache=disabled`. Ignore o cache do plano de consulta, como acima, nesses casos, ou duplique os parâmetros, como neste exemplo: 

  ```
  MATCH (n:movie) WHERE n.runtime>=$minutes RETURN n 
  UNION 
  MATCH (n:show) WHERE n.duration>=$minutes RETURN n
  
  parameters={"minutes":130}
  ```

   Use a dica `QUERY:PLANCACHE "disabled"` ou modifique os parâmetros: 

  ```
  MATCH (n:movie) WHERE n.runtime>=$rt_min RETURN n 
  UNION 
  MATCH (n:show) WHERE n.duration>=$dur_min RETURN n
  
  parameters={"rt_min":130, "dur_min":130}
  ```
+  Consultas executadas com o protocolo Bolt podem produzir resultados incorretos se a consulta for UNION ou UNION ALL. Para evitar o problema, considere executar a consulta específica com o endpoint HTTP. Como alternativa, execute cada parte da união separadamente ao usar o protocolo Bolt. 

### Versões de linguagem de consulta compatíveis com esta versão
<a name="engine-releases-1.3.2.1-query-versions"></a>

Antes de atualizar um cluster de banco de dados para a versão 1.3.2.1, assegure-se de que o projeto seja compatível com estas versões da linguagem de consulta:
+ *Versão compatível mais antiga do Gremlin:* `3.7.1`
+ *Versão compatível mais recente do Gremlin:* `3.7.1`
+ *openCypher versão:* `Neptune-9.0.20190305-1.0`
+ *SPARQL versão:* `1.1`

## Caminhos de atualização para a versão 1.3.2.1 do mecanismo
<a name="engine-releases-1.3.2.1-upgrade-paths"></a>

Você pode atualizar para esta versão a partir da [versão 1.2.0.0](engine-releases-1.2.0.0.md) ou superior.

## Atualizar para esta versão
<a name="engine-releases-1.3.2.1-upgrading"></a>

Se um cluster de banco de dados estiver executando uma versão do mecanismo a partir da qual haja um caminho de atualização para esta versão, ele estará elegível para ser atualizado agora. Você pode atualizar qualquer cluster elegível usando as operações do cluster de banco de dados no console ou usando o SDK. O seguinte comando da CLI atualizará imediatamente um cluster elegível:

Para Linux, OS X ou Unix:

```
1. aws neptune modify-db-cluster \
2.     --db-cluster-identifier {{(your-neptune-cluster)}} \
3.     --engine-version 1.3.2.1 \
4.     --allow-major-version-upgrade \
5.     --apply-immediately
```

Para Windows:

```
1. aws neptune modify-db-cluster ^
2.     --db-cluster-identifier {{(your-neptune-cluster)}} ^
3.     --engine-version 1.3.2.1 ^
4.     --allow-major-version-upgrade ^
5.     --apply-immediately
```

Em vez de `--apply-immediately`, é possível especificar `--no-apply-immediately`. Para realizar uma atualização de versão principal, é necessário usar o parâmetro allow-major-version-upgrade. Além disso, não se esqueça de incluir a versão do mecanismo ou ele poderá ser atualizado para outra versão.

Se o cluster usar um grupo de parâmetros de cluster personalizado, não se esqueça de incluir este parâmetro para especificá-lo:

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

Da mesma forma, se alguma instância no cluster usar um grupo de parâmetros de banco de dados personalizado, não se esqueça de incluir este parâmetro para especificá-lo:

```
    --db-instance-parameter-group-name {{(name of the custom instance parameter group)}}
```

### Sempre teste antes de fazer a atualização
<a name="engine-1.3.2.1-test-before-upgrading"></a>

Quando uma nova versão principal ou secundária do mecanismo do Neptune for lançada, sempre teste as aplicações do Neptune antes de atualizá-la. Mesmo uma atualização secundária pode introduzir novos atributos ou comportamentos que afetem o código.

Comece comparando as páginas de notas da versão atual com as da versão de destino para ver se haverá alterações nas versões da linguagem de consulta ou outras alterações importantes.

A melhor maneira de testar uma nova versão antes de atualizar o cluster de banco de dados de produção é clonar o cluster de produção para que o clone execute a nova versão do mecanismo. Depois, você pode executar consultas no clone sem afetar o cluster de banco de dados de produção.

### Sempre crie um snapshot manual antes de fazer a atualização
<a name="engine-1.3.2.1-snapshot-before-upgrading"></a>

Antes de fazer uma atualização, é altamente recomendável sempre criar um snapshot manual do cluster de banco de dados. Ter um snapshot automático só oferece proteção de curto prazo, enquanto um snapshot manual permanece disponível até que você o exclua explicitamente.

Em determinados casos, o Neptune cria um snapshot manual para você como parte do processo de atualização, mas não confie nisso e, em qualquer caso, crie o próprio snapshot manual.

Quando você tiver certeza de que não precisará reverter o cluster de banco de dados para o estado de pré-atualização, poderá excluir explicitamente o snapshot manual criado, bem como o snapshot manual que o Neptune tenha criado. Se o Neptune criar um snapshot manual, ele terá um nome que começa com `preupgrade`, seguido pelo nome do cluster de banco de dados, a versão do mecanismo de origem, a versão do mecanismo de destino e a data.

**nota**  
Se você estiver tentando atualizar com [uma ação pendente em andamento](manage-console-maintaining), poderá encontrar um erro como o seguinte:  

```
   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.
```
Se você encontrar esse erro, aguarde a conclusão da ação pendente ou acione imediatamente uma janela de manutenção para permitir que a atualização anterior seja concluída.

Para obter mais informações sobre como atualizar a versão do mecanismo, consulte [Manter o cluster de banco de dados do Amazon Neptune](cluster-maintenance.md). Em caso de dúvidas ou preocupações, o AWS Support está disponível nos fóruns da comunidade e por meio do [AWS Premium Support](https://aws.amazon.com/support).