Utilisation de Gremlin avec le moteur de requêtes Neptune DFE - 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.

Utilisation de Gremlin avec le moteur de requêtes Neptune DFE

Si vous activez complètement le moteur de requêtes alternatif Neptune connu sous le nom de DFE en mode laboratoire (en définissant le paramètre du cluster de bases de données neptune_lab_mode sur DFEQueryEngine=enabled), Neptune convertit les requêtes/traversées Gremlin en lecture seule en représentation logique intermédiaire et les exécute sur le moteur DFE chaque fois que cela est possible.

Cependant, le DFE ne prend pas encore en charge toutes les étapes Gremlin. Lorsqu'une étape ne peut pas être exécutée en mode natif sur le DFE, Neptune recourt à nouveau TinkerPop pour exécuter l'étape. Les rapports explain et profile incluent des avertissements lorsque cela se produit.

Note

À partir de la version 1.0.5.0 du moteur, le comportement DFE par défaut pour gérer les étapes Gremlin sans prise en charge native a changé. Alors qu'auparavant le moteur DFE reposait sur le moteur Neptune Gkremlin, il repose désormais sur le moteur classique. TinkerPop

Étapes Gremlin prises en charge de manière native par le moteur DFE
  • GraphStep

  • VertexStep

  • EdgeVertexStep

  • IdStep

  • TraversalFilterStep

  • PropertiesStep

  • Prise en charge du filtrage HasStep pour les sommets et les arêtes sur les propriétés, les ID et les étiquettes, à l'exception du texte et des prédicats Without.

  • WherePredicateStep avec des filtres Path, mais aucune prise en charge de la recherche ByModulation, SideEffect ou Map

  • DedupGlobalStep, à l'exception de la prise en charge de la recherche ByModulation, SideEffect et Map.

Entrelacement de la planification des requêtes

Lorsque le processus de conversion identifie une étape Gremlin qui n'a pas d'opérateur DFE natif correspondant, avant de revenir à Tinkerpop, il essaie de trouver d'autres parties de requête intermédiaires pouvant être exécutées nativement sur le moteur DFE. Pour ce faire, il applique une logique d'entrelacement à la traversée de niveau supérieur. De la sorte, les étapes prises en charge sont utilisées dans la mesure du possible.

Toute conversion de requête intermédiaire sans préfixe est représentée à l'aide de NeptuneInterleavingStep dans les sorties explain et profile.

Pour comparer les performances, vous pouvez désactiver l'entrelacement dans une requête, tout en utilisant le moteur DFE pour exécuter la partie avec préfixe. Vous pouvez également utiliser uniquement le TinkerPop moteur pour l'exécution de requêtes sans préfixe. Pour ce faire, vous avez besoin d'un indicateur de requête disableInterleaving.

Tout comme l'indicateur de requête useDFE avec la valeur false empêche totalement l'exécution d'une requête sur le DFE, l'indicateur requête disableInterleaving avec la valeur true désactive l'entrelacement DFE pour la conversion d'une requête. Par exemple :

g.with('Neptune#disableInterleaving', true) .V().has('genre','drama').in('likes')

Mise à jour de la sortie Gremlin explain et profile

Gremlin explain fournit des informations sur la traversée optimisée que Neptune utilisera pour exécuter une requête. Consultez l'exemple de sortie DFE explain pour voir ce à quoi ressemble la sortie explain lorsque le moteur DFE est activé.

L'API Gremlin profile effectue une traversée Gremlin spécifiée, collecte diverses métriques relatives à l'exécution et génère un rapport de profil contenant des informations sur le plan de requête optimisé et les statistiques d'exécution de différents opérateurs. Consultez l'exemple de sortie DFE profile pour voir ce à quoi ressemble la sortie profile lorsque le moteur DFE est activé.

Note

Le moteur DFE étant une fonctionnalité expérimentale publiée en mode laboratoire, le format exact de la sortie explain et profile peut changer.