【发布时间】:2023-11-03 14:31:01
【问题描述】:
我正在为我正在构建的一个新站点构建一个图形数据库,并遇到了 neo4j。
虽然这是一个可行的选择,但我不喜欢动态创建标签和关系的想法。相反,我只想事先定义标签和关系,这样我的数据库就可以更加稳定。
很像 RDBMS,我们首先定义表和属性,但我想先定义标签和关系及其属性。
【问题讨论】:
-
有什么好处? oO RDBMS 不是无模式的。 Neo4j 是并且它是它的强项之一。见*.com/a/17881003/985949
-
我猜是在数据库级别开发和维护,它会防止我或其他开发人员错误地添加新标签。例如,开发人员在将节点添加到数据库时可能会输入错误的标签。当数据库中已经有n个带有标签“Person”的节点时,他们可能会添加标签“Persons”的节点。这样,如果开发人员错误地尝试添加“Persons”类型的节点,则会显示错误消息“尚未定义该标签”
-
就个人而言,我使用 Spring-Data-Neo4j 让标签集自动设置。您无法使用无模式数据库预先完成您期望的操作。如果开发人员能够在标签上犯错误......我无法想象他在价值观方面会犯什么样的错误......模式。你无法避免它。
-
选择定义模式的一个重要好处在于底层图形数据库能够根据模式本身的知识优化查询。这种优化可以带来可观的性能提升。
标签: database neo4j graph-databases orientdb titan