Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cómo procesa Neptune las consultas de Gremlin mediante índices de instrucción
Para acceder a las instrucciones en Amazon Neptune, se utilizan tres índices de instrucción, tal y como se detalla en Cómo se indexan las instrucciones en Neptune. Neptune extrae un patrón de instrucciones de una consulta de Gremlin en el que se conocen algunas posiciones y el resto se deja para que se descubran mediante una búsqueda de índices.
Neptune asume que el tamaño del esquema de gráfico de propiedades no es grande. Esto significa que el número de etiquetas de borde y nombres de propiedades distintos es bastante bajo, lo que genera un número total bajo de predicados distintos. Neptune realiza un seguimiento de los predicados distintos en un índice independiente. Utiliza esta caché de predicados para realizar un escaneo de uniones, { all P x POGS }
en lugar de usar un OSGP índice. Al evitar la necesidad de un OSGP índice transversal inverso, se ahorra espacio de almacenamiento y se ahorra capacidad de carga.
La explicación/perfil del Gremlin de Neptune API le permite obtener el recuento de predicados en su gráfica. A continuación, puede determinar si la aplicación invalida la suposición de Neptune de que el esquema de gráficos de propiedades es pequeño.
Los siguientes ejemplos ayudan a demostrar cómo utiliza Neptune los índices para procesar consultas de Gremlin.
Pregunta: ¿Cuáles son las etiquetas del vértice v1
?
Gremlin code: g.V('v1').label() Pattern: (<v1>, <~label>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<~label>:*
Pregunta: ¿Cuáles son los bordes de tipo "knows" (conoce) del vértice v1
?
Gremlin code: g.V('v1').out('knows') Pattern: (<v1>, <knows>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<knows>:*
Pregunta: ¿Qué vértices tienen una etiqueta de vértice de Person
?
Gremlin code: g.V().hasLabel('Person') Pattern: (?, <~label>, <Person>, <~>) Known positions: POG Lookup positions: S Index: POGS Key range: <~label>:<Person>:<~>:*
Pregunta: ¿Cuáles son los vértices de origen/destino de un borde determinado e1
?
Gremlin code: g.E('e1').bothV() Pattern: (?, ?, ?, <e1>) Known positions: G Lookup positions: SPO Index: GPSO Key range: <e1>:*
Un índice de enunciados que Neptune no tiene es un índice de recorrido OSGP inverso. Este índice podría utilizarse para reunir todos los bordes entrantes de todas las etiquetas de borde, como en el siguiente ejemplo.
Pregunta: ¿Cuáles son los vértices v1
adyacentes entrantes?
Gremlin code: g.V('v1').in() Pattern: (?, ?, <v1>, ?) Known positions: O Lookup positions: SPG Index: OSGP // <-- Index does not exist