2013-04-21 84 views
1

我是圖形數據庫和Titan的新手。我正在將Titan嵌入到Clojure應用程序中。當應用程序啓動時,它會創建一個支持BerkeleyDB的Titan商店。在Titan中創建版本節點

我想知道/做3兩件事:

  1. 這是數據庫中的新?如果是這樣,請創建版本爲0的版本節點。運行遷移過程以將「模式」引入最新版本。
  2. 如果沒有,它是否有版本節點?如果不是,則拋出異常。
  3. 如果數據庫是預先存在的並且具有版本節點,請運行遷移過程以使「架構」保持最新狀態。

我如何在泰坦做到這一點?對此有最佳做法嗎?

編輯:

OK,就進一步審查,我想用一個硬編碼vertexid是最有意義的。有一個TitanTransaction.containsVertex(long vertexid)。這種方法有什麼缺點嗎?我想我不知道vertexids是如何分配的以及它們的保留範圍是什麼,所以這種氣味很危險。我是圖DB的新手,但我認爲在Neo4j中建議從根節點創建一個參考節點。但是Titan不鼓勵根節點的使用,因爲它變成了超節點。 IDK ...

回答

2

1-我不知道是否有方法通過泰坦來查看數據庫是否是新的。在啓動Titan之前,您可以檢查BerkeleyDB的存儲目錄是否存在。

2/3-可能你最好的選擇是一個帶有索引屬性「版本」的硬編碼頂點。在開始時在「版本」的(幾乎空的)索引內查找,並根據這些結果進行邏輯處理。

另外,您可能對Titanium [0]感興趣。我們正在準備在接下來的一週內發佈一個大版本,以使它更有用[1]。

[0] http://titanium.clojurewerkz.org/

[1] http://blog.clojurewerkz.org/blog/2013/04/17/whats-going-on-with-titanium/

+0

我最後用的 「元數據型」 索引屬性去。我對Titanium感興趣,但最終決定不使用它,因爲我無法弄清楚如何處理類型。 – alyssackwan 2013-04-23 02:37:53