我正在尝试使用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商店
看起来我正在以一种非常圆的方式做事,我错过了什么?如果有人能指出上述内容有问题会很棒吗?
答案 0 :(得分:4)
您的图表:
PYTHON OBJECTS ----> BULBS ----> Rexster ---> Titan Graph DB ---> Cassandra DB
根据您想要如何考虑所涉及的抽象,看起来或多或少是正确的。您也可以将其定义为:
PYTHON OBJECTS ----> BULBS ----> Rexster/Titan ---> Cassandra DB
由于Rexster基本上嵌入了一个Titan实例,它通过REST公开以供Bulbs使用。这部分不太正确:
我会说:
在一天结束时,Python与Titan没有直接联系。 Titan具有基于JVM的Blueprints接口,并使用Rexster作为非JVM语言与之交互的方式。