

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
<a name="gremlin-explain-background-indexing-examples"></a>

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](feature-overview-storage-indexing.md). 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 de `{ all P x POGS }`, em vez de usar um índice OSGP. Evitar a necessidade de um índice OSGP de travessia reversa economiza espaço de armazenamento e taxa de transferência de carga.

A API Neptune Explain/Profile Gremlin 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 from/to vértices de uma determinada aresta`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 o Neptune **não** tem é um índice OSGP de percurso reverso. 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
```