我正在设计一张图表,看到有些顶点会有相似的标签,比如“用户”等。当知道其唯一值时,可以将其分配给顶点的ID,并按以下方式查找:
g.V('person').has('id','unique-value'). ...
或者将该唯一值分配为标签,并以此方式引用它。
g.V('unique-value'). ...
为什么不使用唯一值(即ID)作为标签,例如性能方面的考虑?这种情况下最好的策略是什么?
我正在设计一张图表,看到有些顶点会有相似的标签,比如“用户”等。当知道其唯一值时,可以将其分配给顶点的ID,并按以下方式查找:
g.V('person').has('id','unique-value'). ...
g.V('unique-value'). ...
为什么不使用唯一值(即ID)作为标签,例如性能方面的考虑?这种情况下最好的策略是什么?
您的问题和您的 Gremlin 示例并不完全对齐。我认为您想进行比较的是:
g.V().hasLabel('person').has(T.id,'unique-value')
g.V('unique-value')
V()
不接受顶点标签作为参数,它只能接受顶点 id
或 Vertex
对象。此外,实际的顶点标识符必须由 T.id
引用,而不是 'id'
,后者是一个对名为“id”的用户定义属性的引用。 T.id
是从 g.V().id()
返回的内容。我们经常将 T.id
称为 id
,并且我将继续这样做。id
,那么就没有必要执行 hasLabel('person')
,因此上面两个示例将返回相同的值,我认为大多数图形数据库可能会优化掉标签过滤器,并仅使用 id
进行查找,因此我不认为您会看到性能差异,但出于可读性考虑,我建议只使用 V('unique-value')
。label
查找不会像 id
查找那样快(特别是当您将图形扩大时)。