Dica de consulta do Gremlin repeatMode - 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á.

Dica de consulta do Gremlin repeatMode

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 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 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)

breadth-first (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.