2014-09-04 60 views
2

我正在建立一個使用TinkerPop 3和Titan 0.5與Cassandra的Java Enterprise 1.7項目。Tinkerpop - Titan/Cassandra項目設置

的一般想法是有:

  1. 運行泰坦0.5的專用數據庫服務器,
  2. TinkerPop有關3 某處
  3. 運行從分離的一個Java EE 7應用的應用服務器數據庫服務器

我有許多懸而未決的問題,我想問的的最佳實踐建議例子

  1. Tinkerpop 3應該在哪裏停留?在應用程序服務器還是在數據庫服務器中?
  2. Tinkerpop如何與泰坦溝通?
  3. Tinkerpop與泰坦這種環境的最佳配置是什麼?
  4. Java Enterprise應用程序如何與Tinkerpop進行通信?
  5. Tinkerpop API應該如何與Java EE集成?請記住多個用戶在同一時間和一般企業環境問題(緩存,交易,多次調用數據庫等)
  6. 你有任何項目設置的例子嗎?

這個基本配置最終將被放入github或者bitbucket中,準備好用於其他項目。

回答

4

泰坦有點像數據庫,但也有點像GraphDB驅動程序。我這樣說是因爲不管你選擇什麼配置,泰坦將使用另一個數據庫作爲存儲後端。目前的選項是BerkeleyDB,HBase和Cassandra。 This page描述了Cassandra的系統架構選項。

我使用remote server mode爲java網絡應用程序。我分別運行Cassandra,並且在每個應用程序服務器中使用Titan通過節儉與Cassandra進行通信(Titan也支持astyanax)。我創建一個單一的TitanGraph實例並將其注入(通過工廠bean包裝)到任何需要訪問該圖的服務Bean中。

TitanGraph將負責事務級別和數據庫級別的緩存。這是可配置的。

TitanGraph將處理併發操作。關鍵是讓你的交易正確。您可能可以通過使事務以1:1 w/requests的方式開始。請記住,讀操作也發生在一個事務中(這有時會讓新人感到困惑)。

我儘可能堅持使用Blueprints API(TinkerPop),但通常我需要做一些Titan特定的事情 - 通常與搜索有關。我通常使用TinkerPop:

(這就是例子只是一個短名單,但它的東西,我幾乎總是這樣。)

我沒有一個公共項目的例子,但我真的應該。也許我會有時間在這個週末拋出一些東西。

Here is an example web app使用Spring,JAX-RS和Jersey。

+0

真正有用的信息! 我希望你會找到時間分享一個公共項目的例子! – 2014-09-05 12:24:52

+1

只有一件事要補充:Titan 0.5與TP3不兼容,只與TP2兼容。泰坦0.9(下一版本)將與TP3合作。 – 2014-09-05 16:06:30

+0

@AndreaT我添加了一個鏈接到titan-web-example。 – 2014-09-08 22:55:15