graph - cypher collect
consulta de grado de nodo en Neo4j con gran gráfico(millones de nodos y enlaces) (2)
De hecho, es una operación global muy costosa. En este caso, es mejor utilizar una extensión no administrada que use GlobalGraphOperations.getAllRelationships
. Durante iterar todas las relaciones, construye un Mapa e incrementa el contador para el nodo inicial y final de cada relación. El paso final es encontrar el máximo dentro de tu mapa.
¿Cómo puedo obtener el grado de cada nodo en Neo4j, y luego averiguar qué nodo tiene el mayor grado en un gráfico muy grande (2 millones de nodos y 5 millones de relaciones)?
Sé que puedo usar Cypher o Gremlin para lograr eso, como:
start n = node(*)
match (n)--(c)
return n, count(*) as connections
order by connections dsec
o
g.V.bothE
pero la RAM que tiene mi computadora es solo 2G ~ 4G, siempre espero mucho tiempo y me pongo "indefinido" cuando publico la consulta de arriba ...
¿alguien tiene alguna experiencia en la consulta de un gráfico tan grande en neo4j con gremlin o cypher?
Para el mayor grado, también debe limitar el resultado, por lo que el cifrado solo tendrá que mantener los 10 primeros resultados.
START n = node(*)
MATCH (n)--(c)
RETURN n, count(*) as connections
ORDER BY connections DESC
LIMIT 10
O podrías hacer:
START n = node(*)
RETURN n, length((n)--(c)) as connections
ORDER BY connections DESC
LIMIT 10
De lo contrario, estoy de acuerdo con Stefan.