2011-11-15 6 views
1

Tinkerpop-Blueprints APIを見ると、1つのタイプの頂点を使用するのはかなり単純ですが、どのように2つを保存できますか?例えば。ユーザーとその関心?Tinkerpop/BlueprintsグラフAPIを使用してさまざまな種類の頂点を格納および取得する方法は?

どうすればIDで頂点を取得できますか?つまり、「タイムテーブル」という名前のユーザーだけでなく、利害関係の「時間割設定」 - そのIDの競合を処理する方法がありますか?

-

Iは、第一の問題は、タイププロパティおよびIは、オートIDを生成し、名前プロパティの別のインデックスを作成することができ第二の問題の指標を導入介して解決することができることを知っています。 BUTなぜ頂点IDが必要なのでしょうか?例えば。メモリ内には、すべての頂点のためのHashMapがあります。これは無駄でメモリを浪費します! (私はIDとしてタイプと名前を組み合わせることを通じて、異なる問題を解決することができますが、それは非効率的な私は、例えば、すべてのユーザーをリストします。)


Hmmh、[OK]をクリックします。私はちょうど組み合わせid(name + type)の頂点と型のための別個のインデックスを使用しています。より良いソリューション?

答えて

3

一般に、基礎となるグラフデータベースの自動IDシステム(たとえばNeo4j、InfiniteGraph、OrientDBなど)に頼るのが最善です。次のようにあなたが欲しい情報を追加するする方法は次のとおりです。要するに

Vertex v = graph.addVertex(null) 
v.setProperty("name","timetabling") 

Vertex marko = graph.addVertex(null) 
graph.addEdge(null, marko, v, "hasInterest") 
Verte aType = graph.addVertex(null) 
graph.addEdge(null, aType, v, "hasType") 

、頂点/エッジのIDは、頂点/エッジを取得する非ドメイン固有の方法です。一般に、インデックス作成にはドメインモデルのプロパティを使用することをお勧めします。

あなたの質問にお答えするのは、 Markoです。

http://markorodriguez.com

関連する問題