

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á.

# Dicas de consulta repeatMode do Gremlin
<a name="gremlin-query-hints-repeatMode"></a>

A dica de consulta `repeatMode` do Neptune especifica como o mecanismo do Neptune avalia a etapa `repeat()` em um percurso do Gremlin: primeiro em amplitude, primeiro em profundidade, ou profundidade em partes primeiro.

O modo de avaliação da etapa `repeat()` é importante quando ele é usado para encontrar ou seguir um caminho, em vez de simplesmente repetir uma etapa por um número limitado de vezes.

## Sintaxe
<a name="gremlin-query-hints-repeatMode-syntax"></a>

A dica de consulta `repeatMode` é especificada, adicionando uma etapa `withSideEffect` para a consulta.

```
g.withSideEffect('Neptune#repeatMode', 'mode').gremlin-traversal
```

**nota**  
Todas os efeitos colaterais de dicas de consulta do Gremlin são prefixados com `Neptune#`.

**Modos disponíveis**
+ `BFS`

  Pesquisa primeiro em largura

  O modo de execução padrão para a `repeat()` etapa. Isso obtém todos os nós irmãos antes de se aprofundar ao longo do caminho.

  Esta versão é intensiva em memória e as fronteiras podem ficar muito grandes. Há um risco mais elevado de que a consulta seja executada sem memória e cancelada pelo mecanismo do Neptune. Isso é o que mais se aproxima de outras implementações do Gremlin.
+ `DFS`

  Pesquisa primeiro em profundidade

  Acompanhe cada caminho até a profundidade máxima antes de prosseguir para a solução seguinte.

  Isso usa menos memória. Pode fornecer melhor desempenho em situações como descobrir um único caminho desde um ponto de partida de vários saltos.
+ `CHUNKED_DFS`

  Pesquisa primeiro em profundidade em partes

  Uma abordagem híbrida que explora o gráfico primeiro em profundidade em partes de 1.000 nós, em vez de 1 nó (`DFS`) ou todos os nós (`BFS)`.

  O mecanismo do Neptune receberá até mil nós em cada nível antes de seguir o caminho mais profundo.

  Esta é uma abordagem equilibrada entre velocidade e o uso de memória. 

  Também é útil se você deseja usar o `BFS`, mas a consulta estiver consumindo muita memória.



## Exemplo
<a name="gremlin-query-hints-repeatMode-example"></a>

A seção a seguir descreve o efeito do modo de repetição em uma travessia do Gremlin.

No Neptune, modo padrão para a etapa `repeat()` é realizar uma estratégia de execução primeiro em amplitude (`BFS`) para todos os percursos. 

Na maioria dos casos, a TinkerGraph implementação usa a mesma estratégia de execução, mas em alguns casos ela altera a execução de uma travessia. 

Por exemplo, a TinkerGraph implementação modifica a consulta a seguir.

```
g.V("3").repeat(out()).times(10).limit(1).path()
```

A etapa `repeat()` nesta travessia é "desenrolada" na seguinte travessia, que resulta em uma estratégia primeiro em profundidade (`DFS`).

```
g.V(<id>).out().out().out().out().out().out().out().out().out().out().limit(1).path()
```

**Importante**  
O mecanismo de consulta do Neptune não faz isso automaticamente.

Breadth-first (`BFS`) é a estratégia de execução padrão e é semelhante à da maioria dos TinkerGraph casos. No entanto, existem certos casos em que as estratégias de primeiro em profundidade (`DFS`) são preferíveis.

 

**BFS (padrão)**  
Primeiro em largura (BFS) é a estratégia de execução padrão para o operador `repeat()`.

```
g.V("3").repeat(out()).times(10).limit(1).path()
```

O mecanismo do Neptune explora totalmente as primeiras fronteiras de nove saltos antes de encontrar uma solução para dez saltos. Isso é eficaz em muitos casos, como consultas de caminho mais curto.

No entanto, no caso do exemplo anterior, a travessia seria mais rápida usando o modo primeiro em profundidade (`DFS`) para o operador `repeat()`.

**DFS**  
A consulta a seguir usa o modo primeiro em profundidade (`DFS`) para o operador `repeat()`.

```
g.withSideEffect("Neptune#repeatMode", "DFS").V("3").repeat(out()).times(10).limit(1)
```

Isso segue cada solução individual para a profundidade máxima antes de explorar a solução seguinte. 