2015-06-24 34 views
4

我对Neo4j相当陌生,但在RDBMS设计和开发方面经验丰富。尝试了解Neo4j中的标签和属性之间的区别。我读过的东西似乎可以区分两者,事实上,我发现这些术语经常互换使用。我认为一定是有区别的,否则Neo4j的Wise男人和女人不会创造这两个...Neo4j中的标签和属性有什么区别?

感谢您的帮助!

回答

4

属性是一个键值对,它是关系或节点的一部分。

标签是您分配给一个或多个节点的名称/标签/类别。 请注意,具有类似标签的节点不一定共享同一组属性密钥。

约束和索引是根据标签定义的。 (尽管传统索引API--它们是v2之前的版本,即预标签 - 只能与属性一起使用)。

从文件系统的角度来看,常规标签查找通常比常规属性查找更快,因为标签在其自己的文件(即“标签存储”)中存储和标准化,而不是在所有相应节点上传播和重复以获得属性。

+0

标签就像您想要放置节点的标签或类别,它们还允许我们将元数据附加到节点(如索引,约束条件以及未来更多) –

+0

非常感谢您的回复,我很感谢它。自从我发布这个问题以来,我也做了一些更多的阅读,并且对差异有了更好的理解。但是我仍然对他们显而易见的冗余感到困惑。当然,我可以创建一个带有“Person”标签的节点,以及带有“Vehicle”标签的另一个节点,但创建一个名为“Type”的属性无法实现同样的效果,并为其赋予“人“在一个节点上,”车“在另一个节点上?它看起来像一个标签只是一个特殊类型的属性(键值对),你基本上有一个“无键”值。 – David

+0

此外,我的理解是,您可以为标签和属性分配索引,约束等,那么将某些内容定义为标签而不是属性的优点是什么? – David

相关问题