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

时间:2015-05-05 01:54:37

标签: graph neo4j nosql

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

以下是标签和属性

的实施性能的一些差异

http://graphaware.com/neo4j/2015/01/16/neo4j-graph-model-design-labels-versus-indexed-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个节点中传输并返回结果。

结论 - 最好在节点上使用标签,而不是输入属性。