在图形数据库中使用标签而不是属性有什么好处?
What are the advantages of using a label instead of an attribute in a graph database?
我正在使用 Neo4J 学习图形数据库,我对节点进行分类的第一种方法是在所有节点中创建属性 type
。
经过一些研究,我发现我可以使用 labels
来对节点进行分类,但我没有发现使用标签对这个任务是否有优势。
使用属性或标签有什么区别吗?
主要区别在于 属性 是键值对。标签更像是一个标签(想想在 Gmail 中为电子邮件添加标签)。
标签是自索引的,在带有特定标签的所有节点上获取迭代器是一种廉价操作。
标签也直接与节点一起存储(除非每个节点使用太多标签)。访问 属性 是第二次 I/O(或缓存)访问。
是的,
标签是节点的分组机制。为了更快地检索数据,我们应该使用标签而不是节点的 属性。
这是两个标签和 属性
的实现性能的一些差异
示例 - 如果您的图表有 1000 个节点,其中 100 个节点包含学生信息,那么您已将 type = student 设置为这些节点
现在在搜索特定学生时,您需要执行这样的查询
MATCH (n)
WHERE n.type='student'and n.student_name = 'satish'
return n
此查询将检查所有 1000 个节点并向您提供 return 结果。
但是如果您在创建节点时应用标签,那么
MATCH (n:student)
WHERE n.student_name = 'satish'
return n
此查询将仅使用 100 个节点和 return 结果。
结论-节点使用标签比打字更好属性.
我正在使用 Neo4J 学习图形数据库,我对节点进行分类的第一种方法是在所有节点中创建属性 type
。
经过一些研究,我发现我可以使用 labels
来对节点进行分类,但我没有发现使用标签对这个任务是否有优势。
使用属性或标签有什么区别吗?
主要区别在于 属性 是键值对。标签更像是一个标签(想想在 Gmail 中为电子邮件添加标签)。
标签是自索引的,在带有特定标签的所有节点上获取迭代器是一种廉价操作。
标签也直接与节点一起存储(除非每个节点使用太多标签)。访问 属性 是第二次 I/O(或缓存)访问。
是的, 标签是节点的分组机制。为了更快地检索数据,我们应该使用标签而不是节点的 属性。
这是两个标签和 属性
的实现性能的一些差异示例 - 如果您的图表有 1000 个节点,其中 100 个节点包含学生信息,那么您已将 type = student 设置为这些节点
现在在搜索特定学生时,您需要执行这样的查询
MATCH (n)
WHERE n.type='student'and n.student_name = 'satish'
return n
此查询将检查所有 1000 个节点并向您提供 return 结果。
但是如果您在创建节点时应用标签,那么
MATCH (n:student)
WHERE n.student_name = 'satish'
return n
此查询将仅使用 100 个节点和 return 结果。
结论-节点使用标签比打字更好属性.