2017-03-02 59 views
2

我想创建顶点和泰坦图形数据库的边缘(Titan1.0.0)创建顶点和边..问题与泰坦图形数据库

gremlin> graph = TitanFactory.open('titan-1.0.0-hadoop1/conf/titan-cassandra-es.properties') 

gremlin> t1 = graph.addVertex(label, "Testbed", "Name", "testbed1","Status","A","TId",101) 
==>v[1228816568] 

gremlin> r2= graph.addVertex(label, "Router", "RStatus","F","RId",1002, "TId", 101) 
==>v[3686424680] 

gremlin> t1.addEdge("tbConRtr", r2) 
==>e[kblqtz-kblsxk-d6vp-1oysvhk][1228816568-tbConRtr->3686424680] 

问题:

1)为什么这里返回的顶点数是不是序列,它是一些随机数?对于addEdge步也被一些随机值(kblqtz-kblsxk-d6vp-1oysvhk

e[kblqtz-kblsxk-d6vp-1oysvhk][1228816568-tbConRtr->3686424680] 

2)我想创建边缘我TId值应该是唯一的 我曾尝试以下,并得到错误信息:

gremlin> mgmt.buildIndex("TId",Vertex.class).addKey(TId).unique().buildCompositeIndex(); 
No such property: TId for class: groovysh_evaluate 

我如何在Titan数据库中创建独特的属性值?

请帮我解决这个问题。

回答

3
  1. 顶点标识和边缘标识由泰坦生成和分配。如果你想拥有自己的标识符,你应该定义一个属性并对其进行索引。
  2. 错误No such property: TId表示您正尝试使用尚未初始化的变量TId。试图索引之前,您应该定义顶点属性它

    gremlin> graph = TitanFactory.open('conf/titan-cassandra-es.properties') 
    ==>standardtitangraph[cassandrathrift:[127.0.0.1]] 
    gremlin> mgmt = graph.openManagement() 
    ==>com.t[email protected]4b97b3d2 
    gremlin> TId = mgmt.makePropertyKey("TId").dataType(Integer.class).cardinality(Cardinality.SINGLE).make() 
    ==>TId 
    gremlin> mgmt.buildIndex("TId",Vertex.class).addKey(TId).unique().buildCompositeIndex() 
    ==>TId 
    gremlin> mgmt.commit() 
    ==>null 
    gremlin> t1 = graph.addVertex(label, "Testbed", "Name", "testbed1","Status","A","TId",101) 
    ==>v[4200] 
    gremlin> r2= graph.addVertex(label, "Router", "RStatus","F","RId",1002, "TId", 101) 
    Adding this property for key [TId] and value [101] violates a uniqueness constraint [TId] 
    

请参阅泰坦文档上schema and data modelingindexing for better performance