Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verarbeitung von Gremlin-Abfragen mit Anweisungsindizes in Neptune
Der Zugriff auf Anweisungen erfolgt in Amazon Neptune über drei Anweisungsindizes, wie in Indizierung von Anweisungen in Neptune beschrieben. Neptune extrahiert ein Anweisungsmuster aus einer Gremlin-Abfrage, in der einige Positionen bekannt sind. Die restlichen Positionen werden durch eine Indexsuche entdeckt.
Neptune geht davon aus, dass das Eigenschaftsdiagrammschema nicht groß ist. Das bedeutet, dass die Anzahl unterschiedlicher Kantenbezeichnungen und Eigenschaftsnamen vergleichsweise gering ist, was zu einer insgesamt geringen Anzahl unterschiedlicher Prädikate führt. Neptune verfolgt unterschiedliche Prädikate in einem separaten Index. Es verwendet diesen Cache von Prädikaten, um einen Union-Scan von { all P x POGS }
durchzuführen, anstatt einen OSGP-Index zu verwenden. Wenn Sie keinen OSGP-Index für die umgekehrte Transversale benötigen, sparen Sie sowohl Speicherplatz als auch Lastdurchsatz.
Mit der Neptune-Gremlin-Explain/Profile-API können Sie die Anzahl der Prädikate in Ihrem Diagramm abrufen. Sie können anschließend feststellen, ob Ihre Anwendung die Neptune-Annahme aufhebt, dass Ihr Eigenschaftsdiagrammschema klein ist.
Die folgenden Beispiele zeigen, wie Neptune Indizes verwendet, um Gremlin-Abfragen zu verarbeiten.
Frage: Was sind die Bezeichnungen des Eckpunkts v1
?
Gremlin code: g.V('v1').label() Pattern: (<v1>, <~label>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<~label>:*
Frage: Was sind die „weiß“-Out-Grenzen des Eckpunkts v1
?
Gremlin code: g.V('v1').out('knows') Pattern: (<v1>, <knows>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<knows>:*
Frage: Welche Eckpunkte haben eine Person
-Eckpunktbezeichnung?
Gremlin code: g.V().hasLabel('Person') Pattern: (?, <~label>, <Person>, <~>) Known positions: POG Lookup positions: S Index: POGS Key range: <~label>:<Person>:<~>:*
Frage: Was sind die von/zu-Eckpunkte einer bestimmten Grenze e1
?
Gremlin code: g.E('e1').bothV() Pattern: (?, ?, ?, <e1>) Known positions: G Lookup positions: SPO Index: GPSO Key range: <e1>:*
Ein Anweisungsindex, den Neptune nicht besitzt, ist ein umgekehrter Traversierungs-OSGP-Index. Dieser Index könnte verwendet werden, um alle eingehenden Kanten für alle Kantenbezeichnungen zu sammeln, wie im folgenden Beispiel gezeigt.
Frage: Was sind die eingehenden benachbarten Eckpunkte v1
?
Gremlin code: g.V('v1').in() Pattern: (?, ?, <v1>, ?) Known positions: O Lookup positions: SPG Index: OSGP // <-- Index does not exist