Version 1.0.2.0 du moteur Amazon Neptune (08/03/2023) - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Version 1.0.2.0 du moteur Amazon Neptune (08/03/2023)

Depuis le 8 mars 2023, la version 1.2.1.0 du moteur est déployée globalement. Notez que plusieurs jours sont nécessaires pour qu'une nouvelle version soit disponible dans chaque région.

Note

En cas de mise à niveau à partir d'une version de moteur antérieure à 1.2.0.0 :

  • La version 1.2.0.0 du moteur implique un nouveau format pour les groupes de paramètres personnalisés et les groupes de paramètres de cluster personnalisés. Par conséquent, si vous effectuez une mise à niveau d'une version de moteur antérieure vers la version 1.2.0.0 ou une version supérieure, vous devrez recréer tous vos groupes de paramètres personnalisés et groupes de paramètres de cluster personnalisés existants à l'aide de la famille de groupes de paramètres neptune1.2. Les versions antérieures utilisaient une famille de groupes de paramètres neptune1, lesquels ne sont pas compatibles avec les versions 1.2.0.0 et supérieures. Pour plus d'informatons, consultez Groupes de paramètres Amazon Neptune.

  • La version 1.2.0.0 du moteur comprend également un nouveau format pour les journaux d'annulation. Par conséquent, tous les journaux d'annulation créés par une version antérieure du moteur doivent être purgés, et la métrique CloudWatch UndoLogsListSize doit tomber à zéro avant que toute mise à niveau depuis une version antérieure vers la version 1.2.0.0 puisse commencer. S'il existe trop d'enregistrements de journaux d'annulation (200 000 entrées ou plus) lorsque vous essayez de démarrer une mise à jour, la tentative de mise à niveau peut expirer en attendant que la purge des journaux d'annulation soit terminée.

    Vous pouvez accélérer le taux de purge en mettant à niveau l'instance d'enregistreur du cluster, où la purge a lieu. Suivre cette étape avant d'essayer de procéder à la mise à niveau contribue à réduire le nombre de journaux d'annulation avant de commencer. L'augmentation de la taille de l'enregistreur dans un type d'instance 24XL peut accroître le taux de purge, permettant ainsi de traiter plus d'un million d'enregistrements par heure.

    Si la métrique CloudWatch UndoLogsListSize est trop élevée, vous pouvez soumettre une demande d'assistance pour explorer d'autres stratégies afin de la réduire.

  • Enfin, une modification majeure a été apportée à la version 1.2.0.0. Celle-ci concerne le code antérieur qui utilisait le protocole Bolt avec l'authentification IAM. À partir de la version 1.2.0.0, Bolt a besoin d'un chemin de ressources pour la signature IAM. En Java, la définition du chemin de ressources peut ressembler à ceci : request.setResourcePath("/openCypher"));. Dans d'autres langages, /openCypher peut être ajouté à l'URI du point de terminaison. Pour obtenir des exemples, consultez Utilisation du protocole Bolt.

Versions de correctifs ultérieures pour cette version

Nouvelles fonctionnalités pour cette version du moteur

  • Ajout de la prise en charge de TinkerPop 3.6.2, qui comprend de nombreuses nouvelles fonctionnalités Gremlin, telles que les nouvelles étapes mergeV(), mergeE(), element() et fail(). Les étapes mergeV() et mergeE() sont particulièrement intéressantes, car elles offrent une option déclarative tant attendue pour effectuer des opérations de type upsert. Cela devrait grandement simplifier les modèles de code existants et faciliter la lecture de Gremlin. La version 3.6.x a également ajouté des prédicats regex (expression régulière), une nouvelle surcharge à l'étape property() qui utilise un mappage (Map), ainsi qu'une révision majeure du comportement de modulation by() qui est beaucoup plus cohérente dans toutes les étapes qui l'utilisent.

    Consultez le journal des modifications et la page de mise à niveau de TinkerPop pour en savoir plus sur les modifications apportées à la version 3.6 et sur les points à prendre en compte lors de la mise à niveau.

    Si vous utilisez fold().coalesce(unfold(), <mutate>) pour les insertions conditionnelles, nous vous recommandons de migrer vers la nouvelle syntaxe mergeV/E(), décrite ici et ici. Neptune utilise un schéma de verrouillage plus étroit pour Merge que pour Coalesce, ce qui permet de réduire les exceptions de modification simultanée (CME).

    Pour plus d'informations sur les nouvelles fonctionnalités disponibles dans cette version de TinkerPop, consultez le billet de blog de Stephen Mallette : Exploring new features of Apache TinkerPop 3.6.x in Amazon Neptune.

  • Ajout de la prise en charge des types d'instances R6i, alimentés par des processeurs Intel Xeon Scalable de 3e génération. Ils sont parfaitement adaptés aux charges de travail gourmandes en mémoire et offrent des performances de calcul/prix jusqu'à 15 % supérieures et une bande passante mémoire par vCPU jusqu'à 20 % supérieure à celle des types d'instances R5 comparables.

  • Ajout de points de terminaison d'API de résumé de graphe pour les graphes de propriétés et les graphes RDF, afin de vous permettre de générer un rapport récapitulatif rapide du graphe.

    Pour les graphes de propriétés (PG), l'API de résumé de graphe fournit une liste en lecture seule des étiquettes et des clés de propriété des nœuds et des arêtes, ainsi que le nombre de nœuds, d'arêtes et de propriétés. Pour les graphes RDF, elle fournit une liste de classes et de clés de prédicat, ainsi que le nombre de quadruplets, de sujets et de prédicats.

    Les modifications suivantes ont été apportées avec la nouvelle API de résumé de graphe :

    • Ajout d'une nouvelle action de plan de données GetGraphSummary.

    • Ajout d'un nouveau point de terminaison rdf/statistics pour remplacer le point de terminaison sparql/statistics, qui est désormais obsolète.

    • Remplacement du nom du champ summary dans la réponse d'état des statistiques par signatureInfo, afin de ne pas le confondre avec les informations du résumé de graphe. Les versions précédentes du moteur continueront d'utiliser summary dans la réponse JSON.

    • La précision du champ date dans la réponse d'état des statistiques a été modifiée, passant de la minute à la milliseconde. Le format précédent était 2020-05-07T23:13Z (précision à la minute), tandis que le nouveau format est 2023-01-24T00:47:43.319Z (précision à la milliseconde). Ces deux formats sont conformes à la norme ISO 8601, mais cette modification peut corrompre le code existant, en fonction de la façon dont la date est analysée.

    • Une nouvelle magie linéaire %statistics, qui vous permet de récupérer les statistiques du moteur DFE, a été ajoutée dans le workbench.

    • Une nouvelle magie linéaire %summary, qui vous permet de récupérer les informations du résumé de graphe, a été ajoutée dans le workbench.

  • Ajout de la journalisation des requêtes lentes pour enregistrer les requêtes dont l'exécution prend plus de temps qu'un seuil spécifié. Vous devez activer et contrôler la journalisation des requêtes lentes à l'aide des deux nouveaux paramètres dynamiques, à savoir neptune_enable_slow_query_log et neptune_slow_query_log_threshold.

  • Ajout de la prise en charge de deux paramètres dynamiques, à savoir les nouveaux paramètres de cluster neptune_enable_slow_query_log et neptune_slow_query_log_threshold. Lorsque vous modifiez un paramètre dynamique, il s'applique immédiatement, sans nécessiter de redémarrage de l'instance.

  • Ajout d'une fonction openCypher removeKeyFromMap() spécifique à Neptune, qui supprime une clé spécifiée d'un mappage et renvoie le nouveau mappage généré.

Améliorations de cette version du moteur

  • Prise en charge étendue de Gremlin DFE pour les étapes limit avec une portée locale.

  • Ajout de la prise en charge de la modulation by() pour l'étape Gremlin DedupGlobalStep dans le moteur DFE.

  • Ajout de la prise en charge DFE des étapes Gremlin SelectStep et SelectOneStep.

  • Amélioration des performances et corrections de divers opérateurs Gremlin, notamment repeat, coalesce, store et aggregate.

  • Amélioration des performances des requêtes openCypher impliquant MERGE et OPTIONAL MATCH.

  • Amélioration des performances des requêtes openCypher impliquant UNWIND pour une liste de mappages de valeurs littérales.

  • Amélioration des performances des requêtes openCypher dotées d'un filtre IN pour id. Par exemple :

    MATCH (n) WHERE id(n) IN ['1', '2', '3'] RETURN n
  • Ajout de la possibilité de spécifier l'IRI de base pour les requêtes SPARQL à l'aide de l'instruction BASE (voir IRI de base par défaut pour les requêtes et les mises à jour).

  • Réduction du temps d'attente pour le traitement des chargements en bloc spécifiques aux arêtes Gremlin et openCypher.

  • Les chargements en bloc reprennent désormais de manière asynchrone lorsque Neptune redémarre afin d'éviter un long délai d'attente causé par des problèmes de connectivité à Amazon S3 avant l'échec des tentatives de reprise.

  • Gestion améliorée des requêtes SPARQL DESCRIBE dont l'indicateur de requête DescribeMode est défini sur "CBD" (description CBD) et qui impliquent un grand nombre de nœuds vides.

Défauts corrigés dans cette version du moteur

  • Correction d'un bogue openCypher où les requêtes renvoyaient la chaîne "null" au lieu d'une valeur nulle dans Bolt et SPARQL-JSON.

  • Correction d'un bogue openCypher lié à la compréhension de liste, où une valeur nulle était générée au lieu des valeurs fournies pour les éléments de liste.

  • Correction d'un bogue openCypher en raison duquel les valeurs d'octets n'étaient pas correctement sérialisées.

  • Correction d'un bogue Gremlin dans l'étape UnionStep qui se produisait lorsqu'une entrée était une arête traversante vers un sommet dans une traversée enfant.

  • Correction d'un bogue Gremlin qui empêchait la propagation correcte d'une étiquette d'étape associée à UnionStep vers la dernière étape de chaque traversée enfant.

  • Correction d'un bogue Gremlin pour l'étape dedup avec des étiquettes suivant une étape repeat, bogue à cause duquel les étiquettes attachées à l'étape dedup n'étaient pas disponibles pour une utilisation ultérieure dans la requête.

  • Correction d'un bogue Gremlin qui empêchait la conversion d'une étape repeat dans une étape union en raison d'une erreur interne.

  • Correction des problèmes d'exactitude Gremlin pour les requêtes DFE utilisant limit comme traversée enfant des étapes autres que l'union en revenant à Tinkerpop. Les requêtes sous la forme suivante sont affectées :

    g.withSideEffect('Neptune#useDFE', true).V().as("a").select("a").by(out().limit(1))
  • Correction d'un bogue SPARQL qui empêchait les modèles SPARQL GRAPH de prendre en compte le jeu de données fourni par une clause FROM NAMED.

  • Correction d'un bogue SPARQL en raison duquel SPARQL DESCRIBE avec certaines clauses FROM et/ou FROM NAMED n'utilisait pas toujours correctement les données du graphe par défaut et levait parfois une exception. Consultez Comportement de SPARQL DESCRIBE par rapport au graphe par défaut.

  • Correction d'un bogue SPARQL qui renvoyait le message d'exception correct en cas de rejet de caractères null.

  • Correction d'un bogue SPARQL explain qui affectait les plans contenant un opérateur PipelinedHashIndexJoin.

  • Correction d'un bogue qui provoquait le déclenchement d'une erreur interne lorsqu'une requête renvoyant une valeur de constante était soumise.

  • Correction d'un problème lié à la logique du détecteur de blocage qui empêchait parfois le moteur de répondre.

Versions de langage de requête prises en charge dans cette version

Avant de mettre à niveau un cluster de bases de données vers la version 1.2.1.0, assurez-vous que votre projet est compatible avec les versions de langage de requête suivantes :

  • Première version de Gremlin prise en charge : 3.6.2

  • Dernière version de Gremlin est prise en charge : 3.6.2

  • Version d'openCypher : Neptune-9.0.20190305-1.1

  • Version de SPARQL : 1.1

Chemins de mise à niveau vers la version de moteur 1.2.1.0

Vous pouvez effectuer une mise à niveau manuelle vers cette version à partir de n'importe quelle version de moteur Neptune précédente supérieure ou égale à 1.1.0.0.

Note

À partir de la version 1.2.0.0 du moteur, tous les groupes de paramètres personnalisés et les groupes de paramètres de cluster personnalisés que vous utilisiez avec les versions de moteur antérieures à 1.2.0.0 doivent désormais être recréés à l'aide de la famille neptune1.2 de groupes de paramètres. Les versions précédentes utilisaient une famille de groupes de paramètres neptune1, et ces groupes de paramètres ne fonctionnent pas avec les versions 1.2.0.0 et ultérieures. Pour plus d'informatons, consultez Groupes de paramètres Amazon Neptune.

La mise à niveau vers cette version majeure n'est pas automatique.

Mise à niveau vers cette version

Amazon Neptune 1.2.1.0 est désormais disponible globalement.

Si un cluster de bases de données exécute une version de moteur à partir de laquelle il existe un chemin de mise à niveau vers cette version, il peut être mis à niveau dès maintenant. Vous pouvez mettre à niveau n'importe quel cluster éligible à l'aide des opérations de cluster de bases de données sur la console ou à l'aide du kit SDK. La commande CLI suivante met immédiatement à niveau un cluster éligible :

Pour Linux, OS X ou Unix :

aws neptune modify-db-cluster \ --db-cluster-identifier (your-neptune-cluster) \ --engine-version 1.2.1.0 \ --apply-immediately

Pour Windows :

aws neptune modify-db-cluster ^ --db-cluster-identifier (your-neptune-cluster) ^ --engine-version 1.2.1.0 ^ --apply-immediately

Les mises à jour sont appliquées simultanément à toutes les instances figurant dans un cluster de bases de données. Une mise à jour nécessite un redémarrage de la base de données sur ces instances. Vous subirez donc un temps d'arrêt allant de 20-30 secondes à plusieurs minutes, après quoi vous pourrez reprendre l'utilisation du cluster de bases de données.

Toujour effectuer des tests avant la mise à niveau

Lorsqu'une nouvelle version majeure ou mineure du moteur Neptune est publiée, testez toujours vos applications Neptune sur cette version avant de procéder à la mise à niveau. Même une mise à niveau mineure peut introduire de nouvelles fonctionnalités ou de nouveaux comportements susceptibles d'affecter le code.

Commencez par comparer les pages de notes de mise à jour de votre version actuelle à celles de la version cible pour déterminer s'il existe des modifications des versions de langage de requête ou d'autres changements majeurs.

Le meilleur moyen de tester une nouvelle version avant de mettre à niveau le cluster de bases de données de production est de cloner ce cluster pour qu'il exécute cette nouvelle version du moteur. Vous pouvez ainsi exécuter des requêtes sur le clone sans affecter le cluster de bases de données de production.

Toujours créer un instantané manuel avant de procéder à la mise à niveau

Avant la mise à niveau, nous vous recommandons vivement de toujours créer un instantané manuel du cluster de bases de données. Un instantané automatique n'offre qu'une protection à court terme, tandis qu'un instantané manuel reste disponible jusqu'à ce que vous le supprimiez explicitement.

Dans certains cas, Neptune crée un instantané manuel pour vous dans le cadre du processus de mise à niveau, mais il est préférable de ne pas compter sur ce mécanisme et de créer dans tous les cas votre propre instantané manuel.

Lorsque vous êtes certain de ne pas avoir besoin de rétablir l'état antérieur à la mise à niveau de votre cluster de bases de données, vous pouvez supprimer explicitement l'instantané manuel que vous avez créé vous-même, ainsi que celui que Neptune a éventuellement créé. Si Neptune crée un instantané manuel, il porte un nom commençant par preupgrade, suivi du nom de votre cluster de bases de données, de la version du moteur source, de la version du moteur cible et de la date.

Note

Si vous essayez de procéder à une mise à niveau alors qu'une action en attente est en cours, une erreur telle que la suivante peut survenir :

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 vous rencontrez cette erreur, attendez que l'action en attente soit terminée ou déclenchez immédiatement une fenêtre de maintenance pour laisser la mise à niveau précédente se terminer.

Pour plus d'informations sur la mise à niveau de la version du moteur , consultez Maintenance du cluster de bases de données Amazon Neptune. En cas de question ou de doute, l'équipe AWS Support est disponible sur les forums de la communauté et via AWS Premium Support.