2

Cassandra で TinkerPop 3 と Titan 0.5 を使用する Java Enterprise 1.7 プロジェクトをセットアップしています。

一般的な考え方は次のとおりです。

  1. Titan 0.5 を実行する専用データベース サーバー、
  2. ティンカーポップ3どこか
  3. データベース サーバーから分離された Java EE 7 アプリケーションを実行するアプリケーション サーバー。

未解決の質問がたくさんあります。ベスト プラクティス提案を求めたいと思います。

  1. Tinkerpop 3 はどこに滞在する必要がありますか? アプリケーションサーバーまたはデータベースサーバーで?
  2. ティンカーポップはどのようにタイタンと通信しますか?
  3. Tinkerpop with Titan のこのような環境に最適な構成は何ですか?
  4. Java Enterprise アプリケーションはどのように Tinkerpop と通信する必要がありますか?
  5. Tinkerpop API を Java EE と統合するにはどうすればよいですか? 同時に複数のユーザーと、一般的なエンタープライズ環境の問題 (キャッシュ、トランザクション、データベースへの複数の呼び出しなど) に注意してください。
  6. プロジェクトのセットアップ例はありますか?

この基本構成は、最終的に他のプロジェクトの準備が整った github や bitbucket に配置されます。

4

1 に答える 1

5

Titan はデータベースのようなものですが、GraphDB ドライバーのようなものでもあります。これは、選択した構成に関係なく、Titan が別の DB をストレージ バックエンドとして使用するためです。現在のオプションは、BerkeleyDB、HBase、および Cassandra です。このページでは、Cassandra のシステム アーキテクチャ オプションについて説明します。

Java Web アプリケーションにリモート サーバー モードを使用しています。Cassandra を個別に実行し、各アプリケーション サーバーで Titan を使用して、thrift 経由で Cassandra と通信します (Titan は astyanax もサポートしています)。単一の TitanGraph インスタンスを作成し、グラフへのアクセスが必要な任意のサービス Bean に (ファクトリ Bean ラッパーを介して) 挿入します。

TitanGraph は、トランザクション レベルと DB レベルの両方のキャッシングを処理します。これは構成可能です。

TitanGraph は同時操作を処理します。重要なのは、取引を正しく行うことです。おそらく、リクエストと 1:1 でトランザクションを存在させることから始めることができます。読み取り操作もトランザクションで発生することに注意してください (これは、初心者を混乱させることがあります)。

私はできる限り Blueprints API (TinkerPop) に固執しますが、通常は Titan 固有のこと (通常は検索に関連するもの) を行う必要があります。私は通常、次の目的で TinkerPop を使用します。

(これは単なる例の短いリストですが、私がほぼ常に行っていることです。)

公開プロジェクトの例はありませんが、本当にそうすべきです。たぶん、今週末は何かを吐き出す時間があるでしょう。

Spring、JAX-RS、および Jersey を使用するWeb アプリの例を次に示します。

于 2014-09-05T12:11:42.217 に答える