2016-05-03 23 views
0

我在使用PartitionStrategy和titanDb和DynamoDb作爲後端時遇到問題。我使用dynamoDb作爲使用dynamodb-titan-storage-backend插件的本地後端。下面是一個簡單的測試情況下,我已經寫在Java:將titanDb和DynamoDb作爲後端的PartitionStrategy不添加頂點到圖形

import com.thinkaurelius.titan.core.TitanEdge; 
import com.thinkaurelius.titan.core.TitanFactory; 
import com.thinkaurelius.titan.core.TitanGraph; 
import com.thinkaurelius.titan.core.TitanGraphQuery; 
import com.thinkaurelius.titan.core.TitanTransaction; 
import com.thinkaurelius.titan.core.TitanVertex; 
import org.apache.commons.configuration.BaseConfiguration; 
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; 
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; 
import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategy; 
import org.apache.tinkerpop.gremlin.structure.Direction; 
import org.apache.tinkerpop.gremlin.structure.Vertex; 
import org.apache.tinkerpop.gremlin.structure.VertexProperty; 
import org.junit.Before; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import java.util.Iterator; 

public class TitanTest { 

    TitanGraph titanGraph; 

    @Before 
    public void setUp() { 
     BaseConfiguration conf = new BaseConfiguration(); 
     conf.setProperty("storage.backend", "com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager"); 
     conf.setProperty("storage.dynamodb.client.endpoint", "http://localhost:4567"); 
     titanGraph = TitanFactory.open(conf); 
    } 

    @Test 
    public void testAddVertexToTitanGraph(){ 
     titanGraph.addVertex("name", "Bob", "age", "4.6x10^9"); 
     titanGraph.traversal().V().forEachRemaining(it -> { 
     System.out.println("Found " + it.value("name")); 
     }); 
    } 

    @Test 
    public void addVertexViaPartitionStrategy() { 
     PartitionStrategy partitionStrategy = PartitionStrategy.build().partitionKey("_partition").writePartition("a").addReadPartition("a").create(); 
     GraphTraversalSource graphTraversalSource = GraphTraversalSource.build().with(partitionStrategy).create(titanGraph); 
     GraphTraversal<Vertex, Vertex> marko = graphTraversalSource.addV("name", "marko", "age", 29); 
     graphTraversalSource.V().forEachRemaining(it -> { 
     System.out.println("name:" + it.value("name").toString()); 
     }); 

    } 
} 

不過,我似乎並沒有得到任何東西打印出來,當我運行addVertexViaPartitionStrategy測試用例。我已經按照這裏的例子: http://tinkerpop.apache.org/docs/3.0.1-incubating/#_partitionstrategy

我能夠讀取和寫入數據庫,看測試testAddVertexToTitanGraph,只是無法創建一個頂點時,使用分區stratergy。

回答

0

我剛剛遇到了與Titan 1.0.0和cassandra後端相同的問題。顯然你必須獲取遍歷的結果才能添加頂點。

所以此工程:

GraphTraversalSource gA = GraphTraversalSource.build().with(partitionStrategy).create(g); 
    GraphTraversal<Vertex, Vertex> addV = gA.addV(); 
    Vertex v = addV.next(); 
    System.out.println("v: " + v); 

    GraphTraversal<Vertex, Long> count = gA.V().count(); 
    long amt = count.next(); 
    System.out.println("Partition vertex count: " + amt);