es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué AWS Neptune produce tantos resultados para grafos?

Gráfico

%%gremlin -p v,outE,inV,outE,inV,outE,inV,outE,inV,outE,inV,outE,inV,outE,inV,outE,inV,outE,inV -l 40 -le 40 -g Datagroup 

g.V().hasLabel('I-GPM').outE().inV().outE().inV().outE().inV().outE().inV().outE().inV().outE().inV().outE().inV().outE().inV().outE().inV().path().
by(valueMap().with(WithOptions.tokens)).by(label).limit(100000)

¿Por qué producir un gráfico como este genera #100000 resultados?
¿Hay alguna forma de optimizar esto y seguir produciendo el mismo gráfico?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Generar un gráfico como este genera #100000 resultados porque la consulta comienza en un vértice con la etiqueta “I-GPM” y recorre sus vértices adyacentes a través de outE() e inV() varias veces. El paso path() devuelve luego todas las rutas posibles hasta 8 niveles de profundidad. Como resultado, se generan una gran cantidad de rutas, por lo que se establece un límite de 100000 para evitar saturar al cliente.

    Para optimizar esta consulta, es posible usar el paso repeat() de Gremlin con un límite para controlar la profundidad del recorrido. Por ejemplo, la siguiente consulta limita el recorrido a 3 niveles de profundidad:

    g.V().hasLabel('I-GPM').repeat(out().in()).times(3).path().by(valueMap().with(WithOptions.tokens)).by(label)
    

    Esto reducirá significativamente la cantidad de resultados devueltos mientras produce el mismo gráfico. Además, el uso de índices para las etiquetas y propiedades de vértices y aristas también puede mejorar el rendimiento de la consulta.

Comments are closed.