是否有标签属性 - 是否有标签的Neo4j架构?

时间:2014-12-30 16:48:22

标签: neo4j schema cypher

如何确保标签的所有节点都具有一些共同属性?

例如,我想创建一个属性" name "对于标签的所有节点" Person",但我在编写属性名称时可能会出错(例如 namee !)

1 个答案:

答案 0 :(得分:3)

今天没有在Neo4j中构建这样的机制(在编写本文时,当前版本的Neo4j 是2.1.6)。你所描述的是某种模式(如果比较例如RDB的DDL),Neo4j基本上是无模式的。这种结构完整性是quite often handled in the application layer for NoSQL databases

现在可用于Neo4j的唯一模式操作是here

目前他们包括:

  • 独特 - 例如CREATE CONSTRAINT ON (p:Person) ASSERT p.name IS UNIQUE
  • 索引 - 在标签上创建索引,例如CREATE INDEX ON :Person(name)

来自Michael Hunger的这个答案的评论是Neo4j背后的团队成员的一部分,表明将来可以为Neo4j提供更多限制。此外,迈克尔指出以下替代方案:

  • 查看Structr,Neo4j上方的一层,除此之外还强制执行更严格的架构(查看架构文档here
  • SylvaDB,一个易于使用的Neo4j层,也有架构支持。似乎非常

除此之外,FrobberOfBits指向包含大量分析器的工具NeoProfiler,其中大多数分析器针对您的数据库运行非常简单的Cypher查询并提供汇总统计信息。有些分析器实际上会在图表中发现数据,然后生成其他将在稍后运行的分析器。例如,如果在数据中发现名为“Person”的标签,则会将标签分析器添加到运行队列中,以检查具有该标签的节点群。