2013-06-20 2 views
6

Was ist die einfachste & effizienteste Möglichkeit, die Anzahl der Knoten/Kanten in einem großen Diagramm über Gremlin zu zählen? Das Beste, was ich gefunden habe, ist mit dem V-Iterator:Anzahl der Knoten/Kanten in einem großen Diagramm über Gremlin?

gremlin> g.V.gather{it.size()} 

Dies ist jedoch keine praktikable Option für große Graphen, pro den documentation for V:

Der Scheitelpunkt Iterator für den Graphen. Verwenden Sie dies, um alle Knoten im Diagramm zu durchlaufen. Verwenden Sie bei großen Graphen mit Vorsicht, es sei denn in Kombination mit einer Schlüsselindexsuche verwendet.

Antwort

5

Ich denke, der bevorzugte Weg, um eine Zählung aller Eckpunkte wäre zu tun:

gremlin> g = TinkerGraphFactory.createTinkerGraph() 
==>tinkergraph[vertices:6 edges:6] 
gremlin> g.V.count() 
==>6 
gremlin> g.E.count() 
==>6 

aber ich denke, dass auf einem sehr großen Graphen g.V/E bricht gerade egal Sie, was Sie tun. In einem sehr großen Diagramm empfiehlt es sich, ein Tool wie Faunus (http://thinkaurelius.github.io/faunus/) zu verwenden, damit Sie die Leistung von Hadoop nutzen können, um die Zählungen parallel durchzuführen.

+0

Großartig, danke! Ich dachte, die Metadaten könnten irgendwo verfolgt und zugänglich sein, aber Faunus klingt wie eine solide Alternative. – bcm360

+0

Ich weiß nicht, dass irgendwelche Graphen das als Metadaten explizit verfolgen, wenn überhaupt, wäre es spezifisch für die Operationen des Graphen selbst. Es gibt nichts in Blueprints/Gremlin, das direkt auf diese Zahl kommt, noch geben Blueprints Metadaten in irgendeiner Weise preis. Wenn Sie feststellen, dass eine Graphimplementierung über Metadaten verfügt, um diese Informationen zu erhalten, können Sie wahrscheinlich darauf zugreifen, indem Sie das zugrunde liegende Diagramm mit 'getRawGraph()' abrufen. –

+0

Verstanden, danke Stephen – bcm360