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.