Cómo se indexan las instrucciones en Neptune - Amazon Neptune

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 se indexan las instrucciones en Neptune

Cuando se realiza una consulta en un gráfico de cuádruples, para cada posición de cuádruple puede especificar una restricción de valor o no. La consulta devuelve todos los cuádruples que coinciden con las restricciones de valor que ha especificado.

Neptune usa índices para resolver patrones de consultas gráficas. Estos índices se encuentran sobre los cuatro componentes principales del borde de un gráfico: el sujeto (el vértice de origen enLPG); el predicado (), o la propiedad o la etiqueta del borde (RDFLPG); el objeto (el vértice objetivo o el valor de la propiedad enLPG); y el gráfico () o el identificador de borde (RDF). LPG Hay 16 (2^4) patrones de acceso posibles para estas cuatro posiciones de componentes cuádruples. Puede consultar los 16 patrones de manera eficiente sin tener que escanear ni filtrar mediante seis índices. Cada índice de instrucción cuádruple utiliza una clave compuesta por los cuatro valores de posición concatenados en un orden diferente. Una posible combinación de índices de sentencias cuádruples que cubriría las 16 rutas de acceso es:

Access Pattern Index key order ---------------------------------------------------- --------------- 1. ???? (No constraints; returns every quad) SPOG 2. SPOG (Every position is constrained) SPOG 3. SPO? (S, P, and O are constrained; G is not) SPOG 4. SP?? (S and P are constrained; O and G are not) SPOG 5. S??? (S is constrained; P, O, and G are not) SPOG 6. S??G (S and G are constrained; P and O are not) SPOG 7. ?POG (P, O, and G are constrained; S is not) POGS 8. ?PO? (P and O are constrained; S and G are not) POGS 9. ?P?? (P is constrained; S, O, and G are not) POGS 10. ?P?G (P and G are constrained; S and O are not) GPSO 11. SP?G (S, P, and G are constrained; O is not) GPSO 12. ???G (G is constrained; S, P, and O are not) GPSO 13. S?OG (S, O, and G are constrained; P is not) OGSP 14. ??OG (O and G are constrained; S and P are not) OGSP 15. ??O? (O is constrained; S, P, and G are not) OGSP 16. S?O? (S and O are constrained; P and G are not) OSGP

De forma predeterminada, Neptune crea y mantiene solo tres de esos seis índices:

  • SPOG –   utiliza una clave compuesta de Subject + Predicate + Object + Graph.

  • POGS –   utiliza una clave compuesta de Predicate + Object + Graph + Subject.

  • GPSO –   utiliza una clave compuesta de Graph + Predicate + Subject + Object.

Estos tres índices administran muchos de los patrones de acceso más comunes. El mantenimiento de solo tres índices de instrucciones completos en lugar de seis reduce considerablemente los recursos que necesita para permitir un acceso rápido sin necesidad de escanear ni filtrar. Por ejemplo, el índice SPOG permite una búsqueda eficiente siempre que un prefijo de las posiciones, como el vértice o el identificador de vértice y propiedad, esté vinculado. El índice POGS permite un acceso eficiente cuando solo se vincula la etiqueta de borde o de propiedad almacenada en la posición P.

El nivel bajo API para buscar sentencias adopta un patrón de enunciados en el que se conocen algunas posiciones y el resto se deja para que las descubras mediante una búsqueda en índices. Al componer las posiciones conocidas en un prefijo de clave de acuerdo con el orden de la clave de índice para uno de los índices de la instrucción, Neptune realiza un análisis de rango para recuperar todas las instrucciones que coincidan con las posiciones conocidas.

Sin embargo, uno de los índices de la instrucción que Neptune no crea de forma predeterminada es un índice OSGP de recorrido inverso, que puede reunir predicados en objetos y sujetos. En su lugar, Neptune realiza de forma predeterminada un seguimiento de predicados diferentes en un índice independiente que utiliza para realizar un análisis de unión de {all P x POGS}. Cuando trabaja con Gremlin, un predicado se corresponde con una propiedad o una etiqueta de borde.

La estrategia de acceso predeterminada de Neptune puede ser ineficiente si el número de predicados diferentes de un gráfico se vuelve grande. En Gremlin, por ejemplo, un paso in() en el que no se proporcionan etiquetas de borde, o cualquier paso que utilice in() internamente como both() o drop(), puede resultar bastante ineficiente.

Habilitación OSGP de la creación de índices mediante el modo Lab

Si su modelo de datos crea una gran cantidad de predicados distintos, es posible que experimente una reducción del rendimiento y un aumento de los costes operativos, que se pueden mejorar considerablemente si utiliza el modo de laboratorio para habilitar el OSGPíndice, además de los tres índices que Neptune mantiene de forma predeterminada.

nota

Esta característica está disponible a partir de la versión 1.0.2.1 del motor de Neptune.

Habilitar el OSGP índice puede tener algunos inconvenientes:

  • La tasa de inserción puede disminuir hasta un 23 %.

  • El almacenamiento aumenta hasta un 20 %.

  • Las consultas de lectura que modifican todos los índices por igual (lo cual es bastante raro) pueden tener mayores latencias.

Sin embargo, en general, vale la pena habilitar el OSGP índice para los clústeres de bases de datos con un gran número de predicados distintos. Las búsquedas basadas en objetos se vuelven muy eficientes (por ejemplo, encontrar todos los bordes entrantes en un vértice o todos los sujetos conectados a un objeto determinado) y, como resultado, la eliminación de vértices también se vuelve mucho más eficiente.

importante

Solo puede habilitar el OSGP índice en un clúster de base de datos vacío antes de cargar datos en él.

 

Instrucciones de Gremlin en el modelo de datos de Neptune

Los datos del gráfico de propiedades de Gremlin se expresan en el SPOG modelo mediante tres clases de sentencias, a saber:

Para saber cómo se utilizan en las consultas de Gremlin, consulte Descripción de cómo funcionan las consultas de Gremlin en Neptune.