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.
Conseil de typePromotion requête Gremlin
Lorsque vous soumettez une traversée Gremlin qui filtre une valeur ou une plage numérique, le moteur de requête Neptune doit normalement utiliser la promotion de type lorsqu'il exécute la requête. Autrement dit, il doit examiner les valeurs de tous les types susceptibles de contenir la valeur sur laquelle porte le filtre.
Par exemple, si vous filtrez les valeurs égales à 55, le moteur doit rechercher les entiers égaux à 55, les entiers longs égaux à 55L, les nombres flottants égaux à 55,0, etc. Chaque promotion de type implique une recherche supplémentaire au niveau du stockage, ce qui peut entraîner un délai étonnamment long pour terminer une requête apparemment simple.
Supposons que vous recherchiez tous les sommets dont la propriété correspondant à l'âge du client est supérieure à 5 :
g.V().has('customerAge', gt(5))
Pour exécuter cette traversée de manière approfondie, Neptune doit développer la requête afin d'examiner tous les types numériques vers lesquels la valeur que vous recherchez pourrait être promue. Dans ce cas, le filtre gt
doit être appliqué pour tout entier supérieur à 5, tout long supérieur à 5L, tout flottant supérieur à 5,0 et tout double supérieur à 5,0. Étant donné que chacune de ces promotions nécessite une recherche supplémentaire sur le stockage, vous verrez plusieurs filtres par filtre numérique lorsque vous exécuterez l'Gremlin profile API pour cette requête, et son exécution prendra beaucoup plus de temps que prévu.
Souvent, la promotion de type n'est pas nécessaire, car vous savez déjà que vous n'avez besoin de trouver que les valeurs d'un type spécifique. Dans ce cas, vous pouvez accélérer considérablement les requêtes en utilisant l'indicateur de requête typePromotion
afin de désactiver la promotion de type.
Syntaxe
L'indicateur de requête typePromotion
est spécifié en ajoutant une étape withSideEffect
à la requête.
g.withSideEffect('Neptune#typePromotion',
true or false
).gremlin-traversal
Note
Tous les effets secondaires d'indicateurs de requête Gremlin sont préfixés avec Neptune#
.
Valeurs disponibles
true
false
Pour désactiver la promotion de type pour la requête ci-dessus, vous devez utiliser :
g.withSideEffect('Neptune#typePromotion', false).V().has('customerAge', gt(5))