Mecanismo do Amazon Neptune versão 1.4.0.0 (6/11/2024) - Amazon Neptune

Mecanismo do Amazon Neptune versão 1.4.0.0 (6/11/2024)

Desde 6/11/2024, a versão 1.4.0.0 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 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 para obter mais informações.

Atenção

O cache do plano de consulta está temporariamente sem suporte para o caso de uso de execução de consultas parametrizadas envolvendo valores de parâmetros numéricos, devido a um bug no tratamento de usos duplicados de um parâmetro de tipo numérico na consulta. Por exemplo:

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

Consultas que fazem muitas pesquisas de índice em declarações ou índices de dicionários podem ter uma regressão de desempenho de 5%. Por exemplo, não afetaria a ação de obter uma contagem de todos os vértices ou obter o id de todos os vértices. Obter todas as propriedades de todos os vértices pode resultar em uma regressão de até 5%.

Novos recursos nesta versão do mecanismo

  • Quando uma borda é adicionada a um grafo de propriedades sem um ID explícito, por padrão, o servidor atribui um ID de borda baseado em UUID, que é armazenado no dicionário. Ao definir um novo parâmetro de cluster, neptune_enable_server_generated_edge_id = 1, o servidor atribuirá IDs usando um número inteiro de 8 bytes gerenciado internamente, sem nenhuma sobrecarga de dicionário. Isso resulta em economia de armazenamento e melhor desempenho de consultas sem nenhuma alteração nas consultas. Atualmente, esse recurso é tem suporte somente para inserções por meio da linguagem de consulta Gremlin.

  • Suporte adicionado para execução de etapas Gremlin limit() em percursos aninhados para o mecanismo DFE.

    g.V().project("foo").by(out().order().by(T.id).limit(1))

Melhorias nesta versão do mecanismo

Melhorias gerais
  • O Neptune recuperará automaticamente o armazenamento desfeito mantido por grandes transações quando a transação for concluída e os logs não forem mais necessários para a recuperação.

  • Suporte para réplica sobrevivente de banco de dados global. Esse recurso permite que o cluster secundário ainda atenda às solicitações de leitura durante a reinicialização da instância do gravador no cluster primário. Anteriormente, quando uma instância do gravador era reiniciada, todas as instâncias do leitor em um cluster secundário também eram reiniciadas. Com essa versão, as instâncias de leitor do cluster secundário continuam a atender solicitações de leitura durante a reinicialização da instância de gravador, melhorando a disponibilidade de leitura no cluster.

  • Os logs de auditoria agora são gravados de forma síncrona, o que garante que todas as consultas sejam registradas em log. Isso pode afetar o desempenho de consultas particularmente grandes (> 100 kb) ou workloads com alto throughput (> 1000 qps).

Melhorias no Gremlin
  • Por padrão, o tempo limite por consulta é obrigatório a ser menor do que o tempo limite no nível do cluster. Em uma versão anterior, essa verificação foi introduzida, mas precisava ser habilitada explicitamente por meio do parâmetro de modo de laboratório “StrictTimeoutValidation”. Nesta versão, o “StrictTimeoutValidation” é habilitado por padrão e deverá ser desabilitado explicitamente para manter o comportamento antigo.

Melhorias no openCypher
  • Em uma versão anterior, introduzimos o suporte estendido ao formato de data e hora, habilitado por meio de um parâmetro DatetimeMillisecond do modo de laboratório. O suporte estendido ao formato de data e hora é habilitado por padrão.

Melhorias no SPARQL
  • Novas ações explícitas do IAM para permissões de consulta.

    Previously: COPY: WriteDataViaQuery & ReadDataViaQuery MOVE: WriteDataViaQuery & DeleteDataViaQuery DELETEINSERT: ReadDataViaQuery & DeleteDataViaQuery Now, COPY: WriteDataViaQuery & ReadDataViaQuery & DeleteDataViaQuery MOVE: WriteDataViaQuery & ReadDataViaQuery & DeleteDataViaQuery DELETEINSERT: ReadDataViaQuery, WriteDataViaQuery if there is INSERT clause, DeleteDataViaQuery if there is DELETE clause.

Defeitos corrigidos nesta versão do mecanismo

Correções gerais
  • Correção de um problema com instâncias sem servidor que poderia levar à reinicialização do banco de dados durante o dimensionamento.

  • Correção de um problema relacionado ao gerenciamento de arquivos de log de auditoria que fazia com que arquivos de log ficassem inacessíveis para download ou alternância e, em alguns casos, aumentava o uso da CPU.

  • Correção de um problema de consulta relacionado à otimização que atrasava a geração de saída do mapa no mecanismo DFE.

  • Correção de um problema que causava carimbos de data/hora incompatíveis entre os logs de auditoria e logs de consultas lentos.

Correções do Gremlin
  • Correção de um problema no gerenciamento de conexões do Gremlin WebSocket em que consultas executadas por um tempo que excedia o tempo limite de inatividade da conexão eram encerradas prematuramente. Isso afetou especificamente os clientes do Python Gremlin que usam o transporte AIOHTTP.

Correções do openCypher
  • Correção de um problema na etapa de coleta que causava uma exceção de falha interna quando valores nulos estavam presentes durante a construção da consulta collect(distinct(n)).

  • Correção de um problema em que um NullPointerException poderia ocorrer em consultas quando o cache do plano de consulta era habilitado.

  • Correção de um problema que avaliava mais dados do que o necessário quando uma consulta contém a cláusula LIMIT.

  • Correção de um problema em que o uso de operações de intervalo (<, <=, >, >=) em uma consulta parametrizada com um cache de plano de consulta produzia resultados duplicados.

  • Correção de um problema que transpõe as colunas de resultados quando as operações UNION e UNION ALL são executadas usando conexões Bolt.

Versões de linguagem de consulta compatíveis com esta versão

Antes de atualizar um cluster de banco de dados para a versão 1.4.0.0, 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.4.0.0 do mecanismo

Você pode atualizar para esta versão a partir da versão 1.2.0.0 ou superior.

Atualizar para esta versão

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:

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

Para Windows:

aws neptune modify-db-cluster ^ --db-cluster-identifier (your-neptune-cluster) ^ --engine-version 1.4.0.0 ^ --allow-major-version-upgrade ^ --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

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

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