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
Próbuję modelować topologię sieci przy użyciuTitan Graph DB. Chcę programować Titan Graph DB z mojego programu python. Używam do tego pakietu żarówek. Tworzę trzy typy wierzchołków - przełącznik - Port - urządzenie
Korzystam z poniższych funkcji, aby utworzyć unikalne wierzchołki, jeśli jeszcze nie istnieją.
self.g.vertices.index.get_unique( "dpid", dpid_str)
self.g.vertices.index.get_unique( "port_id", port_id_str)
self.g.vertices.index.get_unique( "dl_addr", dl_addr_str)
Tworzę krawędzie między powiązanymi wierzchołkami w następujący sposób.
self.g.edges.create(switch_vertex,"out",port_vertex)
Jednak jeśli ta funkcja jest wywoływana dwukrotnie, tworzy duplikat już istniejących krawędzi. Czy istnieje funkcja analogiczna do get_or_create () dla krawędzi, dzięki czemu mogę uniknąć duplikacji.?
Odpowiedzi:
2 dla odpowiedzi № 1Ogólnie wykresy zezwalają na powielanie krawędzi między wierzchołkami, ponieważ definicja powielonej krawędzi jest niejednoznaczna i specyficzna dla aplikacji.
Na przykład, czy krawędź jest duplikatem opartym na etykiecie, kierunku lub kombinacji właściwości?
Jednak, Titan 0.5 wprowadzono Multiplicity.SIMPLE
ograniczenie, które umożliwia zdefiniowanie unikalne krawędzie między parą wierzchołków.
Widzieć MatthiasOgłoszenie Titan 0.5:
Ta nowa funkcja nie jest jeszcze udokumentowana, ale zespół Titan jest w trakcie aktualizacji dokumentacji do Titan 0.5, więc wkrótce zostanie to udokumentowane.
Oglądaj Przegląd definicji typów strona z aktualizacjami:
Zobacz także sekcję ograniczenia liczności: