2014-04-21 3 views
2

Titan Graph DB를 사용하여 네트워크 토폴로지를 모델링하려고합니다. 파이썬 응용 프로그램에서 토폴로지를 지정하려고합니다.Python의 Titan Graph 데이터베이스 사용

나는 땜장이 프레임 annotation을 사용하는 자바 인터페이스 파일을 가지고있다. 예제 구조는 아래에 주어진다.

public interface IDeviceObject extends IBaseObject { 

      @JsonProperty("mac") 
      @Property("dl_addr") 
      public String getMACAddress(); 
      @Property("dl_addr") 
      public void setMACAddress(String macaddr); 

      @JsonProperty("ipv4") 
      @Property("nw_addr") 
      public String getIPAddress(); 
      @Property("nw_addr") 
      public void setIPAddress(String ipaddr); 

      @JsonIgnore 
      @Adjacency(label="host",direction = Direction.IN) 
      public Iterable<IPortObject> getAttachedPorts(); 

      @JsonIgnore 
      @Adjacency(label="host",direction=Direction.IN) 
      public void setHostPort(final IPortObject port); 

      @JsonIgnore 
      @Adjacency(label="host",direction=Direction.IN) 
      public void removeHostPort(final IPortObject port); 

      @JsonIgnore 
      @GremlinGroovy("it.in('host').in('on')") 
      public Iterable<ISwitchObject> getSwitch(); 
    } 


PYTHON OBJECTS ----> BULBS ----> REXTER ---> Titan Graph DB ---> Cassandra DB 

(1) 전구 그래프 (2) Rexter (3) 타이탄 JSON 다시 그래프로 변환 JSON 그래프로 변환 파이썬 객체 변환 ?? (4) 또한 cassandra store에 씁니다.

나는 아주 둥근 방식으로 일을하고있는 것처럼 보입니다. 누군가 위와 같이 잘못되었다고 지적 할 수 있다면 좋을 것입니다. 의

답변

4

다이어그램 :

PYTHON OBJECTS ----> BULBS ----> Rexster ---> Titan Graph DB ---> Cassandra DB 

는 포함 된 추상화 생각하는 방법에 따라 다소 올바른 같습니다.

PYTHON OBJECTS ----> BULBS ----> Rexster/Titan ---> Cassandra DB 

Rexster는 기본적으로 전구로 소비하기 위해 REST를 통해 노출하는 Titan 인스턴스를 내장합니다. 이 부분은 꽤 괜찮되지 않습니다 :

  1. 전구는 그래프에 파이썬 객체로 변환
  2. Rexter는 JSON은 그래프로 다시 변환 JSON
  3. 타이탄에 그래프로 변환? 또한

내가 말할 것 카산드라 저장소에 기록 :

  1. 타이탄 카산드라에 쓰는 Blueprints 구현
  2. Rexster는 청사진 구현을 호스팅하고 그 API의 요소를 노출
  3. (및 Gremlin) REST 위로 JSON을 사용하여
  4. 전구는 Rexster를 통해 Python 개체 매핑 계층입니다.

하루가 끝나면 Python에서 Titan으로 직접 연결되지 않습니다. Titan은 JVM 기반의 Blueprints 인터페이스를 가지고 있으며 Rexster를 비 JVM 언어로 사용할 수있는 방법으로 사용합니다.

+0

이제 Gremlin은 무엇입니까? 위의 계획에 어떻게 맞습니까? – liv2hak

+3

Gremlin은 TinkerPop (http://tinkerpop.com) 스택의 그래프 쿼리 언어입니다. 전구는 Rexster와 통신 할 때 기본적으로 Gremlin을 사용합니다. –

+3

전구 개체는 파이썬 개체이므로 Bulbs/Python -> Rexster/Titan -> Cassandra로 생각하면됩니다. Gremlin은 그래프 쿼리 언어 (그래프의 경우 SQL과 비슷 함)이며 RDBMS에서 쿼리를 실행하기 위해 SQL을 사용하는 것과 마찬가지로 Bulb를 사용하여 Titan Server (Rexster)에서 Gremlin 쿼리를 실행합니다. – espeed