Comment Neptune traite les requêtes Gremlin à l'aide des index d'instructions - 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.

Comment Neptune traite les requêtes Gremlin à l'aide des index d'instructions

Les relevés sont accessibles dans Amazon Neptune au moyen de trois index de relevés, comme indiqué dansComment les relevés sont indexés dans Neptune. Neptune extrait une déclarationmodèleà partir d'une requête Gremlin dans laquelle certaines positions sont connues, le reste étant laissé à la découverte par recherche par index.

Neptune suppose que la taille du schéma du graphe de propriétés n'est pas importante. Cela signifie que le nombre d'étiquettes de bord et de noms de propriétés distincts est assez faible, ce qui se traduit par un faible nombre total de prédicats distincts. Neptune suit des prédicats distincts dans un index distinct. Il utilise ce cache de prédicats pour effectuer une analyse d'union de { all P x POGS } au lieu d'utiliser un index OSGP. Le fait d'éviter d'avoir besoin d'un index OSGP de traversée inverse permet d'économiser de l'espace de stockage et du débit de charge.

L'API Explain/Profile de Neptune Garmlin vous permet d'obtenir le nombre de prédicats dans votre graphique. Vous pouvez ensuite déterminer si votre application invalide l'hypothèse de Neptune selon laquelle votre schéma de graphe de propriétés est petit.

Les exemples suivants illustrent la manière dont Neptune utilise les index pour traiter les requêtes Gremlin.

Question : Quelles sont les étiquettes du sommet v1 ?

Gremlin code: g.V('v1').label() Pattern: (<v1>, <~label>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<~label>:*

Question : Quels sont les arcs sortants « knows » du sommet v1 ?

Gremlin code: g.V('v1').out('knows') Pattern: (<v1>, <knows>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<knows>:*

Question : Quels sont les sommets qui ont une étiquette de sommet Person ?

Gremlin code: g.V().hasLabel('Person') Pattern: (?, <~label>, <Person>, <~>) Known positions: POG Lookup positions: S Index: POGS Key range: <~label>:<Person>:<~>:*

Question : Quels sont les sommets de départ/d'arrivée d'un arc e1 donné ?

Gremlin code: g.E('e1').bothV() Pattern: (?, ?, ?, <e1>) Known positions: G Lookup positions: SPO Index: GPSO Key range: <e1>:*

Un index de déclarations créé par Neptunepashave est un index OSGP à traversée inverse. Ce type d'index peut être utilisé pour collecter tous les arcs entrants sur toutes les étiquettes d'arcs, comme dans l'exemple suivant.

Question : Quels sont les sommets adjacents entrantsv1?

Gremlin code: g.V('v1').in() Pattern: (?, ?, <v1>, ?) Known positions: O Lookup positions: SPG Index: OSGP // <-- Index does not exist