Graph 在图形数据库中使用标签而不是属性有什么好处?

Graph 在图形数据库中使用标签而不是属性有什么好处?,graph,neo4j,nosql,Graph,Neo4j,Nosql,我正在使用Neo4J学习图形数据库,我对节点进行分类的第一种方法是在所有节点中创建一个属性type 经过一些研究,我发现我可以使用标签对节点进行分类,但我没有发现使用标签来完成这项任务是否有好处 使用属性或标签有什么区别吗?主要区别在于属性是键值对。标签更像是一个标签(想想在Gmail中标记电子邮件) 标签是自索引的,在所有带有特定标签的节点上获得迭代器是一种廉价的操作 此外,标签直接与节点一起存储(除非每个节点使用过多标签)。相反,访问属性是第二次I/O(或缓存)访问。是, 标签是节点的分组机

我正在使用Neo4J学习图形数据库,我对节点进行分类的第一种方法是在所有节点中创建一个属性
type

经过一些研究,我发现我可以使用
标签
对节点进行分类,但我没有发现使用标签来完成这项任务是否有好处


使用属性或标签有什么区别吗?

主要区别在于属性是键值对。标签更像是一个标签(想想在Gmail中标记电子邮件)

标签是自索引的,在所有带有特定标签的节点上获得迭代器是一种廉价的操作

此外,标签直接与节点一起存储(除非每个节点使用过多标签)。相反,访问属性是第二次I/O(或缓存)访问。

是, 标签是节点的分组机制。为了更快地检索数据,我们应该使用标签,而不是节点的属性

下面是标签和属性的实现性能的一些差异

示例-如果图形有1000个节点,其中有100个节点,并且包含学生信息,那么您已将type=student设置为这些节点

现在,在搜索特定学生时,您需要执行如下查询

MATCH (n)
WHERE n.type='student'and n.student_name = 'satish'
return n
此查询将检查所有1000个节点并将结果返回给您

但如果在创建节点时应用标签,则

MATCH (n:student)
    WHERE n.student_name = 'satish'
    return n
此查询将仅与100个节点一起运行并返回结果

结论-最好对节点使用标签,而不是类型属性