/ / Bulbs: Tworzenie krawędzi „in” i „out” między dwoma wierzchołkami w TitanDB - Cassandra, Titan, żarówki

Żarówki: Tworzenie krawędzi "w" i "na zewnątrz" między dwoma wierzchołkami w TitanDB - kassandra, tytan, cebulki

Używam TitanGraphDB + Cassandra. Zaczynam Tytana w następujący sposób

cd titan-cassandra-0.3.1
bin/titan.sh config/titan-server-rexster.xml config/titan-server-cassandra.properties

Mam powłokę Rexster, której mogę używać do komunikowania się z Tytanem + Cassandrą powyżej.

cd rexster-console-2.3.0
bin/rexster-console.sh

Chcę zaprogramować Titan Graph DB z mojego programu python. Używam do tego pakietu żarówek.

 from bulbs.titan import Graph
g = Graph()


vertex1  = g.vertices.get_or_create("dpid",dpid_str,{"state":"active","dpid":dpid_str,"type":"switch"}))
vertex2  = g.vertices.get_or_create("desc",desc,{"desc":desc,"port_id":port_id,"state":state,"port_state":port_state,"number":number,"type":"port"}))

Z przykładów rozumiem, jak tworzyć krawędzie między wierzchołkami, jak poniżej

 g.edges.create(vertex1,"out",vertex2)

Załóżmy jednak, że nie mam odniesienia do wierzchołków w moim programie.

Chcę odzyskać wierzchołek 1 za pomocą jego klucza „dpid” ORAZ Chcę odzyskać wierzchołek 2 za pomocą jego klucza „desc”

A następnie za pomocą pobranych wartości chcę utworzyć krawędź. Jak to zrobić?

Odpowiedzi:

1 dla odpowiedzi № 1

Aby pobrać wierzchołek za pomocą indeksowanej właściwości (w przeciwieństwie do jej identyfikatora bazy danych), możesz użyć jednej z metod indeksu wbudowanych w żarówki:

>>> # returns an iterator (can return more than 1)
>>> vertices = g.vertices.index.lookup("dpid", dpid_str)
>>> vertex1 = vertices.next()

>>> # returns 1 vertex or None (errors if more than 1)
>>> vertex2 = g.vertices.index.get_unique( "dpid", dpid_str)

Aby utworzyć krawędź, po prostu wykonaj ...

>>> g.edges.create(vertex1, "out", vertex2)

UWAGA: Nie musisz oznaczać krawędzi „out” („out” jest sugerowany przez kierunek krawędzi wychodzącej z wierzchołka 1 i do wierzchołka 2). Powinieneś rozważyć użycie bardziej opisowej etykiety.

Widzieć...

Dokumentacja indeksu Rexter:

index.lookup () https://github.com/espeed/bulbs/blob/afa28ccbacd2fb92e0039800090b8aa8bf2c6813/bulbs/titan/index.py#L251

index.get_unique () https://github.com/espeed/bulbs/blob/afa28ccbacd2fb92e0039800090b8aa8bf2c6813/bulbs/titan/index.py#L274