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 № 1Aby 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