Como o Neptune processa consultas do Gremlin usando índices de declaração - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como o Neptune processa consultas do Gremlin usando índices de declaração

As declarações são acessadas no Amazon Neptune por meio de três índices de declaração, conforme detalhado em Como as declarações são indexadas no Neptune. O Neptune extrai um padrão de declaração de uma consulta do Gremlin na qual algumas posições são conhecidas e o restante é deixado para descoberta por pesquisa de índice.

O Neptune pressupõe que o tamanho do esquema do grafo de propriedades não seja grande. Isso significa que o número de rótulos de borda e nomes de propriedade distintos é bastante baixo, resultando em um número total baixo de predicados distintos. O Neptune monitora predicados distintos em um índice separado. Ele usa esse cache de predicados para fazer uma varredura de união { all P x POGS } em vez de usar um OSGP índice. Evitar a necessidade de um OSGP índice de travessia reversa economiza espaço de armazenamento e taxa de transferência de carga.

O Neptune Gremlin API Explain/Profile permite que você obtenha a contagem de predicados em seu gráfico. Depois, é possível determinar se a aplicação invalida a pressuposição do Neptune de que o esquema do grafo de propriedades é pequeno.

Os exemplos a seguir ajudam a ilustrar como o Neptune usa índices para processar consultas do Gremlin.

Pergunta: quais são os rótulos do vértice v1?

Gremlin code: g.V('v1').label() Pattern: (<v1>, <~label>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<~label>:*

Pergunta: quais são as bordas externas do vértice v1 conhecidas?

Gremlin code: g.V('v1').out('knows') Pattern: (<v1>, <knows>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<knows>:*

Pergunta: quais vértices têm um rótulo de vértice Person?

Gremlin code: g.V().hasLabel('Person') Pattern: (?, <~label>, <Person>, <~>) Known positions: POG Lookup positions: S Index: POGS Key range: <~label>:<Person>:<~>:*

Pergunta: quais são os vértices de/para de uma determinada borda e1?

Gremlin code: g.E('e1').bothV() Pattern: (?, ?, ?, <e1>) Known positions: G Lookup positions: SPO Index: GPSO Key range: <e1>:*

Um índice de declaração que Netuno não tem é um índice de travessia reversa. OSGP Esse índice pode ser usado para reunir todas as bordas de entrada em todos os rótulos de borda, como no exemplo a seguir.

Pergunta: Quais são os vértices adjacentes de entrada v1?

Gremlin code: g.V('v1').in() Pattern: (?, ?, <v1>, ?) Known positions: O Lookup positions: SPG Index: OSGP // <-- Index does not exist