database - 图数据库是否反对关系数据库?

标签 database graph nosql relational-database non-relational-database

我是任何类型的数据库的新手。看起来你可以用图的形式表示任何关系数据库(尽管它可能是一个非常扁平的图),以及关系数据库中的任何图数据库(有足够的表)。

通过从一个条目到另一个条目的硬链接(hard link),图表可以避免在其他表中进行大量查找,因此在许多/大多数情况下,我可以看到图表的速度优势。如果您的数据自然是分层的,特别是如果它形成一棵树,我会看到图形比关系图在逻辑/推理方面的好处。我想象一个链接到其他节点的图的节点可能包含多个映射或列表......这实际上在图的节点内包含一个关系数据库。

图形数据库与关系数据库相比有什么缺点吗? (注意:我不是在寻找实现中缺少的功能之类的东西,而是理论上的利弊)

我什么时候还应该使用关系数据库?即使我在逻辑上有一个 int 到 int 的映射,我也可以在图表中完成。

最佳答案

图形数据库在大约 20 到 30 年前就被关系型技术弃用了。

主要的理论缺点是图数据库使用两个基本概念来表示信息(节点和边),而关系数据库仅使用一个(关系)。这渗透到数据操作语言中,因为基于图形的语言必须提供两组不同的运算符:一组用于节点操作,另一组用于边缘操作。关系模型只有一个就足够了。

更多的运算符意味着更多的运算符需要为 DBMS 构建器实现,更多的错误机会,而对于用户来说,这意味着需要学习更多不同的语言结构。例如,向数据库添加信息只是关系中的 INSERT,在基于图形中它可以是 STORE(节点)或 CONNECT(边)。删除信息只是 DELETE(关系),而不是 ERASE(节点)或 DISCONNECT(边)。

关于database - 图数据库是否反对关系数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19570654/

相关文章:

c# - 如何开发与多个数据库管理系统兼容的 Web 应用程序

javascript - 如何在 codeigniter 中将数据从 View 发送到 Controller

javascript - 如何使用 chartist js 在同一图表中相对拉伸(stretch)两个具有不同数量索引的系列?

nosql - 在 NoSQL(Aerospike) 中更新冗余数据/非规范化数据

python - 每次测试后如何重置 Django 测试数据库 ID?

php - 无法在 Heroku 上迁移数据库(试过 MySQL 和 PostgreSQL)

java - 我正在为以 Java/Python 为中心的组织寻找图形数据库

Python 使用 matplotlib 在 x 轴上显示特定值

cassandra - 如何对Key-Value存储中的两个数据集进行交集运算?

java - 如何返回 N1ql 查询结果作为 Couchbase 数据库的 REST API 的响应?