Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Come Neptune elabora le query Gremlin mediante gli indici di dichiarazione
L'accesso alle dichiarazioni in Amazon Neptune avviene tramite tre indici di dichiarazioni, come descritto in In che modo le dichiarazioni vengono indicizzate in Neptune. Neptune estrae un modello di dichiarazione da una query Gremlin in cui alcune posizioni sono note mentre le altre vengono individuate tramite la ricerca nell'indice.
Neptune presuppone che le dimensioni dello schema del grafo delle proprietà non siano grandi. Ciò significa che il numero di etichette degli archi e di nomi di proprietà distinti è piuttosto basso, determinando un basso numero totale di predicati distinti. Neptune tiene traccia dei predicati distinti in un indice separato. Utilizza questa cache di predicati per eseguire una scansione unionale { all P x POGS }
anziché utilizzare un OSGP indice. Evitare la necessità di un OSGP indice di inversione trasversale consente di risparmiare spazio di archiviazione e velocità di carico.
Il Neptune Gremlin API Explain/Profile consente di ottenere il conteggio dei predicati nel grafico. È possibile quindi determinare se l'applicazione invalida il presupposto di Neptune che le dimensioni dello schema del grafo delle proprietà siano ridotte.
I seguenti esempi illustrano come Neptune utilizza gli indici per elaborare le query Gremlin.
Domanda: quali sono le etichette dei vertici v1
?
Gremlin code: g.V('v1').label() Pattern: (<v1>, <~label>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<~label>:*
Domanda: quali sono gli edge "noti" dei vertici v1
?
Gremlin code: g.V('v1').out('knows') Pattern: (<v1>, <knows>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<knows>:*
Domanda: quali vertici hanno un'etichetta di vertice Person
?
Gremlin code: g.V().hasLabel('Person') Pattern: (?, <~label>, <Person>, <~>) Known positions: POG Lookup positions: S Index: POGS Key range: <~label>:<Person>:<~>:*
Domanda: quali sono i vertici da/a di un determinato edge e1
?
Gremlin code: g.E('e1').bothV() Pattern: (?, ?, ?, <e1>) Known positions: G Lookup positions: SPO Index: GPSO Key range: <e1>:*
Un indice di istruzioni che Neptune non ha è un indice di attraversamento inverso. OSGP Questo indice può essere utilizzato per raccogliere tutti gli edge in entrata in tutte le etichette edge, come nell'esempio seguente.
Domanda: quali sono i vertici v1
adiacenti in entrata?
Gremlin code: g.V('v1').in() Pattern: (?, ?, <v1>, ?) Known positions: O Lookup positions: SPG Index: OSGP // <-- Index does not exist