7

Java で Tinkerpop3 をクライアントとして使用して、既に実行されている TitanDB サーバーから Graph オブジェクトを取得しようとしています (サーバーを作成したくありません)。

言い換えれば、私はそのような機能を実装しようとしています:

public Graph obtainGraph(String serverIp, String graphName);

私は次のようにしようとしていました: AWS Lambda + Tinkerpop/Gremlin + EC2 上の TitanDB + クラウド内の AWS DynamoDB

しかし、私が理解しているように、TitanFactory.open()サーバーを起動しますが、これはしたくありません-既存のサーバーに接続したいだけです。

ドキュメンテーションやインターネットのほとんどの資料では、例としてインメモリ グラフが使用されていますが、次の方法を示すグラフが見つかりません。

  • 新しいグラフを作成してリモート サーバーに保存する

  • リモート サーバーから既存のグラフを取得する

  • そのようなリモートグラフを更新するため、エッジを追加/削除した後、変更をコミットします

  • グラフ全体を削除

上記のことは、Gremlin 言語 (文字列) ではなく、Java API (TinkerpopBlueprins) を介して行いたいと考えています。この男は私が必要としているものに近づいています: Add vertices to TitanDB Graph in Java です が、彼のメソッドは既にGraph引数として取ります。

インターネットの多くの場所で、GraphFactory.open() がプロパティ ファイルへのパスを取得することを見てきましたが、特に TitanDB 関連データでは、そのようなファイルの内容の例を見たことがないので、Configurationオブジェクトを使用することをお勧めします。

Graph graph = GraphFactory.open(new BaseConfiguration())

gremlin.graph プロパティはありません。

Configuration configuration = new BaseConfiguration();
configuration.setProperty("gremlin.graph", "titan");

Graph graph = GraphFactory.open(configuration);

[titan]がGraphFactory見つからないと表示されます - jar がクラスパスにあることを確認してください

代わりに、列挙型と定数を使用して静的に型指定されたビルダーはありMap<String, Object>ますか?提供する必要があるプロパティとその型を教えてくれますか? Tinkerpop3 を使用してクライアントとしてリモートの TitanDB サーバーに接続するオープン ソース プロジェクトはありますか?

外部構成を使用したメモリ内ではなく、完全に機能する例を見たいと思います。

4

1 に答える 1

7

以下は、実行中の Titan サーバーに接続する Titan ドライバー プログラムの例です。https://github.com/pluradj/titan-tp3-driver-example ご指摘のとおり、これにより Gremlin が文字列としてリモートの Titan サーバーに渡されます。

Java API を直接使用するためにこれを行いたくない場合は、 を使用TitanFactory.open()してグラフに直接接続する必要があります。グラフ API 呼び出しを実行できるTitanGraphTitanFactory.open()インスタンスを作成します。Titan サーバーは起動しません。内部では、バックエンド ストレージとインデックスへのクライアント接続を作成します。

Titan Server を使用しない Titan Java プログラムについては、この例を参照できますhttps://github.com/pluradj/titan-tp3-java-example

これは、プロパティ ファイルを使用して構成するか (ここでは、Cassandra と Elasticsearch を使用した構成例Configurationを示します)、またはコードを介してオブジェクトを構築します (基本的に、プロパティ ファイルにあるのと同じキーと値のペアを設定します)。

  • 最初の接続前にグラフが存在しない場合、Titan は Cassandra にグラフ キースペースを作成し、Elasticsearch にインデックスを作成します。

  • これらはそれぞれ Cassandra クラスターと Elasticsearch クラスターであるため、storage.hostnameとを書き留めます。これらは基本的に「グラフ サーバー」です。別の Titan サーバーを実行する必要はありません。index.search.hostname

  • Titan には、バックエンド ストレージからグラフを削除するための API がありません。グラフ全体を削除するには、 Java クライアント ドライバーを介して Cassandra に接続し、API を実行してキースペースを削除する必要があります。同様に、 Indices APIを介して Elasticsearch に接続し、インデックスを削除する必要があります。

于 2016-08-03T15:20:43.330 に答える