3

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 オブジェクトをグラフに変換します (2) Rexter はグラフを JSON に変換します (3) Titan は JSON をグラフに変換しますか?? (4) また、cassandra ストアに書き込みます

私は非常にラウンドアバウトな方法で物事を行っているように見えますが、何かが欠けていますか? 誰かが上記の何が間違っているかを指摘できれば素晴らしいと思いますか?

4

1 に答える 1

4

あなたの図:

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

関連する抽象化をどのように考えたいかによって、多かれ少なかれ正しく見えます。次のように定義することもできます。

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

Rexster は基本的に、Bulbs による消費のために REST 経由で公開する Titan インスタンスを埋め込みます。この部分はあまり正しくありません:

  1. BULBS は Python オブジェクトをグラフに変換します
  2. Rexter はグラフを JSON に変換します
  3. Titan は JSON をグラフに変換しますか??
  4. また、cassandraストアにも書き込みます

私はこう言います:

  1. Titan は、 Cassandra に書き込むブループリントの実装です。
  2. Rexster はブループリントの実装をホストし、JSON を使用して REST 経由でその API (およびGremlin ) の要素を公開します
  3. Bulbs は、Rexster 上の Python オブジェクト マッピング レイヤーです。

結局のところ、Python から Titan への直接接続はありません。Titan には JVM ベースのブループリント インターフェースがあり、JVM 以外の言語と対話する方法として Rexster を使用します。

于 2014-04-21T10:56:03.400 に答える