首页 文章

Gremlin Vertex id vs label:优点?

提问于
浏览
0

我正在设计一个图形,并查看几个顶点将具有相似标签的示例,例如“user”等 . 当知道其唯一值时,可以将其分配给顶点的id,并将其查找为:

g.V('person').has('id','unique-value'). ...

或者将该唯一值指定为标签,并以此方式引用它 .

g.V('unique-value'). ...

是否有特殊原因不使用唯一值(基本上是id)作为标签,例如性能?对此最好的策略是什么?

1 回答

  • 2

    你的问题和你的Gremlin例子并不完全一致 . 我认为你的意思是比较:

    g.V().hasLabel('person').has(T.id,'unique-value')
    

    g.V('unique-value')
    

    请注意我在第一个Gremlin声明中的更正 . V() 不将顶点标签作为参数 - 它只能采用顶点 idVertex 对象 . 此外,实际的顶点标识符必须由 T.id 而不是 'id' 引用,后者是对名为"id"的用户定义属性的引用 . T.id 是您从 g.V().id() 返回的内容 . 我们经常将 T.id 称为 id ,我将继续这样做 .

    如果你有 id 方便,那就没有必要做 hasLabel('person') 所以上面的两个例子返回相同的值,我认为大多数图形数据库可能会优化掉标签过滤器而只需使用 id 他们的查找所以我不会看到性能上的差异,但出于可读性目的,我坚持只使用 V('unique-value') .

    您的问题特别询问使用唯一标签作为识别顶点的方法,因此我也将解决这个问题 . 标签不用于图元素的唯一标识 . 它旨在对元素组进行分类 . 除了这个惯例,我认为有许多技术原因不这样做 . 某些图表对您可以拥有的标签数量有限制,因此可能会出现问题,具体取决于您的图表提供程序 . 至少,通过这样做可以降低代码的可移植性 . 我认为它会影响性能,因为 label 查找不会像 id 查找一样快(特别是当您缩放图表时) .

相关问题