在查看Tinkerpop-Blueprints API时,使用一种类型的顶点非常简单,但如何存储两种?例如。用户和他们的兴趣?
我如何通过id获得顶点?我的意思是,可能有一个名为'timetabling'的用户以及兴趣'timetabling' - 如何处理该ID冲突?
-
我知道第一个问题可以通过引入类型属性的索引来解决,对于第二个问题,我可以自动生成id并为name-property创建另一个索引。 但是为什么我需要顶点id呢?例如。对于内存中,所有顶点都有一个HashMap,没有用,浪费内存! (我可以通过将类型和名称组合为id来以不同的方式解决问题,但如果我列出所有用户,则效率会很低。)
答案 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是一种非特定于域的检索顶点/边的方法。通常,最好使用域模型中的属性进行索引。
希望能回答你的问题, 马尔科。