我正在设计一个图,并看到几个顶点将具有类似标签的示例,例如“用户”等。当知道其唯一值时,可以将其分配给顶点的 id,并将其查找为:
g.V('person').has('id','unique-value'). ...
Run Code Online (Sandbox Code Playgroud)
或者将该唯一值分配为标签,并以这种方式引用它。
g.V('unique-value'). ...
Run Code Online (Sandbox Code Playgroud)
是否有特殊原因不使用唯一值(本质上是 id)作为标签,例如性能?什么是最好的策略?
您的问题和您的 Gremlin 示例并不完全一致。我认为你的意思是比较:
g.V().hasLabel('person').has(T.id,'unique-value')
Run Code Online (Sandbox Code Playgroud)
和
g.V('unique-value')
Run Code Online (Sandbox Code Playgroud)
请注意我在第一条 Gremlin 声明中的更正。V()不接受顶点标签作为参数——它只能接受一个顶点id或一个Vertex对象。此外,实际顶点标识符必须由T.idand not引用'id',后者是对名为“id”的用户定义属性的引用。T.id是你从g.V().id(). 我们常T.id说的只是id,我将继续这样做。
随着这一点的理顺,hasLabel('person')如果你有id手,就没有必要做,所以上面的两个例子返回相同的值,我认为大多数图形数据库可能会优化掉标签过滤器,只使用id它们进行查找,所以我不会想象你会看到性能上的差异,但出于可读性目的,我会坚持只使用V('unique-value').
您的问题专门询问了使用唯一标签作为识别顶点的方法,所以我也会解决这个问题。标签并不用于图元素的唯一标识。它旨在对元素组进行分类。除了那个约定之外,我认为还有很多技术原因不这样做。某些图表对您可以拥有的标签数量有限制,因此这可能是一个问题,具体取决于您的图表提供商。这样做至少会降低代码的可移植性。我认为这会影响性能,因为label查找不会像查找一样快id(尤其是当您按比例放大图形时)。
| 归档时间: |
|
| 查看次数: |
1512 次 |
| 最近记录: |