Graph 如何使用Tinkerpop/Blueprints图形API存储和检索不同类型的顶点?

Graph 如何使用Tinkerpop/Blueprints图形API存储和检索不同类型的顶点?,graph,neo4j,Graph,Neo4j,当查看顶点时,使用一种类型的顶点是非常直接的,但是如何存储两种类型的顶点呢?例如,用户及其兴趣 如何通过id获得顶点?我的意思是,可能会有一个名为“timetabling”的用户和一个名为“timetabling”的用户——如何处理id冲突 - 我知道第一个问题可以通过为type属性引入索引来解决,第二个问题可以自动生成id并为name属性创建另一个索引但是为什么我需要顶点id?例如,对于内存中的,所有顶点都有一个HashMap,这将是无用的,并且会浪费内存!(我可以通过将类型和名称组合为id来

当查看顶点时,使用一种类型的顶点是非常直接的,但是如何存储两种类型的顶点呢?例如,用户及其兴趣

如何通过id获得顶点?我的意思是,可能会有一个名为“timetabling”的用户和一个名为“timetabling”的用户——如何处理id冲突

-

我知道第一个问题可以通过为type属性引入索引来解决,第二个问题可以自动生成id并为name属性创建另一个索引但是为什么我需要顶点id?例如,对于内存中的,所有顶点都有一个HashMap,这将是无用的,并且会浪费内存!(我可以通过将类型和名称组合为id来解决不同的问题,但如果列出所有用户,则效率低下。)



嗯,好的。我只是将顶点用于组合id(名称+类型)和单独的类型索引。更好的解决方案?

一般来说,最好依靠底层图形数据库的自动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是检索顶点/边的非特定于域的方式。通常,最好使用域模型中的属性进行索引

希望这能回答你的问题, 马尔科