sql - 关系数据库和图数据库的比较

标签 sql relational-database graph-databases

有人可以向我解释一下 MySQL 等关系数据库与 Neo4j 等图形数据库相比的优缺点吗?

在 SQL 中,您有多个表,它们具有不同的 id 链接。然后你必须加入来连接表。从新手的角度来看,为什么要将数据库设计为需要联接,而不是像图形数据库那样从一开始就将连接明确地作为边。从概念上讲,这对于新手来说毫无意义。大概有一个非常技术性但非概念性的原因?

最佳答案

这两种风格背后实际上都有概念推理。维基百科 the relational modelgraph databases对此给出了很好的概述。

主要区别在于,在图形数据库中,关系存储在单个记录级别,而在关系数据库中,结构是在更高级别定义的(表定义)。

这会产生重要的影响:

  • 关系数据库在处理大量数据时速度要快得多 的记录。在图数据库中,必须检查每条记录 在查询期间单独确定结构 数据,而这在关系数据库中是提前知道的。
  • 关系数据库使用较少的存储空间,因为它们没有 存储所有这些关系。

仅当关系存在大量变化时,将所有关系存储在个人记录级别才有意义;否则你只是一遍又一遍地重复同样的事情。这意味着图数据库非常适合不规则、复杂的结构。但在现实世界中,大多数数据库都需要规则的、相对简单的结构。这就是关系数据库占主导地位的原因。

关于sql - 关系数据库和图数据库的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13046442/

相关文章:

sql - 在不使用临时表的情况下从 SELECT 中隐藏按列排序

mysql - 在 SQL 中设计灵活的模式设计

sql - rails 方法从同一个表中获取不同类型的记录

grails - 在没有 Grails neo4j-plugin 和 GORM 的情况下在 Grails 中使用 Neo4j

java - neo4j 中的出租车共享调度

sqlite错误通过命令行导入csv

sql - 将 Nvarchar(max) 转换为 nvarchar 的最佳/最有效方法 (30)

sql - 比较两个表中的数据

inheritance - 类图转换为关系模型;继承和匹配表

groovy - "Supernodes"在泰坦