Comment les instructions sont indexées dans Neptune - 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 les instructions sont indexées dans Neptune

Lorsque vous interrogez un graphe de quadruplets, vous pouvez ou non spécifier une contrainte de valeur pour chaque position de quadruplet. La requête renvoie tous les quadruplets qui correspondent aux contraintes de valeur que vous avez spécifiées.

Neptune utilise des index pour résoudre les modèles de requêtes graphiques. Ces index concernent les quatre composants principaux d'une arête de graphe : le sujet (sommet source dansLPG) ; le prédicat (RDF), ou étiquette de propriété ou de bord (LPG) ; l'objet (sommet cible ou valeur de propriété dansLPG) ; et le graphe () ou identifiant de bord (RDF). LPG Il existe 16 (2^4) modèles d'accès possibles pour ces quatre positions de composants. Vous pouvez interroger efficacement les 16 modèles sans avoir à scanner ni à filtrer à l'aide de six index. Chaque index d'instruction de quadruplet utilise une clé composée des quatre valeurs de position concaténées dans un ordre différent. Voici une combinaison possible de quatre index d'instructions qui couvriraient les 16 chemins d'accès :

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

Neptune crée et gère uniquement trois de ces six index par défaut :

  • SPOG –   Utilise une clé composée de Subject + Predicate + Object + Graph.

  • POGS –   Utilise une clé composée de Predicate + Object + Graph + Subject.

  • GPSO –   Utilise une clé composée de Graph + Predicate + Subject + Object.

Ces trois index gèrent la plupart des modèles d'accès les plus courants. Le fait de conserver seulement trois index d'instruction complets au lieu de six a pour effet de limiter grandement les ressources dont vous avez besoin pour prendre en charge l'accès rapide sans analyse et filtrage. Par exemple, l'index SPOG permet une recherche efficace chaque fois qu'un préfixe des positions, comme le sommet ou l'identifiant de sommet et de propriété, est lié. L'index POGS permet un accès efficace lorsque seule l'étiquette d'arête ou de propriété stockée à la position P est liée.

Le niveau inférieur API pour rechercher des instructions utilise un modèle d'instructions dans lequel certaines positions sont connues et les autres sont laissées à la découverte par recherche par index. En constituant les positions connues dans un préfixe de clé en fonction de l'ordre de la clé d'index pour l'un des index d'instruction, Neptune exécute une analyse de plage pour récupérer toutes les instructions correspondant aux positions connues.

Cependant, un des index d'instruction que Neptune ne crée pas par défaut est un index OSGP de traversée inverse, qui peut collecter des prédicats dans les objets et les sujets. Au lieu de cela, Neptune effectue par défaut le suivi des différents prédicats dans un index distinct qu'il utilise pour effectuer une analyse d'union de {all P x POGS}. Lorsque vous utilisez Gremlin, un prédicat correspond à une propriété ou à une étiquette d'arête.

Si le nombre de prédicats distincts dans un graphe devient important, la stratégie d'accès Neptune par défaut peut devenir inefficace. Dans Gremlin, par exemple, une étape in() dans laquelle aucune étiquette d'arc n'est donnée, ou toute étape qui utilise in() en interne, comme both() ou drop(), peut devenir plutôt inefficace.

Activation de la création d'OSGPindex à l'aide du mode Lab

Si votre modèle de données crée un grand nombre de prédicats distincts, vous risquez de réduire les performances et d'augmenter les coûts d'exploitation, ce qui peut être considérablement amélioré en utilisant le mode laboratoire pour activer l'OSGPindex en plus des trois index que Neptune gère par défaut.

Note

Cette fonctionnalité est disponible à partir de la version 1.0.2.1 du moteur Neptune.

L'activation de OSGP l'index peut avoir quelques inconvénients :

  • Le taux d'insertion peut être ralenti de jusqu'à 23 %.

  • Le stockage augmente jusqu'à 20 %.

  • Les requêtes de lecture qui touchent tous les index de manière égale (ce qui est plutôt rare) peuvent avoir des latences accrues.

En général, toutefois, il vaut la peine d'activer l'OSGPindex pour les clusters de bases de données comportant un grand nombre de prédicats distincts. Les recherches basées sur des objets deviennent extrêmement efficaces (par exemple, trouver toutes les arêtes entrantes vers un sommet ou tous les sujets connectés à un objet donné). De ce fait, la suppression des sommets devient aussi beaucoup plus efficace.

Important

Vous ne pouvez activer l'OSGPindex que dans un cluster de base de données vide, avant d'y charger des données.

 

Déclarations Gremlin dans le modèle de données Neptune

Les données du graphe de propriétés Gkremlin sont exprimées dans le SPOG modèle à l'aide de trois classes d'instructions, à savoir :

Pour en savoir plus sur leur utilisation dans les requêtes Gremlin, consultez Présentation du fonctionnement des requêtes Gremlin dans Neptune.