Frage

Ich habe die folgenden Informationen in einer Titan Graph-Datenbank. Ich versuche, die Informationen zu verstehen, indem ich Abfragen über die Gremlin-Shell sende. Die Graph-Datenbank, die ich untersuchen möchte, modelliert ein Netzwerk. Es gibt zwei Arten von Scheitelpunkten

        - `Switch`
        - `Port`

Ich versuche, die Beziehung zwischen diesen beiden Arten von Scheitelpunkten herauszufinden.

g = TitanFactory.open("/tmp/cassandra.titan")

Um die Liste der Scheitelpunkte jedes Typs anzuzeigen

$ g.V('type', 'switch') 
==>v[228]
==>v[108]
==>v[124]
==>v[92]
==>v[156]
==>v[140]

$ g.V('type', 'port')

==>v[160]
==>v[120152]
==>v[164]
==>v[120156]
==>v[560104]
==>v[680020]
==>v[680040]
==>v[112]
==>v[120164]
==>v[560112]
==>v[680012]
==>v[680004]
==>v[144]
==>v[680032]
==>v[236]
==>v[100]
==>v[560128]
==>v[128]
==>v[680028]
==>v[232]
==>v[96]

Um die Beziehung zwischen dem Switch und dem Port zu ermitteln.

g.v(108).out         
==>v[560104]
==>v[680004]
==>v[112]

Was ist das für ein „Out“?Soweit ich weiß, gibt es einen nach außen gerichteten Pfeil, der vom Schalter aus zeigt und durch den Scheitelpunkt dargestellt wird 108 zu den durch Eckpunkte dargestellten Ports 560104 680004 Und 112

Was ist das in Und out?Ist es etwas ganz Besonderes für Graphdatenbanken?Und was ist eine Beschriftung in einer Diagrammdatenbank?Sind in Und out Etiketten?

War es hilfreich?

Lösung

Die Verwendung von in Und out beschreibt die Richtung der Kante, die von einem Scheitelpunkt zum anderen verläuft.In Ihrem Fall haben Sie Folgendes:

switch --> port

Wenn Sie schreiben:

g.v(108).out

Sie sagen Gremlin, dass er den Scheitelpunkt finden soll 108, und gehen Sie dann an den Kanten dieses Punktes entlang out oder weg davon.Vielleicht denken Sie auch darüber nach out als würde man vom Ende des Pfeils ausgehen und bis zur Spitze gehen.Angesichts Ihres Schemas führen diese zu „Ports“.

Ähnlich, in bedeutet einfach, dass Gremlin an den Rändern dieses Punktes entlanggeht in zum Scheitelpunkt.Vielleicht denken Sie auch darüber nach in als würde man von der Spitze des Pfeils ausgehen und zum Schwanz laufen.In Anbetracht Ihres Schemas verfügen die Schalter über Nein in Kanten und werden daher immer keine Ergebnisse zurückgeben.Wenn Sie jedoch an einem „Backbord“-Scheitelpunkt beginnen und ihn durchqueren würden in:

g.v(560104).in

Sie würden zumindest den Scheitelpunkt zurückbekommen 108 da der Scheitelpunkt „560104“ mindestens eine Kante hat, auf die ein Pfeil zeigt (sofern ich über Ihre Beispieldaten weiß).

Das haben Sie inzwischen herausgefunden in Und out sind „Anweisungen“ und keine „Beschriftungen“.Ein Etikett hat einen anderen Zweck;es kategorisiert eine Kante.Beispielsweise könnten Sie das folgende Schema haben:

switch --connectsTo--> port
company --manufactures--> switch
switch --locatedIn--> rack

Mit anderen Worten: Sie verfügen möglicherweise über drei Kantenbeschriftungen, die unterschiedliche Beziehungen zwischen einem „Schalter“ und anderen Teilen Ihres Schemas darstellen.Auf diese Weise können Ihre Anfragen besser beschreiben, was Sie wollen.Angesichts Ihres vorherigen Beispiels und dieses überarbeiteten Schemas müssten Sie Folgendes schreiben, um das gleiche Ergebnis zu erhalten, das Sie ursprünglich gezeigt haben:

g.v(108).out("connectsTo")         
==>v[560104]
==>v[680004]
==>v[112]

Diagrammdatenbanken nutzen diese Beschriftungen normalerweise, um die Leistung von Abfragen zu verbessern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top