使用Python的Titan Graph数据库

时间:2014-04-21 03:24:08

标签: python cassandra distributed-computing titan bulbs

我正在尝试使用Titan Graph DB建模网络拓扑。我想从python应用程序中指定拓扑。

我有一个使用tinkertop框架注释的java接口文件。下面给出了一个示例结构。

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)BULBS将python对象转换为Graphs (2)Rexter将Graphs转换为JSON (3)Titan将JSON转换回Graphs ?? (4)并写入cassandra商店

看起来我正在以一种非常圆的方式做事,我错过了什么?如果有人能指出上述内容有问题会很棒吗?

1 个答案:

答案 0 :(得分:4)

您的图表:

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

根据您想要如何考虑所涉及的抽象,看起来或多或少是正确的。您也可以将其定义为:

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

由于Rexster基本上嵌入了一个Titan实例,它通过REST公开以供Bulbs使用。这部分不太正确:

  1. BULBS将python对象转换为Graphs
  2. Rexter将图表转换为JSON
  3. Titan将JSON转换回Graphs ??
  4. 还写信给cassandra商店
  5. 我会说:

    1. Titan是写入Cassandra的Blueprints实现
    2. Rexster使用JSON托管蓝图实现并通过REST公开该API的元素(和Gremlin
    3. 灯泡是Rexster上的Python对象映射层。
    4. 在一天结束时,Python与Titan没有直接联系。 Titan具有基于JVM的Blueprints接口,并使用Rexster作为非JVM语言与之交互的方式。