在图形数据库中使用标签而不是属性的优点是什么?



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

经过一番研究,我发现我可以使用labels对节点进行分类,但是我没有发现是否有使用标签的优势。

使用属性或标签之间有任何区别?

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

这是标签和属性实施的性能的某些差异

http://graphaware.com/neo4j/2015/01/16/neo4j-graph-model-design-labels-vers-rabels-versus-index-properties.html

示例 - 如果您的图有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个节点中传播并返回结果。

结论 - 最好将标签使用到节点而不是键入属性。

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

标签是自我索引的,在所有带有特定标签的节点上获得一个迭代器都是便宜的操作。

也将标签直接与节点一起存储(除非您每个节点使用过多的标签)。访问属性是第二个I/O(或缓存)访问。

最新更新