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

时间:2011-11-15 20:18:39

标签: graph neo4j

在查看Tinkerpop-Blueprints API时,使用一种类型的顶点非常简单,但如何存储两种?例如。用户和他们的兴趣?

我如何通过id获得顶点?我的意思是,可能有一个名为'timetabling'的用户以及兴趣'timetabling' - 如何处理该ID冲突?

-

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


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

1 个答案:

答案 0 :(得分: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是一种非特定于域的检索顶点/边的方法。通常,最好使用域模型中的属性进行索引。

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

http://markorodriguez.com